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.

Cost by agentSep 2026
Claude CodeCodexGemini CLICI
StatementKestrel Digital · September 2026Closed
Provider invoice
$12,480
Attributed
92.4%
To review
31
TicketsProjectsUnattributedDiscount and residual
ClientReceiptsAmountvs. estimate
Storefront relaunch412$4,210.80−6%
Claims portal298$3,105.20+31%
Data platform276$2,890.15+4%
Internal tooling167$706.40—
CloseReconciled
LineInvoiceLedger
Usage at list$13,728$13,728
Discount−$1,248−$1,248
Billed$12,480$12,480
Closed3 Oct · $0.00
$12,480
Provider invoice, September
92.4%
Posted to tickets and projects
1,272
Receipts from 14 people
31
Left to review before close
Claude CodeCodex CLIGemini CLICopilot CLICursor EnterpriseAny agent, via API

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.
RulesKestrel DigitalTarget 90% · at 92.4%
RuleMatchPosts toMonth
Ticket key in branch^(KD|OPS)-\d+Ticket962
Ticket key in PR title\b(KD|OPS)-\d+\bTicket141
Ticket key in promptsdeveloper's turnsTicket50
Repositorykestrel/storefrontProject · Storefront88
Anything else—Ask the developer31

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.
CloseSeptember 2026Reconciled
LineInvoiceLedgerDifference
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
Closed3 Oct 2026 · 14:21 UTCVariance $0.00J. Beck

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.
ReportsStorefront relaunch · September2 outliers
Estimate vs actualBy agent typeBy skill
TicketActual against estimateActualDelta
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 typeShare of monthPer 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.
SOURCESRECEIPTSPOSTED TO Claude CodeCodex CLIGemini CLICopilot CLICursor EnterpriseAny agent, via API ClientProjectTicket Ask the developer 6 clients11 projects1,153 receipts31 receipts

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.

Receipt · pushed 18 Sep 2026 11:41
agent · modelclaude-code · opus-5
personm.ortner@kestrel.example
from · to09:12 · 11:40 UTC
tokens in · out1,204 · 38,911
cache write · read212,530 · 9,418,772
summaryFixed checkout redirect loop
postingKD-214 · 100%
value at list price$41.87

Two commands, then forget it exists

Receipts are drafted when a session ends, filed by your rules, and pushed when the developer says so.

# macOS, Linux, Windows brew install tokencontroller/tap/tc tc connect https://tokencontroller.com # inside Claude Code /plugin install token-controller # end of the day tc push # 6 receipts · $212.40 · 91% attributed

Everything in the product, on one page.

The scope is written down and does not grow.

Collect
Claude Code plugin·CLI·Telemetry push·GitHub Action·Receipts API·macOS menu bar app
Attribute
Ticket key rules·Repository mapping·Session splits·Review and push·Classifier hook
Close and report
Statements from Anthropic, OpenAI, CSV·Monthly close·Reject back·Estimate vs actual·Agent and skill reports·Exports
Connect
Jira Cloud·Azure DevOps·GitHub Issues·Google, GitHub, Microsoft sign-in·OIDC and SCIM on Enterprise

One price per organization. Nothing per seat.

Your provider already meters tokens. We do not meter you again.

Solo
Free
forever, hosted
  • One person, one organization
  • Every feature, no invites
  • All agents, statements and reports
Start free
Team
$200
a month per organization
  • Up to 150 members, flat
  • Roles, review, reject, monthly close
  • Jira, Azure DevOps, GitHub Issues sync
  • 14-day trial · $2,000 a year annually
Start trial
Enterprise
Custom
more than 150 members
  • Isolated instance in your region
  • OIDC, SCIM, audit log
  • Telemetry passthrough, support SLA
Talk to us
Self-hosted
Free
AGPL-3.0
  • The same Docker image as Team
  • Your Postgres, your region
  • Community support on GitHub
Read the guide

One account is one organization. Data hosted in the EU. Prices in USD, invoices in EUR on request.

Jan Beck

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.