Accounting and management control for AI agents
Every token, accounted for.
Your agents hand in receipts. Rules post them to clients, projects and tickets. The month closes against the invoice.
Free for one person. 200 USD a month per organization. Open source, EU hosted.
| Client | Receipts | Amount | vs. estimate |
|---|---|---|---|
| Storefront relaunch | 412 | $4,210.80 | −6% |
| Claims portal | 298 | $3,105.20 | +31% |
| Data platform | 276 | $2,890.15 | +4% |
| Internal tooling | 167 | $706.40 | — |
| Line | Invoice | Ledger |
|---|---|---|
| Usage at list | $13,728 | $13,728 |
| Discount | −$1,248 | −$1,248 |
| Billed | $12,480 | $12,480 |
Receipts in. Statement out.
Agents hand in receipts
Tokens, cost, model, branch, pull request and one line on what was done. Transcripts stay on the machine.
Rules file them
A ticket key in the branch, a repository mapped to a client. Set once, like the rules in your bank app.
The month closes
Posted receipts, unattributed spend and the residual add up to the invoice. Lock it, hand finance the statement.
Rules do the filing.
People do the exceptions.
Write a rule once and every receipt after it lands in the right place. You set the target; the page shows the number.
- Long sessions split by branch and time, so one session can post to two tickets.
- A classifier hook for teams that want a local model to decide the hard cases.
| Rule | Match | Posts to | Month |
|---|---|---|---|
| Ticket key in branch | ^(KD|OPS)-\d+ | Ticket | 962 |
| Ticket key in PR title | \b(KD|OPS)-\d+\b | Ticket | 141 |
| Ticket key in prompts | developer's turns | Ticket | 50 |
| Repository | kestrel/storefront | Project · Storefront | 88 |
| Anything else | — | Ask the developer | 31 |
Closed means closed.
Each month reconciles against the statement your provider actually issued. Unattributed and residual are visible lines, not a rounding error.
- Statements from Anthropic and OpenAI by API, or any invoice as CSV.
- Managers send a receipt back with a reason. Owners post signed adjustments after close.
| Line | Invoice | Ledger | Difference |
|---|---|---|---|
| Usage at list price | $13,728.00 | $13,728.00 | $0.00 |
| Contract discount | −$1,248.00 | −$1,248.00 | $0.00 |
| Billed usage | $12,480.00 | $12,480.00 | $0.00 |
| Seats, billed annually | $3,600.00 | — | outside scope |
What did the tokens buy?
Once every receipt has a home, the controller's questions have answers: which tickets ran over, what each agent type costs, where to look first.
- Estimates from Jira points, a typed budget, or similar past work.
- An outlier report, not alerts. Nobody gets paged, nobody gets capped.
| Ticket | Actual against estimate | Actual | Delta |
|---|---|---|---|
| KD-214 Checkout redirect | $41.87 | −13% | |
| KD-231 Search relevance | $301.40 | +151% | |
| KD-240 Invoice PDF | $87.10 | −9% | |
| KD-244 Auth callbacks | $79.30 | +10% | |
| KD-251 Image pipeline | $152.95 | −4% |
| Agent type | Share of month | Per receipt |
|---|---|---|
| Main session | 74% | $9.93 |
| Subagent · review | 20% | $9.67 |
| Skill · migrate-schema | 6% | $41.05 |
Any agent that can report home.
Coding agents came first because their session files sit on the developer's machine. The service does not care what kind of agent sent the receipt.
- Claude Code, Codex, Gemini CLI and Copilot CLI push usage over OpenTelemetry. Nothing to install.
- Everything else posts one receipt per unit of work to the API.
Managers get the statement. Engineers keep working.
What leaves the machine, in full
A receipt is a receipt, not a transcript. No prompts, no code, no file contents.
Two commands, then forget it exists
Receipts are drafted when a session ends, filed by your rules, and pushed when the developer says so.
Everything in the product, on one page.
The scope is written down and does not grow.
One price per organization. Nothing per seat.
Your provider already meters tokens. We do not meter you again.
- One person, one organization
- Every feature, no invites
- All agents, statements and reports
- Up to 150 members, flat
- Roles, review, reject, monthly close
- Jira, Azure DevOps, GitHub Issues sync
- 14-day trial · $2,000 a year annually
- Isolated instance in your region
- OIDC, SCIM, audit log
- Telemetry passthrough, support SLA
- The same Docker image as Team
- Your Postgres, your region
- Community support on GitHub
One account is one organization. Data hosted in the EU. Prices in USD, invoices in EUR on request.

Built and run by one person, on purpose.
Jan Beck studied business and finance at WU Vienna, spent fifteen years building software for clients, and ran operations at a fintech. At his own company AI usage is billed at API rates and passed on to clients, and nothing answered "where did the tokens go?" to a standard a controller would accept. So he built it.
- No outside investors, a public roadmap, a scope that does not grow
- Hosted in the EU, open source, answers every email
Start with one person.
Add the team when finance asks.
No card for the free plan. Fourteen days to try the team plan.