Every call in a DataMind Oda chat is measured: Oda keeps running counts of the tokens the model read and wrote, and of how full the model's reading space is. This page explains what those figures mean, how the context ring and its panel show them, and why they are a reference rather than a bill. The chat around them is covered in Chat with Oda.
Where the figures appear
Under the message box, the chat's figures show in a short form such as 66.8K tok · Cache hit 77%, beside the ring that shows how full the model's reading space is. The context ring covers the ring and its panel.
A finished turn carries a usage pill such as Usage 15.8K tok; it opens the Turn usage dialog. Actions on a message covers the pill and the dialog.
Under the message box, the usage pill opens the Token usage dialog with the chat's totals, and the neighbouring pill carries the chat's timings. Chat navigation and stats covers the timing figures.
These figures show while Performance & usage is Detailed (the default); Compact keeps only the available output speed and cache-hit. Chat display settings covers that row.
The four token figures
Each call records the same four figures:
Figure
What it counts
Uncached input
The part of the request the model read fresh.
Cached input
The part the model served from its own cache.
Cache write
The part stored in the model's cache for later calls to reuse.
Output
What the model produced; the reasoning part is named inside it.
The input side is those three input figures together: read fresh, read from the cache and written to the cache. Cache hit is the cached share of that input.
A share reads 100% only when every input token came from the cache. A near miss keeps the extra digits it needs, such as 99.96%, so a partial hit is never rounded up into a full one.
The figures arrive in a short form: 517, 12.2K, 517K, 1.2M.
A fact that was not recorded leaves its row or segment out instead of showing a zero. The Cache write figure, for example, appears only once the cache has been written to.
How the counts build up
A reply can take several calls, one per step, and a call that was retried is another call. The turn's figures add its calls up.
While a call streams, a running figure fills from the first partial numbers. When the call settles, its final figure replaces the provisional one, so one call counts once.
A retry that ran counts like any other call; a retry that was cancelled before it ran does not. Failures and recovery shows the retry row in a turn.
Where the numbers come from
When the model service reports what a call used, Oda keeps that report and shows it.
When the report is missing, Oda sizes the text the request carried itself, at about four characters to a token, and marks the figure with a ~ where it is shown, such as the token count on a Context compacted marker.
An estimate can come out low for some material: long identifiers, dense data files and text in languages that write with wide characters can take more room than the four-character rule suggests.
A figure appears only when Oda holds the whole record behind it. Where the record is incomplete or contradicts itself, Oda leaves the figure out rather than showing a partial count. A missing figure means it was not recorded, not that it was zero.
The context figure
The ring shows how full the model's reading space is: the size of the newest request against the model's window.
The figure follows the newest request rather than adding up: each request replaces it. It measures the prompt that was sent, not the reply being produced, so it holds still while an answer streams.
A running figure also follows what has changed since the newest request, so setting an older part of the chat aside shows in it at once. It never reads below zero.
When you switch models, the window follows the new model at once, while the used figure updates with the next reply. Until then, the two can come from different moments.
The context ring
The ring sits in the message box's control row, just before the model picker. The message box covers the row and its other controls.
The ring shows the share of the model's context window that is in use, as a ring and a percentage; point at it to read {percent} of context used.
It stays hidden until both the chat's usage and the model's capacity are known; a fresh chat shows no ring.
The percentage follows the chat's latest figure: it moves as the chat fills, and it drops at once when an older part of the chat is compacted.
When the control row runs out of space, the ring gives up its percentage first and keeps only the ring itself. The Oda window, sidebar and panels covers how the window gives way when it is narrow.
The breakdown panel
Click the ring to open the breakdown panel. Click the ring again, press Escape, or click outside the panel to close it; a click inside the panel does not close it.
The panel reads the percentage of the context in use, and the chat's figure against the model's limit, shown in a compact form such as ~32K / 128K. The number after the slash is the model's context window: the most text the model can read at once.
Below the figures, three rows follow the bar's order: System prompt (the instructions Oda sends), Tool definitions (the tools it can use) and Messages (the chat itself), each with its share of the space.
Only the percentage is exact. The figures and the split below it are an estimate, which the ~ marks.
A part that takes no space of its own draws no segment in the bar. If the part-by-part split is not available at all, the panel shows the figures without the three rows.
If a switch to another model leaves the capacity unknown, the panel closes; it stays closed after the capacity returns, until you open it again from the ring.
When the context fills
When a long chat no longer fits the model's reading space, Oda shortens the older part of it, on its own or when you run /compact, and the ring follows the new figure at once. The marker the compaction leaves in the conversation, and its summary, are covered in System prompt, context and compaction.
A reference, not a bill
These figures are Oda's own reading of the chat. The bill for the calls comes from the model service, not from this screen, and an estimated figure can differ from what the service counts.
The context figure is a reference for reading the chat, not a billing record.
The requests themselves are recorded in your company's log; Chat logging covers what travels with a request.
Questions, answered
What do the four token figures mean?
Uncached input is the part of the request the model read fresh, Cached input the part it read from its own cache, Cache write the part stored in that cache for later calls, and Output what the model produced, with the reasoning part named inside it. Cache hit is the cached share of the input.
Why does Cache hit sometimes disappear?
It needs input to measure. When nothing on the input side was read for what the figure covers, there is no share to show, so Cache hit is left out rather than shown as a zero.
Are these figures what the model service will bill?
No. They are Oda's kept record for the chat, a reference rather than a bill. The bill for the calls comes from the model service; where a figure is an estimate, the two can differ. Chat logging covers the record of requests your company keeps.
Why is a figure sometimes an estimate?
Not every call reports what it used. When the report is missing, Oda sizes the request's text itself, at about four characters to a token, and marks the figure with a ~. Dense material, such as data files or text that writes with wide characters, can come out low this way. In the breakdown panel, only the percentage is exact; the figures and the split are estimated, so they carry the ~ too.
Do retried calls count too?
Yes. A retry is another call to the model, so it counts like any other. A retry that ran counts; one that was cancelled before it ran does not. Failures and recovery covers the retry row, and Model calls and failures covers which failures are retried.
Why didn't the chat's total shrink when an older part was compacted?
Compacting changes what the next call carries, not what already ran, so the chat's record of its calls keeps its figures. The context figure falls at once instead. What the marker records is on System prompt, context and compaction.
Why does the context figure hold still while the reply streams?
It measures the prompt that was sent, not the reply being produced, so it stays where it is while the answer streams. It moves again with a newer request.
Why does the ring disagree with the chat's token total?
They measure different things. The total adds up every call the chat has made; the ring shows how full the reading space is for the newest request. A long chat can carry a large total and still leave most of its window free, because the window holds one request at a time.
What do the numbers in the breakdown panel mean?
The percentage is the share of the context in use, like 25% of context used; beside it, the chat's figure stands against the model's limit, like ~32K / 128K. The number after the slash is the model's context window. The three rows below split the figure between the system prompt, the tool definitions and the messages.
Why did the breakdown panel close by itself?
The panel closes when the model's capacity is no longer known, for example after a model switch that leaves it unknown. It stays closed even after the capacity returns, until you open it again from the ring.
Why does the ring sometimes show without a percentage?
When the control row runs out of space, the ring gives up its percentage first and keeps only the ring itself. A fresh chat shows no ring at all until both the chat's usage and the model's capacity are known.