Agent Orchestrator Messagebox
A back-channel for orchestrating several headless at once. A worker that is missing a fact asks the session that briefed it, instead of guessing or dying and forcing a rerun.
The problem
Handing a job to a headless agent is a one-way trip. You write a brief, dispatch the work, and the next thing you hear is the result. Nobody can talk to the agent while it runs, and the run cannot be picked up again afterwards.
That is survivable with one agent and expensive with four. Any of them can hit a fact its brief left out: which library the project settled on, whether an interface is allowed to change, what the actually meant by "clean up". The agent then guesses or gives up, and you learn about it once the work is over. The repair is a fresh brief and a fresh run, so a single missing sentence costs you the whole job a second time.
One inbox for every worker in flight
The messagebox gives a stuck worker a third option. It asks the session that dispatched it, then waits.
Every question from every agent lands in one inbox, and each one names the job that opened it, so a fleet of four reads as four labelled threads rather than four anonymous processes. The is the only party who can answer any of them. It has the web, its own , and every file outside a worker's scope, while each worker has a brief and a directory.
The orchestrator does not sit and watch the inbox. It arms a single background wait that returns the moment a question arrives, which is what brings the session back to the keyboard. Nothing is checked on a timer.
Telling a stuck worker from a finished one
Answering is a deliberate act, so the orchestrator takes a question before it works on it. That matters as soon as more than one thing is watching: a claimed question is invisible to everything else, so no two answers ever get researched in parallel and nothing has to be reconciled afterwards. A claim lapses on its own if the orchestrator dies holding it, and the question comes back.
The inbox is also the honest view of the fleet. It reports how long each question has waited and when its worker last looked for a reply. So you can see the difference between an agent that is still blocked and holding, and one that gave up minutes ago and is no longer listening. A separate view narrows this to the questions that genuinely wait on you right now, which is the list worth clearing before you do anything else.
Answer, decline, or ask back
Three outcomes, and two of them are cheap.
An answer closes the question, ideally as a pointer rather than a paste: the file, the decision record, the command to run. Where the worker cannot reach the file at all, the answer can carry a copy, delivered outside the worker's own directory so it never shows up as work the agent did.
A decline also closes it. If the worker could have looked the fact up itself, or the call is genuinely the worker's to make, saying so with a reason is a complete outcome and the agent carries on under its own judgement. Declining freely is the thing that keeps the channel from turning into an interruption queue.
If the question itself is unclear, the orchestrator asks back and the thread stays open with the ball on the worker's side.
It will not let you walk away
The failure worth designing against is silence. You dispatch three agents, end your turn to wait on the operator, and one of them blocks on a question nobody is reading. Everything looks fine until the results come back wrong.
A hook refuses to end the turn while a question is waiting, and names it. Declining clears it, so the guard has a legitimate exit and does not become something to route around. Workers are also barred from resolving questions, including their own. A worker that times out and finds an answer command in the same place it learned to ask will use it, and satisfy its own block with something it invented.
Where it sits
It was built alongside the Claude Lane Orchestrator, which dispatches the work, and needs no change to it. The split is clean: the dispatcher owns the job, the tree, and the result. The messagebox owns the conversation about the job and carries no work of its own.
Current state
Active and in use. It ships an agent skill that both sides of the channel load, which is where the judgement lives: when a worker should ask rather than guess, and when an orchestrator should answer rather than decline.