← The work

ATLAS · Opus 4.8 · Ultracode · August 2026

Agentic Orchestration V2

“What if the dispatcher is an agent too?”

  • In daily use
  • Kit unshipped
  • Git worktrees
  • File-based signalling
  • Paper: Agentic Orchestration Architecture

ATLAS V1 gave me one place where the state of every project lived. It did not give me back the job I actually wanted to hand off, which was deciding what should happen next. This generation moves that decision into an agent and gets me out of the loop entirely after the first conversation.

The shape of it

There are two roles and one rule. The Overseer Agent is Claude Code running in the desktop application, on Opus 4.8 Max with a one-million-token context, because it is the only process that has to hold the whole project in its head at once. The sub-agents are claude in terminal panes, each on Opus 4.8 in ultracode mode: extra-high reasoning effort plus dynamic workflow orchestration, so each one can spawn one to five agents of its own when a ticket turns out to be bigger than it looked.

The rule is that agents never talk to each other. Everything goes through the Overseer, and everything is a file. Traffic uses five message types (Question, Clarification, Answer, Issue, Done), four traveling up and Answer coming back down. That single constraint is what makes the whole thing debuggable: at any moment the complete state of the system is on disk and I can read it without attaching to anything.

The physical setup

Two monitors, four panes each, is eight concurrent agents. That is the ceiling, not the recommendation. I run four. Past four, the Overseer becomes the bottleneck and the thing you are optimizing stops being throughput and starts being your own ability to read what happened.

Diagram scrolls sideways →

One lane of the Opus 4.8 workflow, from ticket to merge The Overseer Agent writes a ticket file into a lane. Agent 3, isolated in its own git worktree, picks it up, works, and writes exactly one signal file back: done, question, clarification or issue. The Overseer reads the signal and merges to main. The same loop runs in four lanes at once. main one branch of record merged to main Overseer Agent Opus 4.8 Max · 1M ctx writes tickets waits for signals reviews and merges writes the ticket lanes/a3/ticket-014.md one lane · one owner Agent 3 Opus 4.8 · ultracode scopes · builds · reviews spawns 1–5 of its own worktree/a3 · isolated writes one signal EXACTLY ONE OF .done.md question.md clarify.md issue.md reads the signal the same loop runs in four lanes a1 a2 a3 a4 no lateral edges · an agent that needs another agent’s work asks the Overseer
done, ready to review question / issue, needs the Overseer clarification, ticket was ambiguous
Fig. 1. One lane, one round trip. The four signal files are the entire protocol between an agent and the Overseer, and their colors are lifted from the pens in the original notebook page. An agent that needs something from another agent’s work does not go get it. It asks the Overseer, who decides whether that is a merge, an answer, or a new ticket.

What each role actually does

Overseer Agent

  1. Writes tickets into a specific lane. A lane belongs to exactly one agent for the life of a ticket.
  2. Waits for signals. It does not poll the agents; it watches the filesystem for files appearing.
  3. On .done.md: review → merge → push → log, in that order, on its own branch.
  4. Fixes the issues it finds during review itself rather than bouncing them back, unless the fix is large enough to be its own ticket.

Sub-agent (n)

  1. Watches its inbox for tickets.
  2. Scopes, then builds, spawning its own agents if the ticket is bigger than one context.
  3. Reviews its own work, then marks done by writing the signal file.

Why files and not a message bus

A queue would be faster and worse. Files give three things a bus does not: the state survives every process dying at once, I can read the entire system with ls and cat while it runs, and git already knows how to isolate and merge them. The whole coordination layer is git worktree plus a naming convention, and there is no daemon to keep alive.

The kit, as designed

Status, stated plainly

The workflow itself is real and in daily use. The packaged kit below is not shipped. These files are a design on paper, and they are not in the repository. I am describing the shape I want it to take, not a folder you could clone today. Two pieces of forward evidence do exist in the repo: a Claude-managed worktree from May 6, 2026 demonstrating the lane mechanism, and launch screenshots showing every pane already at extra-high reasoning effort.

The intent is portability: dropping one folder into a repo and pasting two prompts should be the entire setup.

agent-workflow-kit/
├── README.md
├── Coordination.md        ← the rules every agent obeys
├── Workflow.md            ← the diagram and the breakdown
├── prompts/
│   ├── overseer.md        ┐ paste into an agent
│   └── lane-coord.md      ┘ to assign it a role
├── templates/
│   ├── agent.md           ┐ skeletons
│   └── ticket.md          
└── inbox/
    └── README.md          ← how flow is managed

Configuration of record

ComponentSettingWhy
OverseerClaude Code in the desktop app, Opus 4.8 Max, 1M contextIt is the only process that must hold the whole project at once
Sub-agentsclaude in a terminal pane, Opus 4.8, ultracodexhigh effort plus dynamic workflow orchestration, so a ticket can grow its own fan-out
Fan-out1–5 nested agents per sub-agentThe sub-agent decides. The Overseer never sees the nesting
Concurrency4 in practice, 8 possibleTwo monitors × four panes is the hardware ceiling; four is the attention ceiling
IsolationOne git worktree per laneTwo agents cannot touch the same working tree, so there is nothing to race on
SignallingFiles: done, question, clarification, issueSurvives process death, readable with cat, mergeable by git

What I got back

The measurable change is where my time goes, not how much of it there is. The planning conversation got longer and more careful, because it is now the only leverage point in the run. Everything after it (the dispatching, the context-switching between four half-finished things, the remembering which of them was blocked on what) stopped being mine.

The failure mode also changed shape. In V1 the failure was me: I would forget a blocked project for two days. Here the failure is an agent confidently finishing the wrong ticket, which is faster to cause and slower to notice. That trade is the honest cost of the generation, and it is the reason problem 02 below matters as much as it does.

What it still cannot do

Every sub-agent is a generalist. They run the same model with the same prompt shape and no standing knowledge of the domain they were dropped into. An agent working on the quoting engine and an agent working on the maintenance triage pipeline are the same agent wearing a different ticket. That is what V3 attacks: pushing the specialization into the agent itself (its own model, tools, skills and MCP servers) instead of into the prompt it was handed.

The Overseer cannot see its own overhead. It is supposed to notice and improve inefficiencies in the workflow: the standing instruction in the margin of the design notes reads “auto improve inefficiencies in workflow.” It is also the busiest process in the system and the one with no spare attention, which makes it the worst available candidate for the job. I do not have a good answer for this yet; the Agentic Orchestration Architecture paper states it as an open problem.

And the throughput claim is not measured. I can tell you my attention moved and that four agents run at once. I cannot yet hand you a before-and-after on tickets closed per day or on error rate, because V1 logged itself and V2 does not log itself the same way. That instrumentation gap is the honest reason this page has no performance table.

The full report

Agentic Orchestration Architecture covers all three versions (the built dashboard, this workflow, and the domain-agent sketch) with the through-line that each generation keeps the communication substrate and sheds machinery as the platform absorbs it. Download the paper (PDF) →