@meffecta/quorum
v0.4.3
Published
An autonomous organization of AI agents — boot it in any directory and steer it from a live dashboard.
Readme
Quorum
Quorum is a simulated organization of autonomous agents, where every agent is a Claude Code session. Agents have roles, talk over a shared message bus, gather for documented meetings, and do real work — they run Bash, write and execute code, and edit files in their own working directory. A coordinator breaks the mission into assigned tasks; agents execute them; the org can hire new agents when it needs a skill it lacks. The whole org runs continuously and on its own, pursuing its mission, while you steer and watch it from a web dashboard.
Requirements
- Node.js ≥ 18 — to run the launcher (
npxneeds it too). The CLI itself is a self-contained binary; the npm package picks the right one for macOS (arm64/x64), Linux (x64/arm64), or Windows (x64). - The
claudebinary on yourPATH(runclaudeonce to log in), or anANTHROPIC_API_KEYin your environment. Every agent's brain is a headlessclaudesession. SetCLAUDE_BINifclaudelives somewhere offPATH.
Agents execute real, unrestricted shell commands on your machine, headlessly — a running turn has no per-command approval, and each agent's working directory is a convention, not a container. Capabilities (allow/ask/deny) and budgets are the control surface; for hard isolation run the org inside a VM or container. Each
claudecall costs money — use a model and budget you're comfortable letting run unattended — see Cost & budget.
Quick start
An org lives in a directory — the directory is the org, like git init, one
directory per org. In an empty directory:
# scaffold a starter QUORUM.md with a mission
npx @meffecta/quorum init --mission "Build and launch a tiny SaaS"
# edit the QUORUM.md it wrote (team, mission, budget), then boot the org:
npx @meffecta/quorum --budget 20Or install it once and get a global quorum command:
npm install -g @meffecta/quorum
quorum init --mission "Grow a newsletter to 1,000 subscribers"
quorum --budget 20Open the dashboard at http://localhost:3000 — that's where you both watch the org and talk to it. The terminal just prints activity; it takes no commands.
Three ways to get a QUORUM.md:
quorum init— scaffolds a starter (a solo CEO with a budget who hires the rest of the team on demand).--mission "..."fills in the mission.quorum init --prompt "..."— oneclaudecall drafts the whole file from a plain-words brief (e.g.--prompt "a newsletter studio: an editor leading a writer and a researcher"), which you review and edit before starting.- Start from a sample — copy a ready-made org from the
QUORUM.md guide as your
QUORUM.md.
QUORUM.md — the whole org in one file
One Markdown file defines the entire org. Edits take effect on the next boot.
# Acme Labs
A two-person studio shipping weekend projects.
- budget: 25
- defaults: { "provider": { "type": "claude", "model": "claude-opus-5" } }
## 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.The rules, in one sentence: a key: value line (optionally - bulleted) whose
key is recognized is metadata; every other line is prose. The # title
is the org name and the prose under it its description; ## Mission is the
mission (required); each ### under ## Agents is one agent whose heading is its
role and whose prose is its system prompt. Unrecognized ## sections are ignored,
so the file can hold notes for humans too.
- Org-level keys (under the title):
name,description,budget(a bare number means a lifetime USD cap),defaults,provider. - Agent keys (under a
###):id,role,goal,reports to,provider,capabilities.
A mission is required — quorum prompts for one at the terminal if you don't
provide it, and won't start missionless in a non-interactive shell. Full
annotated reference: https://quorum.meffecta.com/docs/quorum-md.
Common flags
start is the default command (just quorum). Useful flags:
| flag | what it does |
| --- | --- |
| --dir <path> | org home to boot (default: current directory) |
| --mission <text> / --mission-file <file> | override the mission |
| --budget <usd> | lifetime spend cap — the org halts when it's reached |
| --port <n> / --host <h> | where the dashboard listens (default 3000) |
| --tick <ms> | pace of the autonomous loop |
| --concurrency <n> | max tasks running at once |
| --claude-bin <path> | path to the claude binary |
| --headless | run without opening the dashboard |
| --no-eval / --eval-threshold <n> | disable or tune the review-and-rework loop |
Run several orgs side by side by pointing each at its own dir and port:
quorum --dir ~/orgs/acme --port 3000
quorum --dir ~/orgs/beta --port 3001The dashboard (chat + observe)
The dashboard at http://localhost:3000 is the control plane. It shows the
org chart, the employed-agents roster, goals, the task board, pending requests,
spend, and a live activity feed — and a chat at the top. From the chat you:
- Message the whole org — a directive that steers its work (and becomes a goal).
- Message a specific agent — pick them from the dropdown; that agent replies directly, in character.
Agents also raise requests for things they can't do themselves (provision an account, grant access, approve a budget, answer a question). Each pending request has yes / no / answer… — your answer is written into the requesting agent's memory so it uses it next turn.
Tools & permissions
During a task each agent gets a set of tools, gated by a capability policy (allow / ask / deny):
| capability | grants | default |
| --- | --- | --- |
| code | Bash, Read, Write, Edit, Glob, Grep | allow |
| consult | Task (spawn sub-agent consultants) | allow |
| web | WebSearch, WebFetch | allow |
| delegate | hand a subtask down to a report | allow |
| hire | employ a new specialist on demand | allow |
Set defaults under the title (defaults.capabilities) and overrides per agent
(capabilities under a ###). Resolution is per-agent → org default → built-in.
Cost & budget
Every claude call reports its cost, appended to a ledger with running totals.
- Dashboard: the Status panel shows today's and this month's spend.
- On disk:
logs/cost/ledger.jsonlrecords every call — spend, tokens, running totals.
Budgets cap autonomous spend — set them in QUORUM.md (- budget: ...), via
env vars, or with --budget (a CLI flag beats both). When a daily, monthly, or
lifetime cap is reached, the runtime stops spending.
BUDGET_DAILY_USD=5 BUDGET_MONTHLY_USD=100 quorum
quorum --budget 25 # halt for good at $25 total spentLearn more
- Docs & guides: https://quorum.meffecta.com
- QUORUM.md reference: https://quorum.meffecta.com/docs/quorum-md
- CLI reference: https://quorum.meffecta.com/docs/cli-reference
- Cost & budget: https://quorum.meffecta.com/docs/cost-and-budget
© Meffecta. All rights reserved.
