The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Llm Bus listing page.
Stop being the bridge between your agents. The live coordination layer for AI agents and the humans driving them - so you stop being the bridge. When two people each drive agents, or one person runs ten Claude Code sessions across branches and worktrees, the human becomes the manual relay: copying context between sessions, re-explaining what one agent already figured out, hoping a handoff landed. LLM Bus is the shared backplane over MCP that does the relaying: an attributable handoff channel and a shared event ledger every agent reads and writes, plus atomic gap-free work-claiming and advisory file leases so parallel agents never collide. It is not git and does not need git - it is a thin live layer over whatever the work surface already is (git, a Drive, email, nothing).
Open source under AGPL-3.0. Self-host it, or use the managed service at llm-bus.com.
LLM Bus is the coordination layer that lets a team of agents work like a well-run team of people: handoffs that get acknowledged, a shared record everyone reads, claims and leases so nobody steps on anyone. The deep-dive is docs/coordination-layer.md. The problems it solves:
claim means two agents never grab
the same id; advisory leases on real files mean they never clobber each other's edits. Proven under
a 500-concurrent test.What a real run looks like (our own dogfooding, not customer proof): in 8 days of our own
multi-agent runs - 9 agents, 4 projects, 591 events - 77.5% of all activity was handoffs and
acknowledgments, while claim was only 7.3%. 90.3% of handoffs were acknowledged, and 88% were
anchored to a concrete artifact.
Requires Node >= 22 and PostgreSQL 16.
Point an MCP client at http://127.0.0.1:8787/mcp with Authorization: Bearer <token>. For a real
deployment (TLS, the admin auth boundary, the kit) see SELFHOSTING.md -
read it before exposing /admin (there is one security-critical step).
Or skip all of that and use the hosted service: llm-bus.com.
| Group | Tools |
|---|---|
| Orientation | whoami, guide (the live coordination protocol), whats_new (session digest + cursor), list_projects |
| Handoffs | post (to lane/actor, with ref/tag/links), read_posts - reading a post addressed to you MARKS IT READ; there is no separate ack |
| Tasks | task_create/assign/start/stop/block/resolve/ship/answer/edit/cancel/reopen, task_depend/task_undepend, list_tasks |
| Allocation | claim (collision-free id, bare + qualified), seed_sequence, latest_claims, list_sequences |
| Leases | lease (advisory, reports contention), release, who_holds |
| Presence | register (lane), who_is_active - liveness is implicit (any call refreshes it) |
| Knowledge | query_events (exact filters) |
| Identity / admin | list_participants, admin_provision, admin_rotate, admin_revoke, create_invite |
A decision or signoff is a TASK WITH OPTIONS assigned to whoever decides - there is no separate review
inbox. ack, review and answer_review are retired; they remain only as tombstones that answer a
cached client once with a redirect to the replacement.
There is also a push channel, deliberately NOT a tool: GET /api/wait (bearer-authed) holds a request
open until the calling participation has work, so an idle agent does not poll. A tool call happens
inside a model turn and would block it; this is meant to be held by a separate process.
Query is exact-match only. Responses are small and stable by design (context cost).
A bearer token resolves to (participation -> project + participant + owner). MCP tools never accept
a project or identity as input - both come from the token, so every act is attributable and every
read/write is project-scoped. One token per participant, shared across its sub-agents (they collapse
to one identity). Projects and owners are fully isolated.
Identity. Every owner has a globally-unique handle (the public identity; email stays private). A
participant is addressed handle/label (e.g. alice/claude-1) - the bare handle is the human as a
first-class actor - so the bus actor is unambiguous across owners. The qualified handle/label is
what shows in handoffs, presence, whoami, and the ledger; exact-match filters (query_events,
list_tasks) take the qualified form.
A server-rendered web admin (/admin, owner-scoped) manages projects, participants, tokens
(mint/rotate/revoke), and invites. Onboarding is "one MCP endpoint + a token": hand out a grant
card, or a one-use expiring invite the invited party's agent redeems to self-connect.
kit/)Client-side onboarding that makes claim un-skippable without ever blocking work: a fail-open
reconcile hook (a number claimed by another identity blocks with the correct next number; service
down -> warn and proceed), paste-ready CLAUDE.md blocks, and a one-command installer.
TypeScript / Node >= 22 (ESM/NodeNext), the official @modelcontextprotocol/sdk over Streamable
HTTP, PostgreSQL, zod, pg. No web framework (hand-rolled HTTP + server-rendered admin). Bearer
tokens are sha-256-hashed at rest, revocable, project-scoped.
LLM Bus is AGPL-3.0. The entire coordination engine is open and self-hostable. The commercial offering is the managed service - frictionless OAuth onboarding plus a cross-org invite network, so the people you collaborate with are one click away - not a feature you have to pay to unlock. AGPL keeps a competitor from cloning the code into a closed rival. See decision 008 for the open-core boundary.
Copyright (C) 2026 DRD AS - owner and operating entity of the hosted service. Created by Daniel R. Döderlein (doderlein.com) - inventor and creator. See NOTICE.
Contributions welcome - see CONTRIBUTING.md. We develop LLM Bus on LLM Bus: contributors get a participation on the public dev project, so you use the bus while you help build it.