One number:
cost per merged change
What it cost to get one change from an agent's "done" to merged: the machines and the agents, together. It comes from the record of usage, never from a projection. A number we don't measure is a number we don't claim.
Before and after, measured.
Our own monorepo is a large Rust codebase with about 30 agent PRs open at any time, climbing four rungs to main. Both sides cover the same number of merged changes. Until the switch-over is done, this shows "before" and says so.
Every unit of work makes one record.
Records are immutable, appended, and written before any status is posted, so no verdict goes unmetered. Everything goes on the record. Prices are applied on top: changing a price never changes a record. Export them with modernci daemon usage.
{
"id": "01JA9Q4M7X…", "tenant": "acme",
"repo": "monorepo", "move": "lane-search → predev", "check": "test",
"kind": "run",
"backend": "warm-2", "backend_owner": "tenant", "size": "large",
"started": "2026-10-11T09:14:02Z", "ended": "2026-10-11T09:17:42Z",
"minutes": 4, "saved_minutes": 0, "cost_actual": 0,
"outcome": "green", "waste": "",
"engine": "0.4.2", "config": "3f9c0e1"
}
| Class | Work that bought nothing |
|---|---|
| superseded | A newer push made the run moot. |
| cancelled | Stopped before it judged anything. |
| duplicate | The same inputs, judged twice. |
| infra | A backend failed, not the code. |
| flake | A second witness: a re-run on another machine to confirm a flaky test. |
| warm_idle | A warm machine that waited for work. |
Free on your machines, metered on ours.
Pricing will be set from real usage records, like Actions but simpler: per minute by machine size. Numbers when we have them.
Your machines
Free, forever. The whole product: the loop, the store, secrets, the UI and the operator MCP. It works with no cloud and keeps working if we vanish.
Many daemons, one view
Connect any number of daemons with modernci cloud connect. Health, alarms, cost and waste across all of them. Code, logs and secrets stay home.
Our machines
Offered to any daemon as one more backend, by size. The router uses them only when they are the cheapest way to make the deadline.
| Size | On your machines | On our machines | Agent spend |
|---|---|---|---|
| small · medium | lower rate · set from records | one rate · set from records | shown, never marked up |
| large · xlarge | lower rate · set from records | one rate · set from records | shown, never marked up |
| gpu | lower rate · set from records | one rate · set from records | shown, never marked up |
| a reused result | $0 | $0 | none |