Every agent is Claude Code
Each role is a headless claude session with its own working directory. On a task it acts — runs Bash, writes and executes code, edits files. Real work, not just chat.
Quorum boots an organization of Claude Code agents in any directory. A coordinator turns your mission into tasks, agents do the real work — Bash, code, files — and the org hires the skills it lacks. You watch and steer from a live dashboard.
$ npx @meffecta/quorum ANTHROPIC_API_KEYQuorum keeps intelligence and coordination separate. The brain — a Claude Code session — does the work of one task. Everything around it, the part in this repo, is how those agents work together.
Each role is a headless claude session with its own working directory. On a task it acts — runs Bash, writes and executes code, edits files. Real work, not just chat.
A coordinator breaks the goal into subtasks with dependencies, assigns each to the best-suited role, and runs them in order — independent work goes in parallel.
When a task needs a skill the team lacks, the org employs a specialist. Managers delegate down the reporting tree, then review and integrate what comes back.
No agent grades its own output. An independent reviewer scores every task 0–100; anything below the bar is sent back for rework before it ships.
Every call is metered to a ledger. Daily, monthly, and lifetime caps halt the loop — and an operator stop kills in-flight work immediately, not next tick.
A live dashboard shows the org chart, task board, spend, and an audit feed — and lets you message the whole org or reply to a single agent in character.
The runtime runs one cycle on a fixed interval (default 10s). A cycle is a pure function over a persisted board — so a crash simply resumes on the next tick. Five steps, then it loops.
Your messages become goals on the shared board, oldest first — a burst is never silently reordered.
One goal is chosen by fair rotation. The team meets, debates, and the decision seeds a decomposition into a task DAG.
Every ready task across all goals runs in dependency order, bounded-concurrent. Hires and delegations drain within the cycle.
An independent reviewer scores each result. Below threshold returns for rework with feedback; an unparseable verdict fails closed.
Progress and spend are recomputed. A goal is done only when every one of its tasks is. Then the loop turns again.
Drop a QUORUM.md in the directory and it is the org:
a title, a budget, a mission, and one ### section per agent whose
heading is its role and whose prose is its system prompt.
key: value line is metadata; every other line is prose.reports to names a manager; omit it to sit at the top and coordinate.## Triggers section seeds goals on a schedule, an inbound webhook, or a finished process.# Acme Labs
A two-person studio shipping weekend projects.
- budget: 25
- provider: { "type": "claude", "model": "claude-opus-4-8" }
## Mission
Launch the landing page and collect 100 signups.
## Agents
### CEO
You are the CEO. Set direction, break the mission into tasks, delegate.
### Engineer
- reports to: CEO
- capabilities: { "cms": "allow" }
You are the engineer. Build what's asked and verify it works.
Each agent gets a set of tools gated by a capability policy, resolved
per-agent → org default → base. allow grants the tool;
deny withholds it; ask withholds it and routes
an approval request to you.
Every claude call reports its cost, appended to a ledger with running
totals. Set caps in the file, by env var, or with --budget.
quorum --budget 25 # halt for good at $25 spent
BUDGET_DAILY_USD=5 quorum # skip cycles past $5/day
Open localhost:3000. The terminal is output-only — everything
you do to the org, you do from the dashboard.
$ npx @meffecta/quorum --mission "Build and launch a tiny SaaS" --budget 20 Got a feature request? We'd love to hear it.