Documentation

Orchestration & bench

Split one task across several agents in isolated git worktrees, race agents head to head on the same prompt, and review the branches they leave behind.

Split & delegate

Create a task with orchestration enabled and Frontier runs it as three stages instead of one conversation. The stage bar and per-subtask cards in the UI track it live.

  1. Plan

    The top-ranked agent is asked to emit a JSON list of subtasks. Frontier extracts that list even when it comes wrapped in prose or a code fence. An empty plan simply falls back to running the whole task as one subtask.

  2. Delegate

    Providers are ranked per subtask type and run with bounded concurrency, each subtask streaming its output live. A lane whose candidate agents are all busy waits for a slot rather than failing — with one installed CLI at the default concurrency of 1, the second lane would otherwise abandon its subtask the instant the first started. Only a subtask that no idle agent could ever take is a real failure.

  3. Synthesize

    Every subtask's output is fed to an agent that writes the final report. This stage is explicitly read-only: the synthesizer is a full agent with file tools running in your working directory, and without that instruction it sees the subtasks' files as "missing" — they are committed on their own branches — and redoes all the work in your main tree.

Worktree isolation

When the working directory is a git repository, each subtask gets its own git worktree off HEAD on a branch named frontier/<taskId>/<n>-<slug>. The subtask runs there, its changes are committed to that branch, and the worktree is torn down — leaving the branch behind for you to review and merge. A non-git directory falls back to the shared folder.

Head-to-head comparison

Pick two or more agents for a single task and Frontier sends the identical prompt to all of them at once, each in its own worktree branch (frontier/<taskId>/bench-<agent>).

  • No failover, deliberately. A lane that fails is a result about that agent, not something to reroute.
  • Activity is attributed. Events are prefixed with the agent name, because the lanes stream concurrently.
  • The scoreboard is factual. The summary is built from what actually happened in each lane — it is not another model call grading the results.
  • No follow-up composer. A comparison has no single conversation to continue.

The Review inbox

Delegated and benched runs leave frontier/* branches behind. The Review screen lists them per repository with each branch's commit subject, distance from HEAD, and per-file +/- counts measured from the merge base — then offers a diff view, Merge, and Delete.

Safety rules

RuleWhy
Only branches named frontier/* can be diffed, merged, or deleted The Review screen can never touch your own branches.
Merging is refused while the checkout is dirty Your uncommitted work is never mixed into an agent's merge.
A conflicting merge is aborted and reported Never left half-applied for you to untangle.
Merge and delete both require an explicit confirmation No destructive action happens on a single click.

Model overrides during orchestration

A model picked in the New Task dialog is applied to every run in the task — but only on the agent that owns that model id. Subtasks and bench lanes that land on a different agent run that agent's own model instead, and say so in the transcript.