Agent Engine · ExMan · the visual path See the path at a glance, then drill each step into the two concepts · the diagrams · the requirements.
Design Hub · Agent Engine · ExMan console

How a dispatch travels through the console.

Follow one task from the moment it's dispatched to the moment it lands back in RoadWork — and see the only point where the console asks you for anything. Every step drills into the two console concepts, the matching diagram, and the requirements + test cases.

Honest state — what's built vs. a concept vs. substrate

  • ✓ BuiltThe routing engine — it hosts terminals, dispatches, detects done by signal, and logs who-drove-whom. It drove ~15 agents with zero copy-paste on 2026-07-06.
  • ◐ ConceptThe summary wall, opening the live terminal, the routing inspector, and the action tray exist as two HIFI prototypes. The console is not built yet, and your A-vs-B pick is pending.
  • ▫ SubstrateStateMan (state) and RuleMan (rules) are named here as what the engine runs on — not rendered as built. RuleMan / autonomy is a separate build, not this path.

Start here — the bundle story

Agent Engine is three surfaces, one engine: RoadWork tracks the work · Pulse lets you watch it move · ExMan is the console you drive it from.

Front door

Open the landing to see where this sits — the ratified flow is Blueprint decides → RoadWork tracks → Agent Engine executes. Everything below is the "executes" half, opened up.

1

A dispatch enters

A task arrives from RoadWork's queue (or a PM / MEET relay). The engine reuses an idle worker or spawns one — you never pick a worker.

Built

The concurrency is capped at four. A message from MEET (which runs in a claude.ai browser tab, outside the engine's reach) crosses in through a file-inbox bridge — it writes one line to an inbox file the engine tails and types into PM. That crossing is the single biggest daily copy-paste, and it dies here.

2

The terminal runs on your subscription

ExMan hosts a Claude Code terminal that runs the local claude — on your Claude subscription. The console never calls the API.

Built

The security invariant that makes "no API" true: a controller can only read another terminal's scrollback and type into it — no shell, no file write, no network. The routing brain's output can only ever become typed text into a terminal that already exists. There's no API key anywhere in the console.

3

A summary heartbeat lands on the wall

The wall shows one summary card per terminal — name, task, a state glyph, its last emit, and a timestamp. Summaries by default, not a wall of live streams.

ConceptShared element 1 · the wall

State is carried by four channels at once — shape + word + lightness + motion — never colour alone, never red/green. Every card field is a system-verifiable fact; a field with no real source hides rather than showing a fabricated number.

4

You watch — and open any one live

Stay on the summaries by default; click (or keyboard) any card to open the actual live terminal — because you asked for it on purpose.

ConceptShared element 2 · live terminal

The two concepts diverge here: Concept A opens a right drawer; Concept B opens an inline panel below the rail. Either way it's the same live read of the same terminal — and opening a second card closes the first, so the wall never becomes N live streams. An empty terminal reads "No output yet," never invented text.

5

Routing between terminals

Who's talking to whom, in one feed — a hosted-terminal hop and an external inbox hop render identically, because both use one message shape.

v1 conceptShared element 3 · inspector

The inspector reads only real logged hops — orchestration-log for hosted terminals plus the inbox bridge for outside ones — in the shape {from, to, kind, body, ts, token}. A blocked "needs you" hop is marked by shape and word, never colour alone. Concept A draws it as a docked list; Concept B as a timeline spine.

6

Your action tray — the only thing it asks of you

Only the things that truly need you, batched: merges, approvals, deploys, SQL runbooks. The machine surfaces the exact command and never runs it.

ConceptShared element 4 · the tray

Every card is a real judgment tagged "your click / your hands · SO #30". Defaultable choices never appear here. The honest best state is empty — "You're clear — 0 actions." Concept A docks the tray and lets it rise to a banner when something's pending; Concept B makes it the full-width hero and collapses it to a slim bar when clear.

7

The work lands back in RoadWork

The worker writes its done-file; the console reads it (a signal, not a timer) and the card flips to Done; the RoadWork lane updates — and the loop closes.

BuiltRoadWork feed · packaging

Done-detection is signal-based, never timing-based: the worker writes .exman-done-<token>.json as its last step and the controller reads that one known file — reflow-proof and echo-proof. RoadWork is the truth for work; if a view ever disagrees with it, RoadWork wins.

The two concepts — pick pending

Both render the same four elements with the same invariants; they differ only in what leads and where each sits. The build proceeds identically on whichever you pick — nothing in the requirements depends on the choice.

Shared elementConcept A · Mission Control recommendedConcept B · Signal Bar alternative
The wallGrid of summary cards — the hero; the floor leadsHorizontal rail of compact cards below the desk
Live terminalRight drawer (modal · scrim · Escape)Inline panel below the rail (in-flow)
Routing inspectorDocked list in the right railDrawn timeline spine (right column)
Action trayDocked; rises to a banner when pending, recedes when clearFull-width "Your Desk" hero; collapses to a slim bar when clear
CharacterCalm, scannable, you-as-observerAttention-first, opinionated, louder

State grammar · colour-blind-safe (glyph + word + lightness)

Workingrunning on the subscription · slow pulse
Needs youblocked on a human judgment · blink · routed to the tray
Idledone its last task, awaiting dispatch
Donedone-file written, handed on
Exitedterminal closed

Honest state grain (what each chip means)

Builtexists and ran — reuse, don't rebuild
Concepta locked prototype; not built; your pick pending
Substratenamed as what the engine runs on; not a built surface here
Sharedone of the four elements both concepts render
We eliminate the carry. You keep the judgment. Merges APPROVED <class> SQL / database Deploys stay your hands · SO #30