Automation
Anode does not need the TUI. Run it from scripts, CI jobs, JSON stream consumers, or the daemon.
One Shot
Section titled “One Shot”anode -x "run the focused tests and summarize failures"Useful flags:
| Flag | Use |
|---|---|
--profile <name> | Pick craft, quick, study, review, oracle, find, aggman, a custom profile, or an alias: smart -> craft, rush -> quick, deep -> study, search -> find. |
--model provider/model | Override the selected model for this run. |
--max-turns <n> | Stop after a fixed number of model/tool turns. |
| `—approval ask | auto |
--allow-tool <name> | Repeat to limit the run to specific tools. |
--run-label <label> | Add a label to the run. |
--stream-json | Emit newline-delimited run events. |
--stream-json-input | Read execute-mode JSON user messages from stdin. Requires --stream-json. |
In CI, prefer explicit tool and permission limits:
anode -x \ --profile review \ --allow-tool read \ --allow-tool finder \ --allow-tool web_search \ --stream-json \ "review the current diff for risky changes"Stream Events
Section titled “Stream Events”--stream-json prints one event object per line. Consumers should parse line by
line and treat unknown event types as forward-compatible data.
anode -x "summarize this repository" --stream-json | jq -c 'select(.type=="result.final")'For multi-turn automation, use JSON input:
anode -x --stream-json --stream-json-inputSend one JSON object per line:
{"type":"user","message":{"role":"user","content":"find the CLI entrypoint"}}Use "steer":true to inject guidance at the next safe interruption point.
Daemon Runs
Section titled “Daemon Runs”Start the daemon:
anode daemonStart work in the background:
anode runs start "investigate flaky tests"Watch it:
anode attach <run-id>List and cancel runs:
anode runs listanode runs cancel <run-id>Use --daemon <addr> when the daemon is not using the default socket.
Review Automation
Section titled “Review Automation”anode review --base main --stream-jsonanode review --base main --checks --stream-json--checks loads project check files from .agents/checks/*.md.
Keep going: