Token Usage Dashboard
Since v0.157.0. The Token Usage Dashboard shows the tokens this server recorded, with charts and tables. It reads the same ledger as the Usage Statistics API.
Opening it
Click the chart icon in the sidebar footer, right of the Ontology icon. The dashboard opens as a large window, laid out like the Cron Scheduler:
- Left: the date range, a lane filter and the list of views.
- Right: summary figures, then the selected view's charts and table.
- Header: the time zone, Export CSV, and "What these numbers cover".
The dashboard only reads. It never changes your chats or the usage record.
Time zone
Days and months follow the time zone shown in the header. By default this is your browser's time zone, marked (browser). Click it to choose any other zone, or pick Browser to go back. Your choice is remembered in this browser only.
The time zone changes where a day starts. For example, the same record can fall on 1 September in Tokyo and 31 August in Honolulu. The footer always shows which zone the dates use.
Range and lane
- Range: 7, 30 or 90 days, this month, last month, 12 months, or Custom (up to 366 days). "Today" means today in the selected time zone.
- Lane: limits every figure to one kind of caller:
- chat (
spa-prompt,spa-harness) - Declarative Workflow runs (
workflow) and Pipeline jobs (workflow-job) - Teams (
teams) - the OpenAI-compatible API (
openai-api) - agent tasks started from a Live conversation (
live, since v0.169.0) - background helpers (
helper)
- chat (
Summary figures
| Card | What it shows |
|---|---|
| Input | Uncached input + cache read + cache write, each also listed on its own |
| Output | Output tokens; the reasoning tokens inside them are shown as "of which" |
| Model calls | Billed model calls, the average tokens per call, and the number of records |
| Cache hit rate | Cache reads as a share of all input, over the models that report cache reads |
| Error / interrupted | The share of records whose turn ended in an error or was stopped |
There is no single "total tokens" figure, because providers count them differently. Input and output are always shown separately.
Views
| View | What you get |
|---|---|
| Overview | Daily tokens by kind, plus the top five models and top five run targets |
| Daily | One bar per day, stacked by token kind, model or lane; a table per day |
| Monthly | One bar per month, stacked the same way; a table with the change from the previous month |
| By type | Rankings by lane, run target (Harness agent or Workflow), workflow agent, workflow node, or record kind |
| By model | Every token kind per model, with the provider, cache hit rate, tokens per call and error share |
| Sessions | The chats that consumed the most, with their titles |
| Live voice | Live conversation time per day and per chat, with sessions and delegated tasks (v0.169.0). Seconds, not tokens; nothing is priced |
Each table can be sorted by clicking a column header.
Reading the charts
- Colours are fixed:
- blue: uncached input
- teal: cache read
- amber: cache write
- violet: output
- Reasoning is part of output, so it is never stacked on top of output.
--means "not reported". Some providers do not report every figure. A missing figure is shown as--and is left out of the chart. It is never shown as zero.- A day with no activity is zero. Nothing ran, so nothing was consumed.
- When a chart is stacked by model or lane, the five largest are shown and the rest are grouped as Other.
Opening a chat from Sessions
The Sessions view lists chats by the tokens they consumed, 50 per page. Some rows cannot be opened:
| Row | Why |
|---|---|
| Deleted or re-imported chat | The chat no longer exists under that id. Its usage still counts |
| Temporary chats | Temporary chats are recorded without an id, so they are one combined row |
| No chat (jobs, API, Teams) | The usage did not come from a chat in this app |
To open a chat:
- Click Open on its row. The dashboard first checks that the chat still exists.
- Confirm. The dashboard closes and the chat opens.
If the chat was deleted in the meantime, the row changes to Deleted instead.
Export CSV
Export CSV downloads every usage record in the selected range, time zone and lane.
It exports the raw records, not the table you are looking at, for use in Excel, Power BI
or similar tools. The file is named like
token-usage_2026-09-01_2026-09-30_Asia-Tokyo.csv. See
Exporting for BI for the
columns.
What it does not show
- Money. Only token counts are shown. Prices depend on your contract and change over time, so multiply by your own rates.
- Demo mode usage. Demo mode records nothing, so the dashboard is empty there.
- Per-user figures. The usage record does not identify users.