<!-- https://zerolog.ch/docs/ultracode · Docs / Agents -->
# /ultracode

`/ultracode` is a switch, not a job. Turn it on, and the model in this chat may split a large task across several agents, with two checkers reviewing each part. It decides when. Short questions still get a short answer.

Type it the same way

```
/ultracode         on for this chat
/ultracode <task>  on, plus the task
/ultracode off     off
```

The word `ultracode` anywhere in a message turns it on too. `/swarm <task>` skips the decision and starts a workflow right away; your account needs the swarm permission for that. In the terminal client, `/ultracode-jetzt <task>` does the same.

Fan-out

## It fans out

The task is decomposed and the parts run in parallel rather than one after another. Breadth costs wall-clock time once instead of once per part.

One after another

In parallel

Wall-clock

*Both bands carry the same parts and the same work. Only the arrangement differs.*

Refutation

## It reviews adversarially

Each part gets two checkers. Their job is to find what is wrong with the files an agent changed, not with its summary.

The checkers can read files and run commands such as tests, but they cannot write. One looks only for factual or logical errors, the other only for parts that are missing or half-done.

A fixer then repairs the flagged defects once. That fix is not reviewed again: the part is marked as changed after review, and the summary says so. The summary also reports parts where a checker could not answer. A finished workflow does not by itself show that tests passed.

Card

## A card tracks it in the chat

While it runs, a card appears with the plan and one line per agent. The arrow on a line opens its log.

- **The plan**: What the model gave each agent, in its own words
- **Per agent**: Name State A running clock
- **The log**: The task it was given Every tool call What it wrote back

The card streams from the server. Reload, switch devices or close the tab: it picks up where the run is, and the model waits for the result before it answers you.

Cost

## It costs more

Several models on one task is several bills. Use it when being wrong is expensive, and [/goal](https://zerolog.ch/docs/goal) the rest of the time.

- **/ultracode**: Audits Migrations Reviews before a release
- **/swarm**: Skip the decision, start right away
- **/goal**: The rest of the time

Ceilings

## The ceilings still apply

It obeys the same ceilings as any other job: your plan's run time, the budget governor and a spend cap if the model sets one.

Every lane

*One bar, drawn across every lane at once. Fanning out buys no exemption from it.*

It needs a paid plan: on the Free plan the switch is not available. The model starts a workflow only while the switch is on for the chat.

Agents use models available to your account. If a model cannot run, follow the message in chat or choose another model from your picker.

Several agents on one task mean several model bills. Credit and plan prices: [Pricing](https://zerolog.ch/pricing); limits: [Limits](https://zerolog.ch/docs/limits).

Overview of unattended runs and what limits them: [/goal and /ultracode](https://zerolog.ch/unattended-agents).

For a continuing finish condition use [/goal](https://zerolog.ch/docs/goal). See [unattended runs](https://zerolog.ch/unattended-agents) and [spend limits](https://zerolog.ch/docs/limits) before delegating long work.

## How an /ultracode workflow runs

Mermaid source of the diagram on this page:

```mermaid
%% /ultracode: one workflow. Facts from server/werkzeuge/ultracodetools.js, server/job-handlers.js (planSubtasks, registerHandler('ultracode')), server/routes/jobs.js.
flowchart TB
  on["/ultracode is on for this chat"]
  decide["The model decides whether<br/>a workflow pays off"]
  plan["Planner splits the task<br/>into 2 to 6 independent parts"]

  subgraph PART["Each part, in parallel (8 at once by default)"]
    direction TB
    impl["Agent does the work<br/>in your container"]
    v1["Checker 1<br/>looks for errors"]
    v2["Checker 2<br/>looks for gaps"]
    fix["Fixer, only if<br/>a checker objected"]:::hot
  end

  sum["Summary agent reports<br/>to the chat, with the<br/>review status of each part"]

  on --> decide --> plan --> PART
  impl --> v1
  impl --> v2
  v1 --> fix
  v2 --> fix
  PART --> sum

  linkStyle 5 stroke:#8f7ac9
  linkStyle 6 stroke:#8f7ac9
```
