Skip to content

Auto-Dispatch (Symphony Mode)

Auto-dispatch (internally called Symphony Mode) polls your task board, picks the highest-priority ready task, and dispatches it to an available agent session — fully autonomously.

{
"auto_dispatch": {
"enabled": true,
"poll_interval_ms": 5000,
"max_concurrent": 3,
"provider": "kiro",
"terminal_states": ["done", "cancelled"],
},
}

The dispatch loop follows four phases:

  1. Poll — checks the task board for tasks in a ready state on each interval
  2. Dispatch — assigns the highest-priority ready task to a free session slot
  3. Reconcile — monitors running sessions for completion signals
  4. Notify — fires lifecycle hooks and updates task status
FieldTypeDefaultDescription
enabledbooleanfalseEnable auto-dispatch
poll_interval_msnumber5000Milliseconds between task board polls
max_concurrentnumber3Maximum simultaneous agent sessions
providerstringProvider to use for dispatched sessions
terminal_statesstring[]["done"]Task statuses that mean “finished”

When auto-dispatch launches a session, it appends the provider’s yolo_flag so agents run without asking for confirmation. This enables fully unattended execution.

Each dispatched task gets its own git worktree, created automatically from the current main branch. Tasks run in complete isolation — no merge conflicts between parallel agents.

max_concurrent caps the number of simultaneously running sessions. When a slot opens (task completes or is cancelled), the next ready task is dispatched.

Tasks with unmet dependencies (blockers) are skipped during polling. They become eligible once all blockers reach a terminal state.

planeai watches each session for completion markers (exit code 0, or a configurable output pattern). On detection, it moves the task to done and fires on_complete.

Failed tasks are not retried automatically. They move to a failed state and require manual intervention or an explicit restart.

On app launch, planeai re-attaches to any tmux sessions from a previous run and resumes reconciliation. No work is lost across restarts.

  • Session badge — shows “auto” for dispatched sessions
  • Task board — live status with elapsed time per task
  • Notification bell — alerts on task completion or failure

Control auto-dispatch from the command menu (Cmd+K / Ctrl+K):

CommandDescription
dispatch:startStart the dispatch loop
dispatch:stopPause dispatching
dispatch:statusShow current dispatch state
dispatch:nextManually dispatch next task