RC2026

Multi-Agent Orchestration

·
NOV 2026 · PROTOTYPE

Paradev Office

A city of your projects where every running coding agent has a desk: see who needs you, answer their questions, seat agents from different repos together, and get work back only after a second agent has checked it.

Artifacts

Stack

Multi-Agent OrchestrationDeveloper ToolsElectron + PhaserAgent GuardrailsHuman-in-the-Loop

Synopsis

Paradev is an open-source desktop app for running coding agents: each task gets a git worktree, a terminal and whichever CLI agent you pick. Once several agents run at once, the work turns into a row of terminals. You check each tab to find the one stuck on a question, agents in different repositories can't ask each other anything, and the only sign a task is finished is the agent saying so.

In November 2026 I built the City and the Office on a fork of the app. Every project is a building, every workspace a room and every running agent a named teammate at a desk, drawn from what the app already tracks. From the City a person can see who is working, finished or waiting, answer an agent's on-screen question by name, seat agents from different repositories in one room so they talk by @mention, hand work to another workspace, and give an agent a task that a check command and a second agent verify before it comes back. Agents can talk to each other, but guards outside the model bound every exchange, and a person can stop any of it.

It is a prototype on my fork, built and tested in the running app against small demo repositories. The screenshots on this page are from those test runs.

Every coding agent you run, at a desk you can walk up to, with a person deciding what is done.

The City view in the Paradev desktop app: four pixel-art buildings on a dark grid, the Office (3 idle) and three demo projects, city-demo-api (1 done), city-demo-web and city-demo-ops (nobody in). Lit windows mark agents. A 'Needs you' bar under the header shows one item: 'Done, take a look', Bolt, Add health check, 22 minutes ago. The sidebar lists the projects and their workspaces.
Every project is a building and every running agent a lit window. The bar on top lists what is waiting for you, most urgent first.
Product features
#1

Watch

Inside a building, each workspace is a room and each agent sits at a desk with its name and status. Its panel shows the conversation, where it works and a link to its terminal.

My partI built the City and the floors: buildings drawn from the app's own projects, workspaces and agents, window and bubble colours from each agent's status, names that follow an agent to a new terminal, a Map and List view, and the 'Needs you' bar.

Inside the city-demo-api building: an agent named Bolt sits at a desk with a speech bubble saying 'Done, take a look', next to the 'Add health check' room sign. Bolt's panel on the right shows its kind and @bolt handle, the workspace it works in, a Done status, where it sits, 'Hand its work to another workspace…', and its conversation, in which it introduces itself as Bolt.
#2

Talk

Agents from different repositories sit in one meeting room and talk by @mention. Each keeps its own workspace and branch; only the messages move between terminals.

My partI built seating and room talk: an answer that mentions a roommate is typed into that roommate's terminal with who it is from, an answer of 'no reply' is never passed on, and a room pauses after 8 messages without a person. In one test, two agents in separate repositories wrote and tested a server and its client in about 20 seconds, with 4 turns in all.

The meeting room panel with two agents seated, one from the Check health workspace and one from Plan release, both Done. The person asks @claude-plan-release to ask @claude-check-health which files are in its folder; the first asks the question, the second answers that its folder in city-demo-api holds README.md, count.txt and health.txt, and the first reports the answer and stops without mentioning anyone. The office floor on the left shows both agents in the meeting room.
#3

Answer

When an agent stops at its own on-screen menu, such as 'Trust this folder?', the City spots it, raises it in the bar, and lets you answer with a named button.

My partI built the screen reading: no event fires while a CLI waits at its own menu, so the City reads the terminal's screen every 2.5 seconds, finds the menu and turns each option into a button that sends the right arrow keys and Enter. A blind Enter would have quit one CLI, whose trust menu starts on 'No'.

The city-demo-ops floor with a Codex agent named Milo at a desk in the Rotate logs room. The 'Needs you' bar shows 'Asks to trust this folder, Milo'. Milo's panel shows 'Milo asks: Trust this folder?' with two buttons, 'Trust and continue' and 'Quit', above a copy of its terminal screen (the folder path is blurred) and the raw arrow, Enter and Esc keys.
#4

Check

Give an agent a task with what done means and a check command. When it reports done, the check runs and a second agent reviews the diff before the task reaches you.

My partI built checked tasks: the brief typed into the agent's terminal, the commit it started from, the check command, a checker agent that changes nothing and ends with PASS or FAIL, up to 3 rounds back to the agent, and close, send back or ask for a pull request from the card. Here the checker passed the task in about 10 seconds.

Iris's panel with task C-1, Add HEALTH.md, marked 'Checked, ready for you'. It shows the agent's report (it created HEALTH.md containing 'ok' and committed it on main with no other changes), the check command passing, and the checker Otto's verdict that the commit adds only HEALTH.md with the single line 'ok', above the buttons 'Ask for a pull request', 'Close' and 'Send back…'. The 'Needs you' bar reads 'Checked, ready to close · C-1 Add HEALTH.md'.
#5

Reconnect

If an agent's terminal stops, the agent stays at its desk marked disconnected. Reconnect resumes the same conversation in a new terminal with its name, seat and task.

My partI built the terminal watch: a dead terminal is flagged in about 20 seconds instead of the roughly 10 minutes the app took to notice, Reconnect resumes it through the app's own resume path, and an open task gets one 'your terminal restarted, carry on' message once the agent is back.

The city-demo-api floor with three disconnected agents. The 'Needs you' bar lists Disconnected chips for Iris and Nova. Nova's panel explains that its terminal stopped, maybe because the app restarted, and that Reconnect continues the same conversation in a new terminal with its name, seat and task, above Reconnect and Remove buttons and its open task C-4, Add WAIT.md.

Architecture

System Layers

City and Office floors

Phaser scenes in the desktop renderer. The City draws one building per project, one floor per workspace and one window per agent, lit by status. A building opens on its office floor: a map built in code from walls, doorways and floor materials, with rooms, desks, a camera that follows you, and DOM overlays for name tags, room signs and panels. A Map and List switch and the 'Needs you' bar sit on top.

Iglobe

City rooms (host service)

Seats, names, room talk and hand-overs, kept in the app's home folder and served over tRPC. It listens to the app's agent lifecycle events; when an agent stops, it reads the agent's last answer from its own transcript and types it into the terminal of every roommate it mentioned, with who it is from and how to answer.

IIserver

Office teammates over ACP and MCP

The Office's own teammates are long-lived agent sessions driven over the Agent Client Protocol, with office tools served over MCP: say, set_status, who_is_here, read_thread and the task tools. Presence comes from the session stream, and CLI agents seated in the Office join its rooms as guests.

IIIcpu

Delivery guards

Every message from one agent to another is a hand-off record with a hop depth from the person who started it. Past 3 hops, 6 agent posts in a thread without a person, 3 teammates pulled in by one turn or 60 turns a teammate a day, the message is held with a visible reason. Repeated asks are dropped, a paused teammate refuses, and a person writing 'stop' cancels the thread.

IVlayers

Tasks and the terminal watch

Tasks live next to the City's state with the commit each started from, a check command and a checker. A terminal watch compares the app's agent records with the terminal daemon's live sessions, so an agent whose terminal died shows as disconnected instead of idle.

Vdatabase

Execution Flow

5 steps
  1. Step 01

    A person gives a task

    From an agent's panel: a title, what done looks like, an optional check command and which agent checks it. The commit checked out at that moment is kept as the base, and the brief is typed into the agent's terminal.

  2. Step 02

    The agent works and reports

    It works in its own workspace and ends with TASK DONE or TASK BLOCKED. When it stops, the City reads that last answer from its transcript.

  3. Step 03

    The check runs

    The check command runs in the workspace. A failure goes back to the agent with its output as the next round.

  4. Step 04

    A second agent reviews

    A checker starts in the same workspace with the base commit, the report and the check result, and answers PASS or FAIL. A FAIL goes back to the agent; after 3 rounds the task is blocked.

  5. Step 05

    It reaches the person

    A passed task shows as 'Checked, ready to close' in the bar. The person closes it, sends it back with a note, or asks for a pull request, and the card records the link.

  6. Done

Core Engineering

Field Notes
01

One view built from what the app already tracks

The City joins the app's projects, this machine's workspaces and the agents running in their terminals, and takes each agent's status from the same rules as the sidebar, so watching adds nothing that runs on the host.

Buildings, floors and windows follow from that join; opening a finished agent marks it seen, the same as focusing its terminal.

03

Guards outside the model

Agents are told the rules, but the office enforces them: hop depth from the person, agent-only rounds per thread, teammates pulled in per turn, a daily turn budget, dropped repeats and a person's 'stop'.

City rooms pause after 8 passed messages without a person until someone speaks or resumes them.

05

Answering on-screen questions by name

A CLI waiting at its own menu, such as 'trust this folder?' or a permission prompt, fires no event and looked idle.

The City now reads the screens of agents that haven't finished a turn every 2.5 seconds, recognises a menu by its cursor and footer, and raises it as 'Needs your OK'. Each option becomes a button that sends the arrow keys from the cursor to that option, then Enter.

07

Agents whose terminal stopped

After a restart or a crash an agent's terminal could be gone while the City still drew it as idle; the app only marked it ended after two missing checks five minutes apart.

A terminal watch now compares the daemon's live sessions every 10 seconds and flags a terminal missing twice in a row, so a dead agent shows as disconnected in about 20 seconds. Reconnect resumes it through the app's own resume path with its name, seat and task, and an open task gets one message to carry on.

Time to flag an agent whose terminal died
Before~10 minAfter~20 s
02

Messages move, work stays put

An agent can sit in any room in the City, but its workspace, folder, branch and terminal never change by sitting.

A newcomer gets one note: the room, its own @handle, who else is there and where they work, and to write only 'no reply' when it has nothing to add. Reading the agents' records after the first test showed a welcome message and a polite closing each costing a turn; after the fix, two agents in separate repositories wrote and tested a server and its client in about 20 seconds with two messages passed and 4 turns in all.

04

Hand-overs only when a person says so

Moving work to another workspace is separate from sitting.

A hand-over asks the agent for a brief (what was asked, what is done, what is left, the files and decisions that matter), starts a new agent in the target workspace through the app's own launch path with that brief, and seats it where the old one sat. An agent can ask for a hand-over by writing a request line; it waits in the bar until the person approves or declines it.

06

Checked tasks

A task types a brief into the agent's terminal: what to do, what done means, its folder and branch, what will check it, and to end with TASK DONE or TASK BLOCKED.

On TASK DONE the check command runs in the workspace, then a checker agent in the same workspace reads the diff from the starting commit and answers PASS or FAIL without changing anything. A failure goes back as the next round, up to 3; a pass reaches the person, who can close it, send it back with a note, or ask the agent to open a pull request.

08

Names and identity

Every agent gets a short name (Ada, Milo, Iris) and an @handle that is the same in every room.

A name follows its agent into a new terminal and is kept for a day after it stops, and the first thing the City types into an agent tells it who it is and where it works, so agents answer to their names. Renames that clash are refused.

Reflections
Outcomes
  • “Read the screen when there is no event. A CLI waiting at its own menu fires nothing, so it looked idle; reading its terminal was the only way to know it needed a person.
  • “Keep the work where it is. Letting agents sit anywhere while their folder and branch never move made cross-repository talk safe; moving work became a separate hand-over a person approves.
  • “Turns are the cost. A welcome message and a polite closing each cost a turn; a note on arrival and never passing on 'no reply' removed both.
  • “Guards belong outside the model. Hop limits, agent-only rounds and a person's stop are enforced by the office, not asked of the agents.
  • “Done should mean checked. A check command plus a second agent that cannot change anything turns 'the agent says it's done' into something a person can close in one click.
Next Steps
  • Token and money budgets per task, not only rounds and daily turns.
  • Remote and cloud hosts in the City; today it shows only this machine's workspaces.
  • Hand-overs into a new workspace, not only an existing one.
  • Move the floor scene and overlays the City borrows from the Office into one shared place.

One Last Thing

The core challenge: Running several coding agents at once means a row of terminals. You find out an agent is stuck on a 'trust this folder?' prompt by opening each tab, agents in different repositories can't ask each other anything, and 'done' means whatever the agent says. Letting agents talk to each other is only safe if a loop between two of them stops on its own, a person can stop any of it, and finished work is checked by someone other than its author before a person spends time on it.

More from the Archive

View All