Configuration reference
{ "models": { "planner": "opus", "worker": "sonnet", "validator": "opus", "orchestrator": "haiku", "crosscheck": "opus" }, "promptOverrides": { "<role>": "inline string OR ./relative-path.md OR /absolute/path.md" }, "timeouts": { "<role>": 600 }, "snapshotRetention": 50, "logRetention": 500, "branchIsolation": { "enabled": false, "baseBranch": "main", "onPass": "merge", "useWorktrees": false }, "autoScreenshot": { "enabled": false, "url": "..." }, "parallelWorkers": { "max": 1, "mode": "lane" }, "archiveOnDone": false, "planReviewer": { "enabled": true }, "debugger": { "enabled": true, "threshold": 3 }, "crosscheck": { "enabled": false }, "uiQa": { "enabled": false, "url": "..." }, "wipCheckpoint": { "enabled": false, "intervalSeconds": 300 }, "product": { "enabled": false, "mode": "propose", "triggerOnNearDone": true, "triggerOnDone": false, "nearDoneThreshold": 0.8, "replanOnAccept": false }, "checkpoints": { "enabled": false, "types": [ { "name": "architecture-locked", "description": "...", "triggerOn": "post-planner" } ] }, "smokeTest": { "enabled": false, "onDone": true, "onFeaturePass": false, "urls": [ { "url": "http://localhost:5173/", "expectStatus": 200 } ], "startupCmd": null, "startupWaitSeconds": 30 }}Field-by-field
Section titled “Field-by-field”models.<role>
Section titled “models.<role>”Per-role model override. Values: opus, sonnet, haiku. Skipped if $CLAUDE already contains --model.
promptOverrides.<role>
Section titled “promptOverrides.<role>”Appended to the role’s standard prompt as a “Droid specialization” section. Supports inline strings or ./ / / paths.
timeouts.<role>
Section titled “timeouts.<role>”Per-role timeout in seconds. Uses GNU timeout. Agent gets SIGTERM (rc=124) after the duration; main loop continues.
snapshotRetention, logRetention
Section titled “snapshotRetention, logRetention”Pruning thresholds.
branchIsolation
Section titled “branchIsolation”enabled: per-feature branches offbaseBranch.onPass:merge,pr, orkeep.useWorktrees: each lane gets its own filesystem dir (Composio-inspired).
parallelWorkers
Section titled “parallelWorkers”max: concurrent workers.>1requiresbranchIsolation.enabled.mode:"lane"(different features in parallel) or"competition"(Conductor-inspired same-feature race).
planReviewer.enabled
Section titled “planReviewer.enabled”Plan-reviewer fires after planner. Reject → harness exits 7.
debugger
Section titled “debugger”enabled: debugger fires whenattempts >= thresholdfor any failing feature.threshold: default 3.
crosscheck.enabled
Section titled “crosscheck.enabled”Different-model re-validation after validator passes. Configure models.crosscheck to set the alternate model.
enabled: ui-qa role fires for features withVAL-UI-*claims.url: target for verdict.
wipCheckpoint
Section titled “wipCheckpoint”Background WIP commits during long worker runs. Requires branchIsolation.
product
Section titled “product”enabled: product role can fire.mode:"propose"writes proposals;"auto-apply"appends accepted bullets to SPEC.md.triggerOnNearDone: fires once whenpassed/total >= nearDoneThreshold(default 0.8).triggerOnDone: fires before exiting on DONE (lets mission self-extend).replanOnAccept: re-plan after a proposal is accepted.
checkpoints
Section titled “checkpoints”enabled: orchestrator may emitCHECKPOINT <name>and run.sh may auto-fire types withtriggerOn: post-planner.types: array of{ name, description, triggerOn? }.
smokeTest
Section titled “smokeTest”enabled: turn on the gate.onDone: smoke test gates DONE. On failure: reopens last-passed feature, re-enters loop.onFeaturePass: smoke test gates every feature pass. On failure: reverts to failing.urls: array of{ url, expectStatus, expectText? }.startupCmd: optional command to start service if first URL isn’t responding.startupWaitSeconds: wait timeout for startup.