Install commission
You will be able to get a working commission command on your machine today, know
exactly which of the four distribution paths exist yet and which do not, and
verify the install with one command that tells you the truth rather than a
version string.
No release has been published
Read this before you copy anything.
The repository has carried the placeholder version 0.1.0 since its first
commit and no tag has ever been cut. The ## Unreleased section of
CHANGELOG.md CHANGELOG.md is therefore the entire history to date; it
closes as 1.0.0-rc.1 when the release candidate is cut, following
the release checklist.
The practical consequence: of the four ways Commission will be delivered, exactly one works right now, and it is building from source. The other three are written up below so you can see how Commission will arrive, and every one of them is marked as not yet publishing artifacts. None of those commands resolves today, and a page that pretended otherwise would waste your afternoon.
Build from source — the path that works
Requires Bun 1.1 or newer, and access to the repository, which is private while the open- versus closed-source decision is still open.
git clone https://github.com/Row-Labs/commission.git
cd commission
bun install
bun linkbun link puts commission on your PATH from the bin entry in package.json.
Nothing is compiled and nothing is installed globally beyond that symlink, so
git pull && bun install is the whole upgrade procedure.
To produce a standalone binary instead — no Bun on the target machine, one file to copy:
bun run buildThat writes dist/commission. It is the same code the release workflow will
eventually publish; building it yourself is not a downgrade.
Verify the install
commission --version
commission doctorcommission --version prints the semver the binary reports on every surface — the
CLI, GET /v1/version, the MCP server, and package.json are checked against
each other by tests/version.test.ts, so the number cannot disagree with
itself. Until a release is cut it will say 0.1.0.
commission doctor is the real check. It opens the database, runs the migration
guard, validates any .commission.json it can find, and reports on the dependency
graph, claims, bindings, and the search index. It exits 0 when everything it
looked at is fine and 2 when something needs your attention — a refusal, in
commission’s own vocabulary, with the fixing command attached. See
exit codes.
Where the database lives
Commission is a binary and a SQLite file. There is no server to run, no account to create, and nothing to sign up for.
| default path | ~/.commission/commission.db |
| override | COMMISSION_DB=/path/to/commission.db |
| created | on first use, with the current schema — there is no init step for the database |
| journal mode | WAL, so readers never block the writer |
Point COMMISSION_DB at a scratch file whenever you want to try something without
touching your real work:
COMMISSION_DB=/tmp/scratch.db commission init sandbox
COMMISSION_DB=/tmp/scratch.db commission boardBoth commands read the same override, so the sandbox and your real database never see each other.
The four paths, when RC1 is cut
All four are built and documented; none of them publishes an artifact yet
(relay-52, itself waiting on cross-platform binaries in relay-51). Each will
produce a working commission --version and pass the same smoke test on macOS,
Linux, and Windows.
| path | command | what it will give you |
|---|---|---|
| install script | curl -fsSL commission.sh/install | sh | platform detection and checksum verification |
| Homebrew | brew install row-labs/tap/commission | a formula the release workflow bumps |
| npm | npm i -g @rowlabs/commission | works under npm, pnpm, and bun |
| GitHub Releases | gh release download --repo Row-Labs/commission --pattern "commission-*" | tagged binaries, notes, and SHA256SUMS |
Copy them now if you like. They will not resolve until the tag exists, and nothing on this page links to an artifact that has not been published.
Set your actor name
Every claim, note, transition, and approval is attributed. Commission reads the actor
from COMMISSION_ACTOR:
export COMMISSION_ACTOR=blazeAgents get their own names — claude:api, claude:docs — and that is what makes
parallel work legible afterwards.
Setting COMMISSION_ACTOR names you, but it does not tell commission you are a person.
Nothing can: a process can set an environment variable as easily as you can, and
Commission will not guess, because an actor wrongly taken for a human could approve
its own work. So declare yourself once, in the repo:
commission actors add blaze --humanThat writes you into .commission.json as an owner and approver. Without it,
commission approve, commission verify, and commission answer all refuse — correctly, but
it is the kind of correct that reads like a bug when it happens to you. Commission
says so at commission init for the same reason.
Declaring actors is also what turns “who may approve this” into a checkable fact rather than a convention; see Guides → execution policies.
Next
- Your first task — a project, a graph, a claim, a refusal, a close.
- Your first agent — hand the loop to a coding agent.
- Reference → config — every
.commission.jsonkey.
Part of Start here.
This page is docs/start/install.md in the Commission
repository, rendered in place — the site keeps no copy of it. The repository is private, so there is no edit link to follow.