Skip to content

API Reference

Itervox exposes a REST + Server-Sent Events (SSE) API on the dashboard port (default :8090). The web dashboard, TUI, and any custom integrations talk to the same endpoints.

http://localhost:8090/api/v1

The host and port are configured in WORKFLOW.md under server.host and server.port.

When the ITERVOX_API_TOKEN environment variable is set, all /api/v1/* routes (except /health) require a bearer token:

Terminal window
curl -H "Authorization: Bearer $ITERVOX_API_TOKEN" \
http://localhost:8090/api/v1/state

Without the env var, the API is open. Strongly recommended when binding the server to a non-loopback address (server.host: 0.0.0.0).


Liveness probe for load balancers and container orchestrators. Always returns 200 with no body. Bypasses bearer-token auth.

Returns the current orchestrator snapshot as JSON. One-shot equivalent of the SSE stream.

Response: StateSnapshot — running sessions, history, retry queue, paused issues, profiles, models, rate limits, configuration.

Terminal window
curl http://localhost:8090/api/v1/state | jq

SSE stream of StateSnapshot events. Each data: frame is a full JSON snapshot. The web dashboard uses this for real-time updates with a 25s keep-alive.

Terminal window
curl -N http://localhost:8090/api/v1/events

Triggers an immediate orchestrator poll cycle. Useful after manual issue state changes when you don’t want to wait for the next scheduled tick.


Returns the full list of tracker issues enriched with orchestrator state (running/retrying/paused/idle).

Returns details for a single issue, including title, description, comments, labels, priority, and orchestrator state.

POST /issues/{identifier}/cancel (or DELETE /issues/{identifier})

Section titled “POST /issues/{identifier}/cancel (or DELETE /issues/{identifier})”

Pauses a running agent. The agent process is killed, the issue is marked paused, and it will not be re-dispatched until resumed. Returns 200 on success, 404 if the issue is not running.

Resumes a paused issue. The issue becomes eligible for dispatch on the next tick.

Hard-stops a running or paused agent without pausing it. Releases the claim and moves the issue back to the active state, allowing immediate re-dispatch.

Re-dispatches an issue, bypassing the open-PR auto-pause guard. Use this when you’ve made changes to an existing PR and want the agent to re-analyze it.

Dispatches a reviewer agent for the issue. The reviewer runs the configured reviewer profile against the open PR for that issue.

Sets or clears the per-issue agent profile override. Body: {"profile": "frontend"} to set, {"profile": ""} to clear.

Sets the per-issue backend override (claude or codex). Body: {"backend": "claude"}.

Replies to an issue waiting in input-required state. Body: {"message": "..."}. The agent session resumes with the provided message injected into the prompt.

Dismisses an input-required issue without providing input. Moves it to paused state.


Returns the full per-issue log buffer as a JSON array of structured IssueLogEntry objects.

SSE stream of new log entries for an issue. Each event: log frame carries one parsed IssueLogEntry. The dashboard uses this for live log following.

Terminal window
curl -N http://localhost:8090/api/v1/issues/PROJ-42/log-stream

Returns full session logs written by Claude Code to CLAUDE_CODE_LOG_DIR. Covers all subagents spawned during the session, not just the orchestrator-buffered top-level events.

Clears the in-memory log buffer for an issue.

Clears all subagent session logs for an issue.

DELETE /issues/{identifier}/sublogs/{sessionId}

Section titled “DELETE /issues/{identifier}/sublogs/{sessionId}”

Clears a specific subagent session log.

Returns the list of issue identifiers that currently have log data on the server.

Tails the global rotating log file (the daemon log, not per-issue logs).

Clears all in-memory log buffers across all issues.


All settings endpoints persist changes to WORKFLOW.md so they survive restarts.

Scale the maximum concurrent agent count. Body: {"workers": 5} (absolute) or {"delta": 1} (relative).

Switch agent collaboration mode. Body: {"mode": "solo"}, {"mode": "subagents"}, or {"mode": "teams"}.

Update the active, terminal, completion, and backlog state lists. Body matches the tracker block in WORKFLOW.md.

Add a remote worker host. Body: {"host": "ssh.example.com", "description": "..."}.

Remove an SSH worker host.

Change SSH host dispatch strategy. Body: {"strategy": "round-robin"} or {"strategy": "least-loaded"}.

Toggle automatic workspace cleanup on completion. Body: {"enabled": true}.

Toggle inline input mode (input-required prompts in the dashboard vs tracker comments). Body: {"enabled": true}.

Returns the list of available models per backend (discovered at init time, stored in WORKFLOW.md).


Returns the full map of named agent profiles from WORKFLOW.md.

Create or update a named agent profile. Body: {"command": "...", "prompt": "...", "backend": "claude"}.

Remove a profile.

Returns the reviewer profile configuration and auto_review flag.

Update reviewer config. Body: {"profile": "...", "auto_review": true}.


These endpoints return 501 Not Implemented for the GitHub tracker.

Returns the list of accessible projects from the tracker.

Returns the active project filter (array of project slugs, or null for default, or [] for all).

Sets the active project filter. Body: {"slugs": ["alpha", "beta"]}.


Removes all worktrees managed by Itervox. Use with caution — agents currently running will fail their next git operation.


data: {"running":[...],"history":[...],"retrying":[...],"paused":[...],...}

Each frame is a complete StateSnapshot. Keep-alive ping every 25 seconds.

event: log
data: {"event":"action","tool":"bash","message":"grep -r ...","sessionId":"..."}

event is one of: text, action, subagent, pr, turn, error, warn, info.


VariablePurpose
ITERVOX_API_TOKENBearer token for API authentication. When set, all routes except /health require Authorization: Bearer <token>.
LINEAR_API_KEYLinear API token (referenced from WORKFLOW.md as $LINEAR_API_KEY).
GITHUB_TOKENGitHub Personal Access Token (referenced as $GITHUB_TOKEN).
ITERVOX_DRY_RUNSet to 1 to run the orchestrator without dispatching actual agent workers.

Note: ITERVOX_* env var names are legacy from the previous project name and remain supported for backwards compatibility. They will be aliased to ITERVOX_* in a future release.