harmonia · agents as code

Teams of agents, declared in one file, working on one truth.

Deploy agent teams the way you deploy infrastructure: a diffable file that says who works, on what, under which rules — judged before it runs, recorded while it runs, provable after.

[agents.scout_a]
instructions = "assess ${input.region}; answer PASS or FAIL"
writes = ["verdict"]
landing = "vote"        # three scouts, one verdict, dissent kept

What you already know, served

Sandboxed by default

Every command an agent runs executes in an isolated box with exactly the reach you granted — nothing else visible.

Run any agent

Model agents and command agents in one team; bring any harness as a declared step. BYO keys — we never mark up tokens.

Kick off from anywhere

CLI, API, the console; schedules in the team file; webhooks with standing URLs that survive restarts.

Humans in the loop, precisely

A gate is declared in the file, asks with live context, and the answer lands on the record.

Every run recorded

Not a transcript — a sealed receipt chain: every write, every gate, every grant, tamper-evident.

Standing agents that remember

Teams that run on a cadence and know what they knew yesterday — memory with a law, not a scratch file.

What only this substrate can say

N agents, one truth, nothing lost

Agents write the same field — the same file — concurrently and the substrate composes it: 27 applied, 41 retried on the receipts. Others isolate agents so they can't collide; ours collide on purpose and the merge is law.

→ the console's contention chart, live per run
Let them vote

Twelve scouts, one verdict — the split, the weights, the dissent and the doubt on the record. Consensus as a write rule, not a prompt trick.

→ the console's vote splits, the ballot box opened
Your team has a compiler

The file is judged before anything runs — precise refusals with stable codes, not runtime surprises.

→ try it: harmonia validate team.toml
What you approved is what runs

Approvals pin what the approver was shown; the receipt shows what was served. If the world moved in between, the record says so.

The world, declared

Network, files, secrets, reach — grants in the file, judged at plan, receipted by name at use. Never by value.

Your keys never enter the box

The key lives home-side; the box holds a scoped token and the boundary swaps it. Not a vault feature — a law of the runtime: the value exists nowhere a bypass could reach.

shipped 2026-08-11, receipted — demo 09 proves the swap at the destination
Re-run yesterday, diff the landings

Replay a settled run against a new model — one seat or the whole team — and see exactly which fields diverged. Re-execution, not playback.

Pricing — the shape

The pricing law: capacity is priced; the LAW never is. Custody, receipts, judgment, approvals, grants — on every tier including free. Sealed audit chains on the free tier. BYO keys everywhere; no token markup, ever.
TierShapeMeters
Free$0start here BYO keys · 2 concurrent agent seats · 25 banked runs · full receipts
Builder~$30 /moper user 25 seats · 100 banked runs · held memory · triggers
Team~$100 /moper user unlimited seats · 1k banked runs · warm residences · roster lanes
Enterprisecustom BYO-infra residences · SSO · SLA · compliance reports GENERATED from receipts

Seats are AGENT seats — the meter that exists. Hosted-residence compute at passthrough per-hour rates. Draft shape; prices are anchors, not commitments.