Skip to content

Daemon

The daemon is Anode as a long-running process. Start work in the background, list it, attach to it, or stream its events over HTTP.

Default Unix socket:

anode daemon

Default socket path:

~/.config/anode/daemon.sock

TCP address:

anode daemon --addr 127.0.0.1:7433

Unix socket path:

anode daemon --addr /tmp/anode.sock
anode runs list
anode runs list --limit 10
anode runs start "investigate flaky tests"
anode runs start --profile study --model openai/gpt-5.5 --max-turns 10 --approval auto "summarize failures"
anode attach <run-id>
anode attach --stream-json <run-id>
anode runs cancel <run-id>

Use a non-default daemon:

anode runs list --daemon 127.0.0.1:7433
anode attach <run-id> --daemon 127.0.0.1:7433

runs start sends prompt, profile, model, max_turns, approval_mode, and run_label to the daemon.

Use --limit <n> to return at most n runs; 0 means all runs.

Endpoints:

MethodPathUse
GET/healthHealth check and active run count.
POST/runsStart a run.
GET/runsList runs, newest first.
GET/runs/{id}Get one run summary.
GET/runs/{id}/eventsStream run events with SSE.
DELETE/runs/{id}Cancel a run.
curl -sS -X POST http://127.0.0.1:7433/runs \
-H "Content-Type: application/json" \
-d '{
"prompt": "summarize this repository",
"profile": "craft",
"model": "anthropic/claude-sonnet-4-6",
"max_turns": 20,
"approval_mode": "auto",
"run_label": "summary"
}'

Response:

{"run_id":"R-1760000000000000000_1"}

prompt is required. profile defaults to craft. approval_mode can be empty, ask, auto, or unrestricted; yolo is an alias for unrestricted.

curl -sS http://127.0.0.1:7433/runs

Each summary includes id, status, profile, label, prompt, started_at, optional ended_at, and final result fields when available.

curl -N http://127.0.0.1:7433/runs/<run-id>/events

The endpoint first replays buffered events, then streams new events while the run is active. Each SSE message has a JSON RunEvent in its data: line.

curl -sS -X DELETE http://127.0.0.1:7433/runs/<run-id>

The response is:

{"status":"canceled"}
  • Runs live in daemon memory. Restarting the daemon loses the daemon run list.
  • The run itself still uses normal Anode config, providers, permissions, tools, hooks, plugins, MCP, and session storage.
  • attach works for running and completed runs as long as the daemon still has the run in memory.
  • The daemon does not expose a separate review endpoint. Use anode review for review mode, or start a normal daemon run with a review-style prompt/profile.

Keep going: