arc

arc is a plan and task orchestrator built into the same radian binary. It keeps a plan and its tasks as files in the repository, runs each task as a separate headless radian worker, and merges only what passes a fixed gate.

This build has the storage layer, the subcommands that read and write it: init, add, list, show, adopt, confirm, auto, priority, pause, start, reverify, cancel, reset-budget, merge, reject, run, and mcp. It also has radian arc mcp, the MCP server a lead writes plans and tasks through, the attempt runner behind start, and the gate and merge behind start, merge and the loop. radian hub add, remove and list manage the repositories one hub process schedules and reads; a bare radian hub serves that hub's HTTP API on <hub.bind>:<hub.port> (loopback by default) and runs the scheduling loop, and pair and token rotate handle the bearer token (see hub). radian hub is the scheduling loop and radian arc run is one pass of it; radian arc serve no longer exists. A bare radian arc opens the TUI, where you see the plans and tasks and act on them (see arc/tui).

The commands are in plans and tasks, running, the owner's commands and hooks; the merge is in integration, the loop in loop, the gate in gate, gate-review and gate-failures, the MCP server in mcp, the TUI in tui, the flows in flows, the worker in worker, and the files in files and config.

Pages#

This page maps the arc manual. Each line names one page and what it covers.

  • arc/index: this page: the overview, the subcommand list, and the exit codes.
  • arc/planning: the plan and task commands.
  • arc/running: the task-running commands.
  • arc/owner: the owner's commands.
  • arc/hooks: the [hooks] points, rules and environment.
  • arc/hub: the hub's HTTP API on a configurable address (loopback by default), pairing and the bearer token, every route, the repository registry, its scheduling loop, the [hub] keys and the session routes.
  • arc/gate: the gate run, a gate for this repository, and reconcile.
  • arc/gate-review: the review stage.
  • arc/gate-failures: the failure classes, retries and the budget.
  • arc/integration: how the merge builds and pushes the integration candidate: the styles, the key commands and the after-push check.
  • arc/loop: the scheduling loop: one pass, loop.log, the hub's loop, and its signals.
  • arc/files: the plan and task files and the .radian/arc/ layout.
  • arc/config: the config.toml keys.
  • arc/flows: what a flow is, a two-flow example, how a task picks one, the two concurrency limits, and binary deliverables.
  • arc/mcp: the lead's MCP server: how a lead registers it, its seven tools, and its tool errors.
  • arc/tui: the TUI: the plans, board, task and merge pages, every mark and key, and the owner's actions.
  • arc/worker: the worker: its session, the brief and limits, the checks after it exits, and another agent as the worker.

radian arc#

radian arc with no subcommand opens the TUI; its pages and keys are in arc/tui. Without setup, radian arc and every subcommand except init refuse with a line that names radian arc init and exit 3; without a terminal, radian arc exits 2.

The subcommands#

radian arc init, radian arc add plan and radian arc add task, radian arc list, radian arc show and radian arc adopt are in plans and tasks; radian arc start, radian arc cancel, radian arc reset-budget and radian arc reverify in running; radian arc confirm, radian arc auto, radian arc priority, radian arc pause, radian arc merge and radian arc reject in the owner's commands; radian arc run in the loop; radian arc mcp in mcp; the [hooks] table in hooks; and radian hub and its add, remove, list, pair and token rotate in hub.

radian arc run#

run is one pass of the scheduling loop: what a pass does, its output, its exit codes and loop.log are in arc/loop.

radian hub#

radian hub is the scheduling loop: with no subcommand it serves the HTTP API on <hub.bind>:<hub.port> (loopback by default) and schedules every registered repository, and radian hub add, remove and list manage the registry. Its loop, hub.lock, the machine-wide cap, the status lines and the signal handling are in arc/hub. The old radian arc serve (with or without --interval) is refused: exit 2, one stderr line, radian arc: `serve` is now `radian hub` .

radian arc mcp [--claude-experimental]#

radian arc mcp is the stdio MCP server the lead writes plans and tasks through. Registering it, its tools and its tool errors are in arc/mcp.

Flag Value Default What it does
--claude-experimental — off Push task transitions to a Claude Code channel. The details are in arc/mcp.

Exit codes#

Every subcommand uses these codes.

Code Meaning
0 success
1 an error
2 a usage error
3 the state does not allow the operation (this includes a file changed outside arc, and arc not being set up)
4 a lock is held by another process

Code 2 covers a bad flag or an argument value outside a closed set; a slug, an id, or a stage name that the rules refuse is also 2. A closed output pipe (radian arc list | head) is a normal stop: exit 0.

The TUI#

The TUI never holds runner.lock and runs no pass; when it opens it starts radian hub if no loop holds the repository's lock (and registers the repository when it is missing), and quitting it stops nothing. The header and ticker, the log view, the plans, board, task and merge pages, every mark and key, and the owner's actions are in arc/tui.

Not built yet#

The gate stages mutation and ci are not built: verification refuses a profile or task that lists one, and the task stays in review.verifying.

See also#

  • cli for every other radian command.
  • environment for the files radian reads, including this one.
  • arc/worker for the worker itself: its session, brief and limits, and another agent as the worker.