dispatch
Sessions waiting on you:0finished:0· all quiet
Sign inGet early access

Mass-dispatch dashboard/Windows/v0.1.16

The minutes after
an agent finishes
are the ones you lose.

A Claude Code session that finishes its turn goes quiet, and one blocked on a permission prompt prints exactly as much — nothing. Dispatch is told which is which by the sessions themselves, counts them in the top bar of this page, and puts them in one list you answer from. What you get back is the gap between a session stopping and you noticing.

A Dispatch workspace running four Claude Code sessions at once. One session in vantage has finished and reports that it fixed a race in useAuth. Two — in Aura-Tycoon and meme-factory — are blocked waiting on you: one asking permission to run a Rojo build, the other asking which of two test runners to fix. A fourth, in trendscout, is still working. The activity chip in the top bar reads two waiting, one finished.

One command into four repos. Seconds later: one finished, one still working, and two waiting on an answer. The gold pulse is the product — a tile saying it has stopped spending tokens and started spending you.

Discovered
Every project under your root, grouped
Broadcast
One bar into every targeted shell
Not guessed
Built from Claude Code hooks
Platform
Windows · Electron · ConPTY
01

The bell means a session needs you.
It does not mean the work is done.

waiting on you

A Claude Code session that finishes its turn goes quiet without ringing. Across six workspaces, that is work completing somewhere you are not looking — and a session blocked on a permission prompt prints exactly as much as one that has finished, which is nothing. So the top bar counts both, and Ctrl+Shift+A opens the list.

The Deck, opened with Ctrl+Shift+A. Two sessions are waiting on you: one in Aura-Tycoon asking permission to run a Rojo build, shown with the four rows of its own screen that the question was read from, and buttons for each of the three options it printed; one in meme-factory asking which of two test runners to fix. Below them, one session in vantage that finished while you were elsewhere, leading with the sentence it finished on. One session is still working and three have already been seen, both collapsed to a single line because neither is asking for anything.

The sessions say this themselves

Dispatch runs a small loopback endpoint, and Claude Code posts to it when a turn starts, when it ends, when a permission prompt appears and when a session goes away. So finished means the turn ended and waiting on you means there is a dialog on screen. Guessing from silence files the one session that is stuck on you under finished.

It fails closed

Reading which screen is asking something is the one thing Dispatch parses, because it is the one thing no session can report for itself. Where it can't tell, you get the rows and no buttons — never a button for a question that was never asked.

It only counts what you haven't seen

A session you are looking at is never in the count, and one drops out the moment you visit it. So the chip reads · all quiet whenever you are on top of things, rather than growing a permanent tally you learn to ignore.

02

Terminals that open themselves.

MCP

The broadcast bar is one command into many terminals. This is the other half — many different jobs into many terminals. Keep one session as the lead: a tile you talk to rather than work in.

The lead session

“I've got BUG-114 in vantage, BUG-118 in Aura-Tycoon, and two chores in meme-factory. Set them up.”

The command is typed into each shell and left sitting at the cursor — not run. You read down the row, see exactly what each one is about to do, and press Enter on the ones you agree with. Ask for mode: "fired" when you'd rather they just go.

All-or-nothing

Every project reference is resolved before anything is created, so a plan naming a repo that can't be found opens no terminals rather than half of them. A name matching more than one project is an error listing the candidates — never a guess, because a tile opened in the wrong repo is an agent working confidently on the wrong code.

It never disturbs what you're doing

Tiles land in a new workspace by default; pass workspace: "current" to add them to the one on screen. And the tools talk to the live window over a local named pipe — when Dispatch isn't running, every tool says so rather than guessing.

The tools11 exposed over MCP
dispatch_projects
Every project it can open, with path, group, type and git branch. The lead calls this first to map tickets to repos.
dispatch_plan
Opens a set of terminals in one go — the main one. A tile can carry a doc instead of a prompt.
dispatch_list
What's open now: project, title, still-armed, waiting-on-you, exited — plus each terminal's status and how long it's been quiet.
dispatch_send
Types into an open terminal; multi-line text is pasted as a block.
dispatch_read
Reads a terminal's text back out — including edits not yet saved, on a document tile.
dispatch_wait
Blocks until a session rings, exits or goes quiet, then says which and why. Supervision without polling.
dispatch_doc
Opens a markdown file as a live, two-way tile beside the work.
dispatch_studio
Starts and stops a playtest in the Studio linked to a tile, from inside Studio — so it needs no window focus and no keystrokes, and it reports the state it actually reached.
dispatch_rojo
The sync switch from a session — which makes "check before you edit" something an agent can do.
dispatch_workspace
Switches to, renames, or closes a workspace.
dispatch_close
Closes a tile and ends its shell.
03

One command. Every repo.
Still a real shell.

✓ the mechanism

Type in the bar, press Enter, and the command goes to every targeted terminal — the ones whose checkbox is ticked. All and None target everything or nothing; when several groups are open, group chips let you target just one shelf of repos.

Interrupt all of them

Ctrl-C sends an interrupt to every targeted terminal; Clear clears their screens.

Then type into one

Click any single terminal and use it normally. It was never a log pane — it's a full interactive shell.

Pin the ones that matter

Auto-discovery groups projects by category. Pin what you're on, hide the noise, and Ctrl+Shift+P fuzzy-opens any of them.

04

Six contexts, none of them
each other's problem.

Each workspace remembers its own terminals, columns, tile heights and broadcast targeting — and switching keeps the other workspaces' processes running. Broadcasting only ever hits the active one.

Per-workspace roots

Each workspace scans its own root folder, so one can be your Roblox games directory while the next is your JS/web directory. Pins, hidden projects and recents are shared across all of them, because they're stored by full path.

A workspace for one folder

Right-click a project row or a group header and pick New workspace for this folder. You get a tab named after it with its root already pointed at it — nothing is opened for you, the tab is just already aimed.

Minimize, don't close

The button drops a tile out of the grid and leaves a card in a bar underneath. The shell keeps running; the card still goes gold when that terminal rings, and strikes through when its process exits.

Documents as tiles

A markdown file opens as a tile beside the work, rendered rather than raw, and live in both directions — so a plan an agent just wrote gets read next to the session that produced it.

05

Know whether Rojo is
actually synced.

synced

A Rojo workflow has two ends, and Dispatch only ever owned one: rojo serve runs in a tile, while the Connect that makes Studio listen lives in Rojo's own plugin. Forget that click and editing a project looks exactly like editing one that is synced — the files change, the place doesn't, and the first sign is a playtest behaving like the code from twenty minutes ago.

The chip is a switch: click it amber and it connects, click it green and it disconnects. Clicking Serve opens a terminal running it — its own tile, in that project, because rojo serve holds a terminal for as long as it runs.

Stated plainly: Studio gives one plugin no way to call another, so there is no API to press Rojo's Connect with. What Dispatch does is bring the window forward and type the shortcut you've bound to Rojo's Connect/Disconnect action. It reports the state it actually reached rather than the keystroke it sent — so a chip that stays amber tells you something real: nothing is bound to that chord, or Studio has a modal in front of the place.

Window-level, and nothing deeper

A tile can be pointed at a running Studio window, and its header carries a chip naming the place that window has open. Click to bring Studio to the front, shift-click to raise it without moving it, right-click for its home monitor. Which windows exist, what each has open, where they sit — nothing reaches inside.

Close Studio and the chip stays

It names the place it is still pointed at — and clicking it opens that place, rather than telling you it is shut. The plugin names itself on the way in, so every handshake carries the place's id.

06

One tier. Nothing withheld.

Dispatch

$6/ month

or $60 / year2 months free

  • 3 machines per licence
  • Every feature — no gates, no add-ons
  • 14-day trial, no card
  • Auto-updates that never restart your terminals
Full pricing →

Not charging yet.

Windows build, in private release. Leave an address and you'll get one email when the trial opens — nothing before it, nothing after.

No endpoint configured. Set WAITLIST_ENDPOINT in src/lib/site.ts to any provider that accepts a POST — then this bar goes live.