Quorum Agents
Enables orchestrating multiple specialist Claude Code agents as a team, with live visualization and agent-to-agent messaging.
README
<p align="center"> <img src="docs/hero.png" alt="Quorum — run your agents as a team" width="820"/> </p>
<p align="center"> <b>Run your Claude Code agents as a real team.</b><br/> Named specialist agents that message each other, debate, converge — and report back to you —<br/> each one a full Claude Code session, visualized live on a desktop canvas. </p>
<p align="center"> <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT license"/></a> <img src="https://img.shields.io/badge/API%20key-not%20needed-brightgreen.svg" alt="No API key needed"/> <img src="https://img.shields.io/badge/cost-your%20existing%20Claude%20subscription-8A2BE2.svg" alt="Runs on your Claude subscription"/> <img src="https://img.shields.io/badge/platform-macOS%20%C2%B7%20Electron-lightgrey.svg" alt="macOS / Electron"/> </p>

Real capture, not scripted: the Team Lead (a normal Claude Code session in the editor) dispatches one task to three automotive agents. They negotiate the split among themselves — you can watch each agent's live terminal — then each reports its own slice back.
No API costs. Really.
Quorum does not use the Anthropic API and never asks for an API key. Every agent is a real claude session started through the official Claude Agent SDK, authenticated by the Claude Code login you already have. If you have a Claude subscription that runs Claude Code, you can run a whole team of agents at no extra cost beyond your plan's usage limits.
Why
Claude Code subagents are fire-and-forget child tasks: they can't talk to each other, and you can't talk to them while they work. Quorum flips the model:
- Every agent is a persistent, named Claude Code session with its own specialty, model, and permission mode.
- Agents message each other — ask questions, split work, object, converge — over a documented MCP tool surface.
- Your own editor session becomes the Team Lead. Quorum exposes a local MCP bridge; the Claude Code session you already work in connects to it and orchestrates the team — decomposes work, collects replies, synthesizes. The intelligence coordinating your agents is the same one you code with.
- Everything is visualized live: message comets fly between agent blocks, violet when the Team Lead speaks, cyan for everything else.
Highlights
| 🧠 External Team Lead | Your editor's Claude Code session drives the team over a local MCP bridge (ask / roster / replies). The lead's block glows when it's working — brighter when it's actively driving the team. |
| 🖥️ Per-agent terminals | Pop out a live terminal for any agent — its full traffic stream, tethered to its block with a curved connector that glows while the agent works. Each terminal has its own composer for one-on-one conversation. |
| 🎯 Mode-aware delivery | How you address the team decides who answers. Plain text → group task for everyone. @agent → that agent answers you directly. Select several blocks → a coordinated group task where each participant answers exactly once, enforced by the bus, not by prompt hopes. |
| 🛒 377-agent marketplace | Ready-made specialist agents (see credits) searchable across every field; "add to team" spawns a live session. Teams cap at 5 agents. |
| 📝 Team memory | Agents record decisions (PROPOSE / OBJECT / ACCEPT) to .quorum/decisions.jsonl; new sessions spawn with a digest of the last decisions and open tasks, and can query the rest on demand. |
| 🗂️ Task board | add_task / claim_task / complete_task with atomic claims — two agents can't grab the same work. |
| ⏹️ ESC interrupts | One key aborts every busy agent's in-flight turn via the SDK's documented interrupt(). Queued messages survive. |
| 🎛️ Per-agent tuning | Double-click a block: switch model (haiku / sonnet / opus / …) and permission mode (read-only / ask-to-write / auto). Model changes restart via --resume, keeping history. |
| 💾 Per-project persistence | Open Quorum on any project folder; its team, layout, decisions, and tasks live in that project's .quorum/. Reopen and continue where you left off. |
| 🏷️ Truthful activity labels | "messaging safety-engineer…", "replying to the user…", "reporting to the lead…" come from actual delivery outcomes on the bus — never guessed from tool intent. |
<p align="center"> <img src="docs/negotiation.png" alt="Agents negotiating task ownership in their live terminals" width="820"/> <br/><i>Agents negotiate ownership among themselves (OBJECT/ACCEPT), each in its own live terminal — running haiku, sonnet, and opus side by side.</i> </p>
How it works
flowchart LR
subgraph editor["Your editor / CLI"]
L["Claude Code session<br/>(the Team Lead)"]
end
subgraph app["Quorum desktop app"]
B["MCP bridge<br/>127.0.0.1:8484"]
Q["Message bus<br/>FIFO queues · turn budgets · delivery rules"]
A1["agent session"]
A2["agent session"]
A3["agent session"]
end
U["You<br/>(composer)"] --> Q
L -- "ask · roster · replies" --> B --> Q
Q <--> A1
Q <--> A2
Q <--> A3
Quorum itself never calls a model. It transports and visualizes messages; all intelligence lives in your Claude sessions. The rules that matter — reply budgets, queuing, delivery guarantees — are enforced in the application layer, not written into prompts and hoped for.
Quickstart
Prerequisites: macOS (developed there; npm start is portable), Node 24+, and Claude Code installed and logged in (claude on your PATH).
git clone https://github.com/birol91/quorum-agents.git
cd quorum-agents
npm install
npm start
- Pick a project folder from the welcome screen (or reopen a recent one).
- Open the Marketplace and add up to 5 agents — or create your own with a name, description, and persona.
- Type in the composer. Plain text tasks the whole team;
@agent-nametargets one; select several blocks to task exactly that group.
Connect your Team Lead (optional, and the best part). In the project where you run Claude Code:
claude mcp add --transport http quorum http://127.0.0.1:8484/mcp
Then just tell your editor session things like "split this refactor across the team and collect their findings" — it will use the bridge's ask / roster / replies tools, and you'll watch the whole conversation play out on the canvas.
Addressing modes
| You write | Who gets it | Who answers you |
|---|---|---|
| plain text | every agent, as a group task | each agent, exactly once, from its own specialty |
@one-agent … |
that agent | that agent, directly |
| select 2+ blocks, then send | exactly those agents | each selected agent, exactly once |
| via Team Lead (bridge) | whoever the lead decides | the lead, with a synthesis |
Agent marketplace — credits
The 377-agent catalog bundled in .claude/agents/ is generated from three excellent MIT-licensed collections. All credit to their authors — Quorum only repackages the prompts with marketplace metadata:
| Source | Agents | What |
|---|---|---|
| wshobson/agents | 126 | The classic Claude Code subagent collection — engineering, cloud, data, security, SEO, business |
| im-hashim/automotive-claude-code-agents | 241 | Deep automotive software engineering — AUTOSAR, ISO 26262, ADAS, EV systems, cybersecurity |
| anthropics/financial-services | 10 | Anthropic's financial-services agent examples |
Regenerate or extend the catalog with scripts/import-agents.mjs.
Design principles
- Documented interfaces only. Agents run through the official Agent SDK; the lead connects over MCP; model switches use
--resume. No PTY automation, no transcript scraping, no state inference — if the answer to "how do we know this?" would be "we guessed from a side channel," the design is rejected. - Mechanism over prompt. Turn budgets, reply grants, queueing, and delivery guarantees live in the app layer where they can't be talked out of.
- The app is not an AI. Quorum produces no content and proxies no model calls. It is plumbing and glass.
Development
npm test # unit tests (bus mechanics, decisions, tasks, team)
npm run typecheck # strict TypeScript
npm run dev # vite + electron with hot renderer
npm run package:mac # build a DMG (electron-builder, arm64)
License
MIT © birol91
Quorum is an independent open-source project built on the official Claude Code CLI and Agent SDK. It is not affiliated with or endorsed by Anthropic; "Claude" is a trademark of Anthropic, PBC. Bundled marketplace agents remain under their original MIT licenses — see credits.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.