Skip to content
commission

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 link

bun 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 build

That 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 doctor

commission --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
overrideCOMMISSION_DB=/path/to/commission.db
createdon first use, with the current schema — there is no init step for the database
journal modeWAL, 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 board

Both 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.

pathcommandwhat it will give you
install scriptcurl -fsSL commission.sh/install | shplatform detection and checksum verification
Homebrewbrew install row-labs/tap/commissiona formula the release workflow bumps
npmnpm i -g @rowlabs/commissionworks under npm, pnpm, and bun
GitHub Releasesgh 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=blaze

Agents 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 --human

That 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


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.