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.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。