Some problems have more than one reasonable answer and you cannot tell which one you want by reading the prompt. A race is for those: the same prompt goes to several agents at once, each in its own fresh worktree on its own branch, and you judge the results rather than the plan.
This is different from the other kinds of parallelism in Termic. Several tasks running at once are agents doing different work. Broadcast asks several agents in one working tree. A race is many agents, one prompt, many branches, and exactly one of them survives.
Starting one
From a project’s actions menu, choose to start a race. The dialog asks for:
- The prompt every agent runs.
- A name for the race, and an editable branch segment, so the branches it creates are recognisable rather than random.
- Which agents to race. At least two, and they can be different CLIs:
claudeagainstcodexis a legitimate race. - Sandboxed or YOLO. Inside the sandbox, YOLO defaults on, because skipping per-action permission prompts is safe when the cage is the boundary and a permission prompt nobody is sitting in front of just stalls the racer.
The dialog shows live progress while the worktrees spin up, because cutting three worktrees from a large repository is not instant and a dialog that just sits there looks broken.
Watching them
A race strip appears above the racers, one entry per agent with a live work-state badge: not started, working, agent finished a turn, work done. It is the same work-done detection the sidebar uses, so you can tell a thinking agent from a finished one at a glance.
You can jump to any racer’s terminal from the strip, and hide the strip for the session without stopping the race.
Comparing and adopting
When every agent has finished, Compare unlocks. It opens an N-up view: each racer’s diff in its own column, side by side, scrolled together, so the differences between approaches are the thing you are actually looking at rather than something you reconstruct from three separate tabs.
Adopt into main lands the chosen agent’s work in the project’s main checkout. You can archive the losing racers in the same step. An agent that produced no changes says so rather than offering an adopt that would do nothing.
When a race is worth it
Races cost real tokens: N agents doing the same job. They pay off when:
- The approach matters more than the code. A refactor with three plausible shapes.
- You want to compare CLIs on your own repo rather than on a benchmark.
- The task is well specified but fiddly, so the failure mode is a subtly wrong result rather than a wrong understanding.
They are a poor fit for work where you would have to read all N results in full to judge them, because then you have done the work three times over.
Related
- Parallel agents: the other two shapes of parallelism, and duplicating a worktree.
- Broadcast: one prompt to every agent in a single task.
- Tasks & worktrees: what each racer gets its own copy of.
- Sandbox overview: why YOLO defaults on inside the cage.
- Work-done & notifications: the badges the race strip uses.