CLI reference
Every command and flag for the quorum CLI — start, init, clean, secret, analytics — plus the environment variables they respect.
Last updated
The quorum CLI treats the current directory as the org home,
unless --dir says otherwise. Running with no subcommand starts the org
defined by the directory’s QUORUM.md.
quorum [command] [options]
quorum start — the default command
Run the org defined by the directory’s QUORUM.md, preparing the org home’s
runtime folders on the first run. This is what a bare quorum (or
npx @meffecta/quorum) does. The QUORUM.md must already exist — without one,
quorum refuses to start and points you at quorum init (or use --prompt to
draft one and boot it in the same command).
quorum # boot the org in this directory
quorum --mission "Launch a tiny SaaS" --budget 20 # seed a fresh org's mission + cap
quorum --prompt "a newsletter studio: an editor, a writer, a researcher" # draft QUORUM.md, then boot
quorum --dir ~/orgs/acme --port 3001 # another org, on another port
Options
| flag | meaning |
|---|---|
--dir <path> |
org home directory (default: current directory) |
--env-file <file> |
env file to load (default: <org home>/.env if present); shell values win |
--mission <text> |
the org’s mission — provide it here or in QUORUM.md’s ## Mission, not both; seeds a new org |
--mission-file <file> |
file containing the mission text (mutually exclusive with --mission) |
--prompt <text> |
draft a QUORUM.md from a plain-words brief (one claude call), then boot it — the empty-dir shortcut (conflicts with --mission/--mission-file) |
--budget <usd> |
lifetime spend cap in USD — the org halts at the cap |
--port <n> |
dashboard port (default 3000, walking up if taken; an explicit port is fixed; or $PORT) |
--host <host> |
dashboard bind host (default 127.0.0.1; binding beyond loopback auto-generates a control secret for steering, but read-only endpoints stay open — see Dashboard) |
--tick <ms> |
autonomous cycle interval in ms (default 10000) |
--concurrency <n> |
max concurrent tasks per cycle |
--no-eval |
don’t evaluate completed work |
--eval-threshold <n> |
minimum evaluation score to accept work |
--claude-bin <path> |
path to the claude binary (default: claude on PATH) |
--headless |
run without the dashboard server |
--keep-awake |
keep this machine awake while the org runs — like caffeinate (macOS & Linux; or QUORUM_KEEP_AWAKE) |
--clean |
start fresh — delete the org’s runtime state first (board, logs, memory, jobs); keeps QUORUM.md, skills, and credentials. The flag is the consent — no extra prompt |
--force |
scaffold even into a non-empty directory |
--mission only seeds a new org. On a restart the org runs on its already-saved
goal board, so a --mission passed to an existing org is ignored (with a warning).
A brand-new org with no mission from any source prompts for one at the
terminal, and is refused rather than started idle when there’s no TTY.
--prompt drafts the QUORUM.md and immediately boots it — the one-command path
for an empty directory. It won’t overwrite an existing QUORUM.md (pass --force
to draft over one). Use quorum init --prompt
instead when you want to review and edit the drafted file before spending anything more.
--keep-awake stops the host machine idle-sleeping for as long as the org runs, so
a run left to work unattended keeps going instead of stalling when the laptop dozes
off. It holds the OS’s own inhibitor (caffeinate on macOS, systemd-inhibit on
Linux), released the moment quorum stops — the display may still sleep; only system
sleep is held off. On an unsupported OS it prints a note and starts anyway. Set
QUORUM_KEEP_AWAKE=1 to make it the default for every run on this machine.
quorum init — scaffold without starting
Prepare an org home so you can review and edit its definition before spending a
token. init never starts the org.
quorum init # write a starter QUORUM.md
quorum init --prompt "a newsletter studio: an editor, a writer, a researcher"
quorum init --dir ~/orgs/acme --mission "Ship v1"
Options
| flag | meaning |
|---|---|
--dir <path> |
org home directory (default: current directory) |
--env-file <file> |
env file to load (default: <org home>/.env if present) |
--mission <text> |
seed the starter file’s mission |
--mission-file <file> |
file containing the mission text |
--prompt <text> |
describe the org in plain words — Claude drafts its QUORUM.md for review (one call; conflicts with --mission/--mission-file) |
--claude-bin <path> |
path to the claude binary |
--force |
scaffold into a non-empty directory / draft over an existing QUORUM.md |
- Bare
initwrites a minimal starterQUORUM.md(a solo CEO with a budget) and prepares the runtime dirs — fully offline. init --promptspends one claude call to draft the file, validated against the real parser. Booting it never calls the LLM again. To draft and boot in a single command, pass the same--prompttoquorum(the start command).- An existing
QUORUM.mdis left untouched (pass--forceto draft over it).
quorum clean — reset to the definition
Delete the org’s runtime state — the goal board, task board, logs, ledgers,
agent memory, and scheduled jobs — so the next start begins fresh from
QUORUM.md. Everything you authored stays: QUORUM.md, skills/, .env,
and any file quorum doesn’t recognize. Credentials survive too — the secrets
store and browser profiles (their logins) are kept unless --all.
quorum clean # lists what will go, then asks
quorum clean --dir orgs/acme --yes # no prompt (required when there's no TTY)
quorum clean --all # full reset: secrets and browser logins go too
quorum clean --teardown # also remove the org's live Cloudflare resources
quorum --clean # wipe runtime state, then boot — one command
Options
| flag | meaning |
|---|---|
--dir <path> |
org home directory (default: current directory) |
--all |
also delete stored secrets and browser profiles (their logins) |
--teardown |
also tear down external resources the org provisioned (Cloudflare Workers, D1, KV, R2, queues) via wrangler |
--yes |
skip the confirmation prompt |
clean refuses a directory without a QUORUM.md, so a mistyped --dir can’t
wipe an unrelated folder. It’s for a stopped org — don’t clean under a
running one.
External resources
An org doesn’t only keep local state — it can provision things that live on
Cloudflare: a Worker serving the product, a D1 database, KV namespaces, R2
buckets, queues. A plain clean resets the local home but leaves those running
(and some cost money). So clean reads what the org built — every wrangler.toml
under the workspace, plus the service registry — and, when it finds live
resources, lists them with the exact wrangler commands to remove them
before wiping. Nothing is silently orphaned.
Pass --teardown to have clean run those commands for you (best-effort: each
resource is attempted, failures are reported, then the local clean proceeds). It
needs wrangler on the path and a Cloudflare token with permission to delete.
Registered services on other hosts can’t be driven by wrangler, so they’re
listed for you to remove by hand.
quorum secret — the org’s credentials
Store the tokens the org needs to act in the world — a GitHub token, a
Cloudflare API token — and grant them to specific agents. A granted secret is
injected into that agent’s task sessions as an env var named after it
(github-token → GITHUB_TOKEN); values never appear in prompts, memory,
logs, or the listing. See
Secrets & credentials.
pbpaste | quorum secret set github-token --grant builder # value via stdin
quorum secret set cloudflare-api-token <value> --grant '*' # or as an argument
quorum secret list # names, env vars, grants — never values
quorum secret rm <name>
Options
| flag | meaning |
|---|---|
--dir <path> |
org home directory (default: current directory) |
--grant <ids> |
(set) agent ids to grant, comma-separated — or '*' for every agent |
Prefer piping the value on stdin — an argument lands in your shell history.
quorum analytics — anonymous usage stats
Quorum reports anonymous, aggregate usage stats (on by default, off in CI) to guide development. It sends the shape of usage — never your mission, files, prompts, or any content. The choice is machine-global, covering every org you run.
quorum analytics status # what's collected, whether it's on, and why
quorum analytics disable # opt out (remembered across every org)
quorum analytics enable # opt back in
DO_NOT_TRACK=1 or QUORUM_ANALYTICS_DISABLED=1 also turn it off for a run. See
Analytics & privacy for exactly what is and isn’t collected.
Environment variables
Flags win over env vars, which win over file defaults. The variables the CLI and runtime read:
| variable | equivalent | meaning |
|---|---|---|
ANTHROPIC_API_KEY |
— | key the claude binary authenticates with |
CLAUDE_BIN |
--claude-bin |
path to the claude binary |
CODEX_BIN, OPENCODE_BIN, … |
— | path to another brain’s binary, one env var per brain |
OPENAI_API_KEY |
— | default bearer token for the openai brain (rename per brain with apiKeyEnv) |
PORT |
--port |
dashboard port |
HOST |
--host |
dashboard bind host |
TICK_MS |
--tick |
cycle interval in ms |
TASK_CONCURRENCY |
--concurrency |
max concurrent tasks per cycle |
QUORUM_KEEP_AWAKE |
--keep-awake |
keep the machine awake for the run |
EVAL |
--no-eval (EVAL=off) |
disable the quality gate |
EVAL_THRESHOLD |
--eval-threshold |
minimum passing score |
BUDGET_TOTAL_USD |
--budget |
lifetime cap (halt for good) |
BUDGET_DAILY_USD |
— | daily cap (skip cycles until rollover) |
BUDGET_MONTHLY_USD |
— | monthly cap |
BUDGET_PER_CYCLE_USD |
— | per-cycle warning/halt cap |
BUDGET_WARN_AT |
— | fraction of any cap (default 0.8) that files a budget warning |
QUORUM_TRIGGER_SECRET |
— | arms inbound webhook triggers; unset = webhooks off |
QUORUM_DASHBOARD_SECRET |
— | pins the dashboard control secret for steering |
DO_NOT_TRACK |
quorum analytics disable |
turn anonymous analytics off |
QUORUM_ANALYTICS_DISABLED |
quorum analytics disable |
turn anonymous analytics off |
TASK_CONCURRENCY=6 EVAL_THRESHOLD=70 quorum
BUDGET_DAILY_USD=5 BUDGET_MONTHLY_USD=100 quorum
Every other runtime tunable is in Configuration.
--version / --help
quorum --version # prints the CLI version
quorum --help # the command tree
quorum start --help # options for a specific command