commis
Embauchez un commis, pas un SaaS. An “AI employee” platform sells you a dashboard and a monthly seat. commis sells you a config row: one JSON document per worker that grants it tools and money, declares when it must ask a human, and prices what a run costs. The row is a file. It lives in your git repo. It runs on your machine.
# who you can hire commis catalog commis hire elio --budget-eur 20 --per-run-eur 2 commis brief elio "cabinets comptables FR, 25 leads" commis plan elio # exactly what would run — free, and it touches nothing commis run elio
Why a row and not a repo
Eight “AI employees” is not eight products. It is one runtime and eight config rows. Hiring copies a catalog row into your roster; it does not generate code, and there is nothing to maintain per agent.
catalog row ──hire──▶ roster row ──plan──▶ execution plan ──run──▶ artifact (in the binary) (your git) (pure, free) (a URL)
Four things it does that a dashboard doesn't
The plan is free and honest
A separate command from run, not a --dry-run flag — so reviewing
what an agent would do can never be one typo away from spending money.
The grant is enforced by PATH
Only the granted commands exist on the agent's PATH. An agent not granted
curl cannot reach the network, because the binary is not there to find.
Approve from your phone
A destructive command stops and asks — email, webhook or chat, with two one-tap links. Unanswered means refused: silence is not consent.
The deliverable is the receipt
One URL per agent, one version per run: the report plus what it cost, what it was allowed to run, and the goal it was judged against.
The rails are yours to choose
commis is a client of four hosted services, and ships with a host for none of them.
Nothing you install talks to anyone else's machine until you say so — commis rails
shows what is wired.
| rail | what it does | without it |
|---|---|---|
| peage | holds and captures the money | budget.wallet: none — unmetered |
| hart | publishes the deliverable | output.artifact: file — written locally |
| relais | catches the approval reply | commis approve at the terminal |
| Resend | sends the link | the link is still in commis runs |
A row asking for a rail you have not configured is refused with the opt-out named, never silently downgraded — an unmetered run that was supposed to bill is work you gave away. Each rail is itself one static binary you can self-host: peage, hart, relais.
Proven on a real run
One live agent has gone the whole way: a real model through roam, a real wallet held and captured with a signed receipt, an approval answered from an email, a private artifact published and a completion notice sent. It cost five cents — and it found three bugs that no test double could have.
Install
curl -fsSL https://raw.githubusercontent.com/javimosch/commis/main/install.sh | sh commis guide # the mental model, as JSON — read this before the README commis rails # what is wired, and what works without it
Needs roam as its runtime.
Building from source needs machin and nothing else:
./build.sh.