Getting Started¶
Prerequisites¶
- Docker + Docker Compose
- Rust toolchain (stable)
- An LLM API key —
ANTHROPIC_API_KEYby default. OpenAI / OpenRouter, or AWS Bedrock via an OpenAI-compatible gateway, are also supported (see.env.example).
Install¶
git clone https://github.com/ThirdKeyAI/symbi-codered && cd symbi-codered
cp .env.example .env # set ANTHROPIC_API_KEY (and SYMBIONT_*)
# Build the CLI:
cargo build -j2 -p symbi-codered-cli --release
The core depends on the Symbiont runtime (symbi-runtime), pulled from crates.io — no extra setup required.
Bring up the scanner sidecars¶
Each language scanner and sandbox runs as a Docker Compose service. They build on first up:
CODERED_TARGET=/path/to/target/repo docker compose up -d \
python-scanner rust-scanner typescript-scanner go-scanner java-scanner php-scanner \
python-sandbox rust-sandbox typescript-sandbox go-sandbox php-sandbox
Each sidecar is optional. If rust-scanner isn't up, the rust jobs bump scanner_errors and the rest of the pipeline continues — useful for fast iteration on a single-language target:
docker compose up -d python-scanner python-sandbox
codered hunt --engagement <eid> # Rust/TS/Go jobs gracefully error, Python flow completes
Run the pipeline¶
# 1. Map the repo (capture the engagement_id printed to stdout):
./target/release/codered carto /path/to/target/repo
# 2. Sign a threat model (sources, sinks, scope):
./target/release/codered specifier --engagement <eid> --target /path/to/target/repo
# 3. Run the hunt (scanners → taint → LLM agents → poc → advocate → reflector):
./target/release/codered hunt --engagement <eid>
# 4. Render outputs:
./target/release/codered report --engagement <eid>
Outputs land in reports/<eid>/:
A fully wired audit on a Rust + TypeScript repo takes ~5–15 minutes wall-clock and ~\(1–\)10 in tokens, depending on finding volume.
Independent devil's advocate¶
By default devils_advocate mirrors the generation model. To break the confirmation-bias loop, point the rebuttal pass at an independent model with its own fallback chain:
codered hunt --engagement <eid> \
--advocate-provider openrouter \
--advocate-model openai/gpt-4.1 \
--advocate-fallback minimax/minimax-m2
A startup warning fires if the advocate ends up mirroring the generation tier.
Next steps¶
- Architecture — how the pieces fit together
- Pipeline Stages — what each stage produces
- CLI Reference — every subcommand