ITER//VOX
AGENT ORCHESTRATOR
Open Source · ★ GitHub · ♥ Sponsor

Your codebase's journey,
narrated by agents

Orchestrate AI agents across issues, profiles, and machines. Full visibility from dispatch to PR.

$ brew tap vnovick/tap && brew install itervox

Bring your own agent

Claude Code
Anthropic
Active
Codex
OpenAI
Active
OpenCode
 
Coming Soon
Gemini CLI
Google
Coming Soon

More agents coming. Itervox is runner-agnostic — any CLI that reads stdin and writes stdout works.

You already have the agents. Now orchestrate them.

Coding agents are powerful — but running them manually, one issue at a time, doesn't scale. Itervox turns them into a fleet.

Manual Claude Code / Codex
  1. 1. Open terminal, pick an issue manual
  2. 2. Create branch, cd into repo manual
  3. 3. Run claude with a prompt manual
  4. 4. Wait for agent to finish blocked
  5. 5. Review output, create PR manual
  6. 6. Repeat for next issue serial
One issue at a time. No visibility. No parallelism.
With Itervox
  1. 1. Issues appear in tracker auto
  2. 2. Agents spawn in parallel per issue auto
  3. 3. Each agent gets isolated worktree auto
  4. 4. PRs submitted, issues transitioned auto
  5. 5. Review PRs + merge human
All issues in parallel. Full logs. Multi-machine. Auto-retry.

Built for autonomous agents at scale

Concurrent Agents

Run up to N agents in parallel, with per-state concurrency limits. Scale from 1 to 50+ without config changes.

Retry Queue

Failed agents auto-retry with exponential backoff (10s, 20s, 40s... capped at 5min). Configurable max retries per issue.

Pause & Resume

Pause any running agent from the dashboard or TUI to free up a slot. Resume when ready — the agent picks up the same session via --resume, continuing the conversation from exactly where it left off.

Input Required

Agents can request human input. The question is posted to your tracker as a comment. Reply from Linear/GitHub or the dashboard to resume.

Auto-Clear Workspace

Automatically delete cloned workspaces after successful completion. Keeps disk clean while preserving all logs and history.

Project Filters

Filter issues by Linear project when working across multiple repos. Configure which projects agents should handle in Settings.

Stall Detection

If an agent produces no output within the stall timeout (default 5 min), the worker is killed and the issue is retried automatically.

Auto-Pause on Open PR

When an existing open PR is detected for an issue, the agent auto-pauses to prevent duplicate work. Force re-analysis from the dashboard.

Per-Issue Overrides

Change the agent profile or backend for a specific issue at runtime via the dashboard API. No config restart needed.

API Authentication

Set ITERVOX_API_TOKEN to enable Bearer token auth on all API routes. Essential for production deployments.

Full autonomy mode

Itervox runs agents with --dangerously-skip-permissions (Claude Code) and --dangerously-bypass-approvals-and-sandbox (Codex) so they can work without human approval prompts. Agents have full file system and shell access within their worktree.

Use git worktree isolation to contain changes per issue. For production environments, deploy agents on dedicated SSH hosts. Coming soon: kernel-level sandboxing — sandbox-exec on macOS and Landlock LSM on Linux. No root, no Docker, no external deps.

Two commands. That is it.

itervox init
$ itervox init --tracker linear --runner claude itervox init: scanning . git remote : git@github.com:acme/backend.git branch : main runner : claude CLAUDE.md : found — prompt will reference it AGENTS.md : found — prompt will reference it stack : Go (go test -race ./..., golangci-lint run) stack : React 19 + TypeScript (pnpm test, pnpm run lint) itervox init: wrote WORKFLOW.md itervox init: wrote .itervox/.env

Analyze your repo in seconds

One command scans your repository and generates a complete configuration. No boilerplate. No guessing.

  • Detects Git remotes and default branch
  • Identifies tech stacks: Go, Node.js, Rust, Python, Elixir, Ruby
  • Finds test and lint commands
  • Checks for CLAUDE.md and AGENTS.md
  • Generates WORKFLOW.md with YAML config + Liquid prompt template

Then just run it

Itervox polls your tracker, claims new issues, spawns agents in isolated Git worktrees, and submits PRs when the work is done. Every step is logged and visible in the dashboard or terminal UI.

  • Polls Linear or GitHub Issues on a configurable interval
  • Spawns one agent per issue in isolated worktrees
  • Retries on failure with exponential backoff
  • Transitions issue state on success or failure
  • Live dashboard at localhost:8090
itervox
$ itervox -verbose 09:41:33 INFO HTTP server listening addr=127.0.0.1:8090 09:41:35 INFO worker: starting issue_identifier=ENG-142 backend=claude 09:41:36 DEBU orchestrator: tick fetched=3 running=1 slots=4 09:41:36 INFO orchestrator: dispatch complete dispatched=2 running=3 09:44:12 INFO orchestrator: worker succeeded, claim released issue_identifier=ENG-142 09:44:12 INFO worker: PR link commented on issue pr_url=pull/87 09:44:12 INFO orchestrator: issue transitioned issue_identifier=ENG-142 to="Done" 09:44:15 INFO worker: starting issue_identifier=ENG-148 backend=claude

Full visibility into every agent

A real-time web dashboard with everything you need.

Itervox dashboard overview: running agents, host pool, and live sessions

Live dashboard at a glance

The dashboard opens with hero stats showing running, paused, retrying, and capacity counts. Below, the running sessions table shows every active agent with turn count, elapsed time, and expandable inline logs.

  • Hero stats tiles with color-coded counts
  • Running sessions with expandable log accordion
  • Retry queue with attempt number and due time
  • Narrative feed showing recent agent events
Kanban board with Backlog, Todo, In Progress, and In Review columns

Kanban Board

Drag issues between workflow states. Columns adapt to your tracker — Backlog, In Progress, In Review, Done. Each card shows the issue identifier, title, and which agent is working on it.

  • Drag-and-drop between states
  • Profile and backend badges
  • Real-time status indicators

Automatic retry queue

When an agent exits with a recoverable failure — rate limit, usage cap, transient API error, network blip — Itervox queues the issue for re-dispatch with exponential backoff. Each attempt's error is captured inline so you can spot patterns without trawling logs. Issues that exhaust their retry budget land in the configured failure state instead of vanishing silently.

  • Recoverable failures re-dispatched automatically
  • Per-attempt error captured inline
  • Exponential backoff with bounded retries
  • Manual cancel from the dashboard

Agent Board

Assign issues to agent profiles by dragging them between columns. Each column represents a profile — backend, frontend, devops — with its own runner configuration.

  • Drag to reassign between profiles
  • Mix Claude Code and Codex runners
  • Quick agent info modal
Agent board view with Unassigned plus per-profile columns
Host pool with local and SSH workers showing per-host capacity

SSH Host Pool

Monitor agent capacity across local and remote machines. Load bars show utilization in real time. Disable hosts without restarting.

  • Round-robin or least-loaded dispatch
  • Per-host capacity limits
  • Live load indicators

Timeline

Visualize every agent run as a horizontal bar. Subagent phases appear as colored segments within each bar. Click a run to see its full log stream.

  • Subagent split visualization
  • Token usage per run
  • Click to drill into logs
Timeline page with multiple runs showing subagent splits and token counts
Logs page with filter chips for text, action, subagent, warn, and error levels

Logs

Stream agent output in real time. Filter by event type — text, actions, subagents, warnings, errors — directly from the dashboard.

  • Per-level filter chips
  • Color-coded severity
  • Live tail with follow mode

Settings

Configure tracker states, agent profiles, capacity limits, and SSH hosts — all from the dashboard. Changes take effect immediately, no restart needed.

  • Add/edit/delete agent profiles with dynamic model suggestions
  • Configure active and terminal states
  • Manage SSH hosts and dispatch strategy
Settings page showing the Agent Profiles editor
Issue detail slide-over with description, branch, and comment thread

Issue Inspector

Click any issue to open a right-side slide-out with full description, current branch, agent profile, and the live tracker comment thread. Change profile, open in tracker, or copy the branch name with one click.

  • Live tracker comments — no tab switching
  • Per-issue agent profile override
  • One-click branch name copy

Agent needs your input

When an agent emits the <!-- itervox:needs-input --> sentinel, Itervox pauses the run, badges the issue input_required, and surfaces the agent's question right inside the issue inspector. Type your reply once — Itervox posts it as a comment on the tracker issue (Linear or GitHub) and resumes the worker from where it stopped. No manual re-dispatch, no context loss.

  • One-line opt-in via prompt template
  • Dashboard badge + inline reply box
  • Reply auto-posted to Linear / GitHub as a comment
  • Worker resumes from the same session
Issue inspector showing the Agent needs your input panel with reply box

Inline log accordion

Expand any running session to see the live log stream without leaving the dashboard. Subagent labels, color-coded severity, and a follow-tail toggle ride along with the main overview.

  • Per-session expand without navigation
  • Subagent badges beside every line
  • Follow mode auto-scrolls with new output
Running sessions with rows expanded showing inline logs

Recent events feed

A tailing feed of structured orchestrator events: dispatches, worker lifecycle, rate limits, pauses, and resumes. Glance once and know exactly what the fleet is doing right now.

  • Last 20 orchestrator log lines, live-tailed
  • Color-coded by severity
  • Useful for debugging without opening a log file
Recent Events panel showing the last 20 orchestrator log lines

Works on mobile

The full dashboard — hero stats, host pool, running sessions, kanban, narrative feed — reflows into a single column at phone widths. Monitor the fleet from anywhere without losing any feature.

  • Single-column reflow at phone width
  • Drawer navigation
  • Every surface reachable from your phone
Full mobile dashboard scroll

List View

Sortable, filterable table view of all issues. Switch from Kanban to List with one click for fast keyboard-driven triage.

Issue Detail Slide

Click any issue to open a right-side slide-out with full details, comments, labels, blockers, and one-click actions (pause, terminate, AI review).

Light & Dark Themes

Toggle between light and dark modes. Theme preference is persisted per browser. The control-room dark theme is the default.

Mobile Responsive

Full responsive layout with drawer navigation on small screens. Monitor your fleet from your phone while you grab coffee.

Narrative Feed

A real-time feed of agent activity in plain English: "ENG-142 paused", "ENG-145 opened PR #87", "ENG-148 needs input". Like a Slack channel for your fleet.

REST API + SSE Stream

Every dashboard action is backed by a documented REST endpoint. Build custom integrations against the same SSE snapshot stream the dashboard uses.

View from your phone, anywhere

The dashboard runs on your machine. Reach it from your phone over LAN, SSH, Tailscale, ngrok, or self-hosted Piko.

LAN bind

Set server.host: 0.0.0.0 in WORKFLOW.md. Browse from any device on the same WiFi.

SSH tunnel

Forward the port over SSH: ssh -L 8090:localhost:8090 host. Familiar to developers.

Tailscale

Zero-config WireGuard mesh. Install on phone + laptop, browse via the tailnet hostname from anywhere in the world.

ngrok

One command (ngrok http 8090) for an instant public HTTPS URL with built-in basic auth.

Piko (self-hosted)

MIT-licensed reverse tunnel you run on your own VPS. No vendor in the data path, outbound-only tunnels survive network changes.

Auth included

Set ITERVOX_API_TOKEN for bearer-token auth on every API request. Mandatory for any non-loopback exposure.

→ Full setup instructions in the Remote Access & Mobile guide.

Or stay in the terminal

Full-featured Bubbletea TUI with the same real-time data

Bubbletea TUI default view: issues left, logs right, Gantt timeline bottom

Issues and Live Logs

The left panel shows all active sessions — running, retrying, paused — with subagent expansion. The right panel streams live logs with color-coded tool calls, text output, and subagent markers. Bottom panel is a proportional Gantt of every session.

  • Expand subagent trees inline
  • Color-coded log levels
  • Filter by issue selection

Session Details

Press d for a slide-in details panel: turns, token breakdown, backend, and the full subagent list for the currently focused session.

  • Token usage breakdown
  • Subagent list with branch names
  • Backend and profile shown inline
TUI details panel showing turns, tokens, backend, and subagents
TUI Gantt timeline with subagent rows and per-run token counts

Gantt Timeline

Every running and paused session as a proportional bar. Subagent rows appear underneath. Press Enter to drill into the phase breakdown for a single run.

  • Proportional duration bars
  • Per-subagent rows with token counts
  • History mode shows completed runs

Backlog

Press b to open the backlog panel — see issues waiting for work, drill into details, and dispatch them with d.

  • Priority-sorted issue list
  • Inline details on selection
  • One-key dispatch
TUI backlog panel with issue details on the right
TUI history view showing completed runs

History

Press h to flip the issues panel into history mode: completed runs with their final status, turn counts, and elapsed time.

  • Status glyphs per run
  • Elapsed and turn count at a glance
  • Scroll back through every session

Project Picker

Press p to open the multi-select project filter. Check any combination of Linear projects; the daemon scopes polling to just those. Same filter also lives in the web settings page.

  • Multi-select with keyboard
  • Filter scales across dozens of projects
  • Persisted via WORKFLOW.md
TUI project picker overlay with multi-select checkboxes
tab focus panel j/k navigate space expand enter drill down esc back h history t tools d details b backlog p projects x pause r resume D discard +/- workers o open PR w web UI q quit

Agent Profiles

Define named agent profiles with per-profile commands, backends, and role prompts. Profile prompts support Liquid template variables — reference issue data like {{ issue.identifier }} and {{ issue.title }} directly in your role descriptions.

backend
claude
command: claude
prompt: "Backend specialist.
  Focus on Go, APIs, DB."
backend-fallback
codex
command: codex
prompt: "Backend specialist.
  Focus on Go, APIs, DB."
Use case

Hit rate limits? Just reassign.

Create named agent profiles with different runners. When one provider hits limits, drag issues to another profile in the Agent Board — no config changes, no restarts.

1
Rate limited
Claude API returns 429
Agent paused
2
Open Agent Board
Dashboard → Agents view
See issues per profile
3
Drag to reassign
Move issue from
“claude” to “codex” column
4
Resumes instantly
Agent picks up work
with Codex backend

Configure without restarts

Every setting below is live-editable from the dashboard. No daemon restart, no WORKFLOW.md hand-edit, no lost runs. Changes persist back to WORKFLOW.md automatically.

Code Review Agent settings panel

Built-in AI code review

Point any profile at the reviewer slot. Optionally auto-trigger a reviewer run after every successful main agent.

Linear project filter

Per-project scoping

Restrict the daemon to one or many Linear projects, or leave it polling everything. Same filter works in the TUI.

Tracker states configuration

Tracker state mapping

Map orchestrator states to your tracker's workflow — active, terminal, completion — written back to WORKFLOW.md.

Max concurrent agents stepper

Runtime capacity

Tune fleet concurrency on the fly. The orchestrator picks up the new ceiling on the next dispatch cycle.

Add worker host modal

Add SSH workers in seconds

Host address, description, known_hosts warning inline. Docker hosts coming soon.

SSH hosts list and dispatch strategy

Dispatch strategy

Round-robin or least-loaded routing across your worker pool. Switch strategies without draining queues.

Auto-clear workspace setting

Auto-clear worktrees

Delete the cloned worktree after successful completion. Logs are always preserved.

Autonomous, not unsupervised

Agents do the work. You stay in control at every checkpoint.

🔍
AI Code Review

Configure a reviewer_prompt and trigger a second agent to review the PR on the correct branch. The reviewer uses the same runner and profile as the original worker.

Agent Asks for Help

When an agent needs human input, it pauses and posts a comment directly on the Linear or GitHub issue. Reply from the dashboard or from your tracker — the agent picks up your response and resumes automatically.

You Merge the PR

Agents submit PRs and post a session summary as a comment — they never merge. PR links are automatically commented on the tracker issue. Your team reviews and merges when ready.

Every step, visible

> Analyzing codebase structure...
$ go test -race ./...
◆ Spawning subagent: explore
✗ Test failed: auth_test.go:42

Live Logs

Stream agent output in real time with per-level filtering and export.

ENG-142
4.2k
ENG-145
8.1k

Timeline

Visualize parallel agent runs with subagent splits and token usage.

Backlog
In Progress
Done

Kanban

Track every issue from backlog to done with drag-and-drop.

ENG-142 / subagent logs
parent
explore
impl

Fleet Logs

Full subagent log capture via CLAUDE_CODE_LOG_DIR. Every tool call, from every agent in the tree — parent and all sub-agents. Works over SSH.

Integrations

Linear

Project tracking with automatic state transitions

GitHub Issues

Issues + PRs with label-based routing

Scale across machines

Distribute agents to remote hosts via SSH. Round-robin or least-loaded dispatch. Fleet Logs captures every tool call from every subagent in the tree — parent and all children — even on remote hosts.

  • SSH host pool with per-host capacity
  • Round-robin or least-loaded dispatch strategy
  • Full subagent log capture via CLAUDE_CODE_LOG_DIR
  • Works identically for local and SSH workers
WORKFLOW.md
# WORKFLOW.md (SSH section) agent: ssh_hosts: - build-01.internal - build-02.internal:2222 dispatch_strategy: least-loaded max_concurrent_agents: 8

Lifecycle hooks

Run shell commands at key points in the agent lifecycle. Set up the environment, validate results, or notify external systems.

  • after_create — after workspace is created (install deps, seed DB)
  • before_run — before agent starts (lint check, env setup)
  • after_run — after agent finishes (run tests, post to Slack)
  • before_remove — before workspace deletion (backup artifacts)
WORKFLOW.md
# WORKFLOW.md (hooks section) hooks: after_create: | cd {{workspace}} && npm install before_run: | golangci-lint run ./... after_run: | go test -race ./... timeout_ms: 60000

Ready to try it?

Itervox is free and open source under the MIT license.
If it saves you time, consider sponsoring the project.