Configuration
Every setting is configured at instance creation via CLI flags, or edited directly in the instance's config.yaml file at ~/.system0/instances/<name>/config.yaml.
Brain Configuration
The brain is the LLM backend that powers analysis.
Claude Code (Default)
brain:
type: claude-code
binary: claude # Path to claude CLI
model: claude-opus-4-6 # Model name
budget_usd: "2.00" # Per-call budget
effort: high # high | medium | lowGeneric CLI
Use any LLM with a CLI interface:
brain:
type: generic-cli
binary: /path/to/your/llm-cli
args_before: # Arguments before prompt
- "--model"
- "gpt-4"
args_after: [] # Arguments after prompt
prompt_via_stdin: true # Send prompt via stdin
has_execute: false # Can the CLI modify files?Budget Configuration
Four independent spending ceilings:
budget:
per_cycle_usd: 10.0 # Max per single pass
per_action_usd: 5.0 # Max per single fix action
session_usd: 50.0 # Max per daemon session
instance_usd: 500.0 # Lifetime capThe --budget CLI flag sets session_usd. Edit config.yaml directly for the other three.
Triage Configuration
Controls which findings get fixed and how:
triage:
severity_threshold: 0.6 # Min severity to plan a fix
risk_threshold: 0.7 # Max risk to auto-execute
max_actions_per_cycle: 3 # Max fixes per pass
max_refinements: 2 # Max times to refine a risky plan
min_passes: 2 # Maturity gate: passes before fix planning
min_dimensions: 3 # Maturity gate: dimensions before auto-execOrchestrator Configuration
The orchestrator automatically spawns focused child instances when it detects complex, multi-faceted issues:
orchestrator:
enabled: true
max_children: 3 # Max child instances per cycle
max_depth: 2 # Max nesting depth
child_cycles: 3 # Passes for each child
child_budget_usd: 20.0 # Budget per child
spawn_severity_threshold: 0.7 # Min severity to spawnDisable with --no-orchestrator at init time or set enabled: false in config.
Notification Configuration
Get notified of findings via files, logs, or webhooks:
notifiers:
- type: file
path: /path/to/reports/
min_severity: 0.5
- type: log
path: /path/to/findings.jsonl
min_severity: 0.3
- type: webhook
url: https://hooks.slack.com/your-webhook
headers:
Content-Type: application/json
min_severity: 0.7The webhook URL supports ${ENV_VAR} expansion for secrets.
Instance Storage
Each instance stores its data at ~/.system0/instances/<name>/:
| File | Purpose |
|---|---|
config.yaml | All configuration (mode, brain, budget, triage, orchestrator) |
state.json | Runtime state (cycle count, status, spending) |
goal.yaml | Current analysis goal |
ledger.jsonl | Append-only event log |
questions/ | Analysis dimensions (JSON files) |
queue.json | Actions pending approval (supervised mode) |
checkpoints/ | Temporal verification checkpoints |
daemon.pid | PID file (daemon mode) |
daemon.log | Daemon output log |