Automated Red Teaming Engine with Multi-agent Intelligent Supervision
ARTEMIS is an autonomous agent created by the Stanford Trinity project to automate vulnerability discovery.
Install uv if you haven't already:
curl -LsSf https://astral.sh/uv/install.sh | sh
Install the latest version of Rust (required for building):
# Remove old Rust if installed via apt
sudo apt remove rustc cargo
sudo apt install libssl-dev
# Install rustup (the official Rust toolchain installer)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Restart shell or source the environment
source ~/.cargo/env
# Install latest stable Rust
rustup install stable
rustup default stable
First, we have to build the codex binary:
cargo build --release --manifest-path codex-rs/Cargo.toml
Now we can setup the Python environment:
uv sync
source .venv/bin/activate
Copy the example configuration and add your API keys:
cp .env.example .env
# Edit .env with your API keys
Required environment variables:
- OPENROUTER_API_KEY or OPENAI_API_KEY - For the supervisor and LLM calls
- SUBAGENT_MODEL - Model to use for spawned Codex instances (e.g., anthropic/claude-sonnet-4)
Try a simple CTF challenge to verify everything works:
python -m supervisor.supervisor \
--config-file configs/tests/ctf_easy.yaml \
--benchmark-mode \
--duration 10 \
--skip-todos
This runs a 10-minute test on an easy CTF challenge in benchmark mode (no triage process).
For detailed configuration options and usage, see supervisor-usage.md.
Build the Docker image:
docker build -t artemis .
Same as above - copy the example configuration and add your API keys:
cp .env.example .env
# Edit .env with your API keys
Required environment variables:
- OPENROUTER_API_KEY or OPENAI_API_KEY - For the supervisor and LLM calls
- SUBAGENT_MODEL - Model to use for spawned Codex instances (e.g., anthropic/claude-sonnet-4)
If using OpenRouter, you'll need to configure the codex binary. Create ~/.codex/config.toml:
mkdir -p ~/.codex
cat > ~/.codex/config.toml <<'EOF'
model_provider = "openrouter"
[model_providers.openrouter]
name = "OpenRouter"
base_url = "https://openrouter.ai/api/v1"
env_key = "OPENROUTER_API_KEY"
[sandbox]
mode = "workspace-write"
network_access = true
EOF
Use the provided run_docker.sh script:
# Run with OpenRouter (mounts ~/.codex/config.toml)
./run_docker.sh openrouter
# Run with OpenAI only (no config mount needed)
./run_docker.sh openai
The script will:
- Mount your ~/.codex/config.toml (if using OpenRouter)
- Mount the ./logs directory for persistent logs
- Use your .env file for API keys
- Run a 10-minute test on an easy CTF challenge
Manual Docker Run:
If you prefer to run docker manually:
# With OpenRouter
docker run -it \
--env-file .env \
-v $HOME/.codex/config.toml:/root/.codex/config.toml:ro \
-v $(pwd)/logs:/app/trinity/ARTEMIS/logs \
artemis \
python -m supervisor.supervisor \
--config-file configs/tests/ctf_easy.yaml \
--benchmark-mode \
--duration 10 \
--skip-todos
# With OpenAI only
docker run -it \
--env-file .env \
-v $(pwd)/logs:/app/trinity/ARTEMIS/logs \
artemis \
python -m supervisor.supervisor \
--config-file configs/tests/ctf_easy.yaml \
--benchmark-mode \
--duration 10 \
--skip-todos
This project uses OpenAI Codex as a base, forked from commit c221eab.
This repository is licensed under the Apache-2.0 License.
$ claude mcp add ARTEMIS \
-- python -m otcore.mcp_server <graph>