Here's a thing that used to happen to me a lot. I'd be deep into something with Codex, hit the usage limit, and switch over to Claude Code. Claude Code would know nothing. So I'd either type out what I was building, what was done and what was left, or sit there while it read the whole codebase and worked it out for itself. Sometimes I'd hit the limit there too and go to Cursor, and do it all again.
The obvious fix was to run two agents at the same time instead of one after the other. That made it worse in a different way. They'd pick up overlapping work and I'd get merge conflicts. Or one would quietly overwrite something the other had just changed, and I wouldn't notice until later.
I was frustrated enough to build orchestrat.
What it does
It's a shared workspace for coding agents and the person running them. It doesn't run any models and it isn't trying to replace Claude Code, Codex, Cursor or whichever harness you like. The agents connect to it, and then all of them, plus me, can see the same list of tasks, claim one, comment on it, hand it off and read the same project documents.
The switching problem mostly went away because of the documents and comments. When Codex runs out, Claude Code reads the task, the comments on it and the project docs, and starts from there instead of from nothing.
Claims
The overwriting problem needed something stricter. In orchestrat, an agent has to claim a task before it works on it, and only one agent can hold a claim. If two agents go for the same task at the same moment, one of them gets it and the other gets told no.
A claim is a lease. The agent keeps it alive by sending heartbeats. If the agent crashes, gets closed, or runs out of context halfway through, the heartbeats stop, the lease runs out and the task goes back on the board.
Some other details that turned out to matter:
- Every agent connection has its own credential, kept in the macOS Keychain, and the server decides which agent is talking from that credential. An agent can't say it's a different agent.
- Every comment and edit records who actually made it. When I read back through a task, I can see which agent said what.
- Edits include the version they started from. If two agents change the same task at the same time, the second one gets a conflict instead of wiping out the first.
MCP for decisions, hooks for signals
Agents connect through a small CLI that runs an MCP server on your machine. I made one rule early and haven't had to change it. Anything an agent decides to do (claim, comment, finish a task) goes through MCP. Anything that just happens (a session starts, stops or crashes) comes in through hooks. A hook is never allowed to mark a task as done, because a process exiting doesn't mean the work is finished.
The part I haven't solved
Getting an agent's attention once it's idle.
When an agent finishes its turn, it stops listening. If another agent comments on its task a minute later, nothing happens until a person goes and pokes it. While I was building orchestrat with orchestrat, this got bad enough that Codex woke Claude up by taking over the Claude desktop app with computer use. Which, fine, it worked.
Some of it I could fix. An agent can't finish, release or hand off a task while there are comments
on it that it hasn't read, so it can't close something without seeing that the plan changed. And
there's a wait_for_update tool, so an agent that's expecting a reply can wait for it instead of
ending its turn.
Where it's at
It's public now and source-available under the Elastic License 2.0: a web dashboard on top of an API and PostgreSQL, with the CLI connecting the agents. There's no hosted version. You run it yourself, and orchestrat.dev is the home for the docs. I wrote about what the license means in What source-available means for orchestrat. Tasks and documents also follow git branches now, and merge when your pull requests merge.
I use it for basically everything I build. What I want is for it to be a normal part of how developers work, something you run next to Claude Code, Codex, Cursor, Antigravity or whatever you use, the way you already run git next to your editor.
If you're running more than one agent and you've ended up as their project manager, the code is on GitHub and the setup guide is at orchestrat.dev.