Source Built from main · latest release v0.4.0

Spend

Every model call goes into a ledger on this computer: where to read it, where reported and estimated amounts come from, and how to set prices.

Spend

Open Spend from desktop Tools (second item), the tools menu beside search on a phone, or the desktop View menu. Opening it again focuses the tab already showing it. Desktop windows use a single pane tab; phones use a full-screen overlay. The pane header keeps the date range, refresh, active filters and Overview / Call details controls available as the content scrolls. Choose today, the last 7 or 30 days, all time, or a custom range. Switching views preserves filters and loaded calls.

Overview puts total tokens and call count alongside separate reported and estimated amounts. Token components and an expandable usage explanation provide detail. Daily trends and call categories share the same filters. Tap or focus a bar to inspect its date and values; arrow keys move between bars. Long ranges are grouped into at most 28 labeled intervals. Reported and estimated plots share a scale and remain separate.

Switch the usage breakdown between models, sessions and Bots, sort its columns, and click names to combine filters. Below 620px of content width, rows become vertical lists with a sort picker and expandable token breakdown. This applies to small split panes and floating panes as well as phones. Long names wrap within their row. Call details uses the same compact layout, localized dates, expandable token components and an explicit View trigger message action. More calls load in pages. Resizing a pane preserves the current view and its data; new calls update the open view automatically.

Tokens come from endpoint usage. Reported amounts use the provider's cost_in_usd_ticks; Estimated amounts use optional model billing rates in USD per million tokens. In Settings → Models → Models → Attributes, set both input and output rates and optionally a cached-input rate. Leaving cached input blank uses the input rate. Rates save automatically and can be cleared together. The separate routing reference price continues to guide model choice. Estimates follow the rates configured now: setting, changing or clearing a model's rates re-prices all of its past calls that have no reported amount. A model removed from the list keeps the estimates it had. Missing usage or unconfigured rates remain visible as missing values. The cached share depends on the endpoint: a model reached through a proxy that spreads requests over several accounts hits the cache only when the proxy keeps a conversation on one account (see Development · session id).

The ledger includes turn completions, judgements, route picks, route reviews, learning hops, composer suggestions (drafted only when you press ✨ beside the send button, on the model chosen for the composer under Settings → Roles, else the default endpoint's flash, mini, lite or fast model), the organizer's filing of each message you send and of each plan that has gone quiet (a decision call, owned by no Bot), the scribe's note of each line you send and each answer you give (writing what you ask into the requirements ledger, under Other), Line reading (one short call reading each line of yours and each Bot message about to go out for what the app acts on — a stop, a status question, a complaint, a promise of more to come; under Other, owned by no Bot; ADR 0055), the Retrospective (once a job you accepted is delivered, each Bot that made it looks back once and improves its own memories and skills; under feedback, owned by that Bot; ADR 0062) acceptance checks (the calls of a continuity check that look at frames show as Picture judgement, under Other), and Project sessions (each run of a Claude Code or Codex project session, under turns, owned by no Bot: Claude Code a row per model per result, marked Claude Agent, at the price it estimates, counting only what the run adds to the session's earlier totals; Codex a row per model call, tokens only, as it reports no price). The scribe, line reading, the retrospective, picture judgements and project sessions each get their own line in the category breakdown once they have been billed, instead of sitting inside Organizer, Acceptance check and Turn completion. A built-in call set to a Claude model is billed under the same kind and purpose as before, marked Claude Agent, at an estimated price. Deleting a conversation or Bot, or clearing history, retains its recorded spend and name snapshots. Conversation headers, rows and settings keep their existing presentation. Spend cannot measure fees charged separately by MCP tools.

The Daily cap sits at the top of the Overview: enter a USD amount, and once the calls since local midnight cost that much, reported or estimated, the app stops every Bot until you press Lift under Stopped in the sidebar; clear it, or press No cap, for none. There is none by default. After a Lift it stops nothing more that day; a new cap or the next day counts afresh. Calls with no price do not count, and a local agent's runs count at the price it estimates, a project session's included; the cap still stops only Bots, and a project session keeps going (Behavior · Spend cap).