Artemis is a free, open source threat detection & response project written in Python and released under BSD-3-Clause. It has 1,230 GitHub stars, 145 forks and 44 open issues, and was last pushed 22 hours ago. On this registry it ranks #28 of 29 tracked projects in Threat Detection & Response, with 5 head-to-head comparisons available.

What is Artemis?

Artemis is a modular, Python-based vulnerability scanner with automatic report generation, built by CERT PL to check website security and turn findings into ready-to-send messages for the scanned organisations.

What it is

Artemis is a modular vulnerability scanner in the Security & Privacy / Threat Detection & Response category, released under the BSD-3-Clause licence and maintained by CERT PL. It checks various aspects of website security and is the tool that powers CERT PL's own scanning activities. The core repository ships only modules whose licences are BSD-compatible; additional modules are published separately in the Artemis-modules-extra repository. The repository topics place it in the pentesting, security-scanner, vulnerability-detection and web-scanner space.

The problem it solves is the gap between a finding and a notification. A scanner that only produces raw output still leaves an analyst to triage each result and write a separate message for every affected organisation, which does not scale to a national constituency. Artemis closes that gap by building easy-to-read messages ready to be sent to the scanned organizations. The README shows the shape of the output: a report can state that the following addresses contain version control system data, listing https://subdomain1.example.com:443/.git/, or flag an outdated CMS such as https://subdomain2.example.com:443 - Joomla 2.5.4. CERT PL credits this automatic preparation with enabling notification of hundreds of thousands of vulnerabilities. What Artemis replaces is the manual scan-and-write-up loop.

Key capabilities

  • Modular scanning of website security, with BSD-compatible modules in the core repository and the remainder in Artemis-modules-extra.
  • Automatic report generation producing messages ready to be sent to scanned organisations, documented on the report generation page of the documentation.
  • Detection of exposed version control system data such as a reachable .git/ directory, which the report text notes may let an attacker learn the inner workings of a system or gain unauthorised access if passwords or API keys are present.
  • Detection of outdated CMS installations, for example Joomla 2.5.4, with report text recommending shutdown of unused sites or regular Joomla core and plugin updates.
  • A web interface, shown in the repository screenshots, that in development mode reflects code modifications without reloading the entire container.
  • Docker-based operation and test tooling, with tests run through ./scripts/test and a docker-compose.test.yaml service definition.
  • Configuration through an .env file copied from env.example, including the CUSTOM_USER_AGENT setting.

Who uses it and how

  • CERT PL uses Artemis to power its scanning activities and to notify entities in its constituency.
  • CSIRT and incident response teams, an audience the project addressed at the 71st TF-CSIRT Meeting in Copenhagen and the 69th TF-CSIRT Meeting in Bucharest.
  • Security practitioners working in pentesting and web scanning, as reflected in the repository topics.
  • Conference audiences at BlackHat USA 2024 in Las Vegas and BlackHat Europe 2025 in London.
  • Developers extending the scanner, who run ./scripts/start --mode=development against a locally built image; development was supported by Google Summer of Code 2024 and 2025.

Getting started

The README points to the Quick Start documentation, and to start a locally modified version the command is ./scripts/start --mode=development, which copies env.example to .env if it does not exist. In that mode the Artemis image is built locally from the code being developed rather than downloaded from Docker Hub.

How it compares

No paid products are named as being replaced by Artemis, and no comparable tools are named alongside it. It stands alone in this registry.

When to use it — and when not to

A self-hoster takes on a Docker-based deployment and maintains its own .env configuration, including values such as CUSTOM_USER_AGENT, and is expected to run tests through ./scripts/test rather than invoking python -m unittest directly. The README describes Artemis as experimental software, under active development, to be used at your own risk, and it is sparse: the current feature list and full configuration reference live in external documentation. Teams that want a frozen, self-contained release should look elsewhere.

project readme (upstream, from github) — read inline

Artemis is a modular vulnerability scanner. It's the tool that powers CERT PL scanning activities by checking various aspects of website security and building easy-to-read messages ready to be sent to the scanned organizations.

Quick Start 🔨 | Docs 📚

If you want to use additional modules that weren't included here due to non-BSD-compatible licenses, browse to the Artemis-modules-extra repository.

If you want to modify/develop Artemis, read Development first.

Artemis is experimental software, under active development - use at your own risk.

To chat about Artemis, join the Discord server!

Cooperation and conferences

Artemis was presented at BlackHat USA 2024 in Las Vegas and BlackHat Europe 2025 in London. For more information about Artemis at BlackHat click here and here.


The project was also presented at the 71st TF-CSIRT Meeting in Copenhagen, 69th TF-CSIRT Meeting in Bucharest and the CONFidence conference, among others.

Cooperation

Google Summer of Code

Artemis development was supported by Google Summer of Code 2024 and 2025.

Features

For an up-to-date list of features, please refer to the documentation. The most important one is the possibility to easily export reports such as:

The following addresses contain version control system data:

Making a code repository public may allow an attacker to learn the inner workings of a system, and if it contains passwords or API keys - also gain unauthorized access. Such data shouldn't be publicly available.

The following addresses contain old Joomla versions:

If a site is no longer used, we recommend shutting it down to eliminate the risk of exploitation of known vulnerabilities in older Joomla versions. Otherwise, we recommend regular Joomla core and plugin updates.

The possibility to automatically prepare such reports enabled us to notify entities in our constituency about hundreds of thousands of vulnerabilities.

Screenshots

Artemis - scan

Development

To start a locally modified version of Artemis, run:

 ./scripts/start --mode=development

This script automatically copies the example environment file (env.example) to .env if it doesn't exist. You can then configure the settings in the .env file according to your needs. This includes customizing the user-agent by setting the CUSTOM_USER_AGENT variable, as well as other relevant parameters. For a complete list of configuration variables and their descriptions, please refer to the Configuration section in the documentation.

The Artemis image is then built locally (from the code you are developing) not downloaded from Docker Hub. For web, you will also be able to see the results of code modifications on the page without reloading the entire container.

Tests

To run the tests, use:

./scripts/test

[!WARNING] Avoid using python -m unittest directly as the command: in docker-compose.test.yaml. When Python runs as PID 1, subprocesses, especially Go binaries like Nuclei, suffer from slow or degraded I/O because PID 1 handles signals and stdout/stderr differently. Use unittest-parallel instead, since its worker processes avoid the PID 1 issue.

Code formatting

Artemis uses pre-commit to run linters and format the code. pre-commit is executed on CI to verify that the code is formatted properly.

To run it locally, use:

pre-commit run --all-files

To set up pre-commit so that it runs before each commit, use:

pre-commit install

Modifying dependencies

We use pip-tools to manage dependencies. To add or update a dependency:

  1. Modify requirements.in (or docs/requirements.in for documentation dependencies),
  2. Run ./scripts/compile-requirements to generate the frozen requirements.txt file(s),
  3. Commit both the .in and .txt files.

Building the docs

To build the documentation, use:

cd docs
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
make html

How do I write my own module?

Please refer to the documentation.

Contributing

Contributions are welcome! We will appreciate both ideas for new Artemis modules (added as GitHub issues) as well as pull requests with new modules or code improvements.

However obvious it may seem, we kindly remind you that by contributing to Artemis, you agree that the BSD 3-Clause License shall apply to your input automatically, without the need for any additional declarations to be made.

Development

Before opening PR please make sure to install pre-commit:

  • pre-commit install

And run it against your changes.

Contributors

Huge thanks to the following people that contributed to Artemis development, especially the KN Cyber science club of Warsaw University of Technology that initiated the project!

Frequently asked questions

Is Artemis free to use?

Artemis is open source under the BSD-3-Clause licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Artemis do?

A modular vulnerability scanner with automatic report generation capabilities.

What is Artemis written in?

Artemis is primarily written in Python. Its source is publicly available at https://github.com/CERT-Polska/Artemis, and it has 1,230 GitHub stars.