Kairokuplaybook
Orchestration

The Floor

One page per project that answers what is waiting on you, what is running, and how one run went.

The floor is the project's live view of every agent working on it, on every machine. It is a row on every project — /projects/<slug>/floor — present whether or not you have a machine yet, because "you have no machine" is the answer to a question this page is for.

It answers three questions, in the order a reader asks them.

Screenshot placeholder — annotated Floor.

A live Floor with work on it, annotated with the three questions: the runs waiting on you at the top of Now (1), the running rows under them and the Queued card (2), and one run's page (3).

To be captured from a running project and dropped in here.

1. Is anything waiting on me?

The Now card comes first, and the runs waiting on a person come first inside it. Empty is a real answer: "Nothing is running, and nothing is waiting on you." Five things can put a run there, and each carries the one action it needs:

What happenedWhat the row offers
A run finished and its pull request is open — Pull request readyReview, linking to the pull request. Merging is yours
A pull request merged, but its item is marked needs manual check — Merged — needs your checkMark done
A run is asking a question (needs input) — Waiting on an answerOpen, to the run — answering from the app comes later
A run failed — Run failedRun again
A run stopped reporting and was marked interrupted — Run interruptedRun again, after confirming

With no machine registered at all the card says so plainly: "Nothing is waiting on you, and nothing can run until a machine joins."

2. What is running, and what is waiting to start?

Under the rows that need you, Now lists every run a machine has claimed or is working on. Each row carries its state word — Running, Claimed, or the needs-you word — then the run's name and the item's title over its last event line, the machine, how long it has been going, and the one action a person can take. The title links to the run's own page.

Queued lists what has not started, each saying Waiting for <machine> or Starts when a machine frees up. Finished lists runs that ended without asking for anything, with their final stage word and machine, so nothing the app recorded is unreachable from this page.

Rows are coloured by state, never by agent. A hundred runs on one screen only read at a glance if the colour answers where in the chain is this, not who is on it. The word is always there beside the colour — the colour reinforces the word, it never replaces it.

StageWord
Waiting for a machinequeued
An implementer is workingimplementing
A reviewer is readingreviewing
The deterministic check-and-test stepqa
The run asked somethingneeds input
Reviewer and QA cleared, a pull request is openPR ready
The pull request mergedmerged
It ended badly, you cancelled it, or it stopped reportingfailed · cancelled · interrupted

A project with no runs at all shows No runs yet — "Start work from the plan to see execution here." — with Open the plan. With no machine registered, the machine band says what to do:

No machine yet: register one in Settings → Machines, then run kairoku setup --daemon on it. Work queued before then waits; nothing is lost.

3. How did this run go?

Every run is a page of its own — /projects/<slug>/floor/runs/<runId>. It shows the run's Activity as a thread of turns, then Properties (stage, role, model, branch, run id, event count), the Dispatch it belongs to (target, team, profile, machine, how many runs), the Machine, and the Artifacts: the four suite counts, the pull request link — with merging stays yours beside it — a preview link when one resolves, and screenshots when the run recorded them. The preview link is GitHub only: the URL of a successful GitHub deployment on the PR's head commit, read with your GitHub connection — retried every two minutes, up to 30 times, for a run under seven days old.

The run's actions menu holds Cancel run, Run again, and, while the dispatch is still live, Cancel dispatch — which asks first, because every run in it stops, not only this one. Work already recorded is kept.

What it costs to watch

The page is live. A chip says whether the app is hearing from the machines — Live, Connecting, Reconnecting or Access refused — and its tooltip states the cadence rather than leaving you to guess it: while live, lines arrive within ~3 s of the agent's action; if the stream drops, the page falls back to re-reading every 5 seconds. A machine heartbeats every 10 seconds while a run is active (every 30 when nothing is), and streams a run's events every 2 seconds while it works.

Nothing on the Floor animates for its own sake beyond the live dot's pulse, and prefers-reduced-motion is respected.

A run whose machine stops reporting does not stay running forever: once its reports stop for long enough, the app marks it interrupted and it moves to the top of Now with Run again.

Floor and Mission Control

The Floor stays. It is still the project's live run page — what needs you, what is running, what is queued, and each run's own page with Cancel and Run again. Mission Control does not replace it.

Mission Control is the account-scoped surface at /fleet for authorized machines, attention across projects, and release preparation.

On this page