Feature/Cost and budgets
Know what every run would cost, and spend less of it.
Nautelle records the tokens of every model request your agents make and prices them, so you see spend per project, model, issue, slot and card. Budgets alert or stop new work, and Token Saver keeps noise out of what agents read.
API-equivalent cost, not a bill
Every dollar figure is what the recorded tokens would cost at public API prices, even when your agents run on a subscription. It is the one number you can compare across runtimes, models and months. Nautelle bills nothing.
- Tokens arrive live from OpenTelemetry on loopback, and transcripts fill in the rest
- Prices live in versioned tables; old versions are never changed in place
- A model with no price shows as unpriced, never as $0
- Only metadata is stored: no prompt, response or tool text
- cacheRead
- input
- output
- cacheWrite5m
- cacheWrite1h
- reasoning ⊂ output
A model with no price shows as unpriced, never as $0.
Down to the turn that burned the tokens
Sessions lists every agent session you can see, with turns, requests, tokens, cost and duration. A session’s page is a tree with a waterfall.
- Turns, model requests, tool calls by name and duration, and subagent sessions
- Time bars and totals on every node
- Breakdowns by project, model, runtime, issue or slot on the Usage page
- Codex sessions are listed but carry no tokens or cost yet
Budgets that alert, or stop new spend
A budget caps the API-equivalent spend of a project or a user per day, week or month, in its own time zone. Thresholds notify once per period, in-app and on Telegram.
- Thresholds default to 50, 80 and 100 percent
- With stop, new runs and orchestrator starts are refused; running work keeps going
- An admin can override a stop for the rest of the period, with a reason
- Every change and override is audited
$444 of $600
- 50% notified once this period
- At 100%, new runs and starts get budget_exceeded
Token Saver: agents read less noise
Token Saver changes what agents read, never what people read. Covered commands are filtered to the lines that matter, only the MCP servers you allow load, and whole reads of very large files are guarded.
- On by default, per project
- Errors, failures, warnings and stack frames are never removed
- The full output stays on the runner machine; NAUTELLE_RAW=1 skips the filter once
- Savings are estimates, shown with a tilde, per card and per filter
$ bun test ✗ invoices › totals › rounds to cents expected 1999, received 2000 at totals.test.ts:41:7 411 pass · 1 fail [token saver] 1,284 lines hidden · full output kept on the runner
See what it kept out
Savings show on the card next to its cost, on the Usage page with cost per run before and after, and on the project’s own Token Saver dashboard by time, filter and run kind.
- A bypass rate tells you when a filter is in the way
- History compacts at about 150k tokens, on every model
- It never changes what a session is allowed to run
Where it sits in the chain
The whole chainSpans the chain. Every step that calls a model is counted: the interview, the design turns, every card round and fix round.
- 01Say what you want
- 02Interview
- 03Card, split or stack
- 04Design
- 05Run
- 06CI
- 07Merge
Every screen and setting, in the usage and budgets guide.
The guide covers each control, limit and rule on this page, with the exact names you will see in the app.