Analytics
On this page
Analytics is a section of an agent’s Overview group - the per-agent counterpart of the organization Dashboard. The same KPIs and time-series charts, scoped to this one agent.
It shares the Overview group with Status, and they are two sections rather than one page on purpose: they answer the same question (“how is this agent doing?”) at two scales - Status is whether the agent works right now, read at a glance; these are what it did over a period, read with a date range and eight charts. Stacked together, the first became a preamble and the charts started below the fold.
Reading it needs analytics:read.
The same component renders the organization dashboard, from the organization-wide aggregate rather than one agent’s. The response shape is identical.
What is shown
- Message volume over time (daily and hourly buckets).
- Tool call breakdown - which tools the assistant uses most often, and how often each errors out.
- Latency phases - the engine records per-pipeline timings:
- Context preparation (memory + summary fetch)
- Tool building (assembling the LLM-visible tool set)
- LLM call (or first-token-time when streaming)
- Total end-to-end
- Cost estimate - derived from the AI gateway’s per-model pricing table.
Cost counts every billed call
A model call that dies at the provider - an expired key, a rate limit, an overloaded model, a timeout - is recorded rather than dropped, with its error class and never the provider’s error text. That makes “is this agent erroring?” a question the data can answer; it is reported on the agent’s Status section rather than here.
The aggregates split in two:
- Cost and token totals count every call the provider billed. A multi-step call that fails partway was billed for the steps it completed, and its row carries that cost. A turn pre-empted (cancelled and restarted because the user sent a follow-up mid-answer) is logged as
abortedwith what its model calls had been billed. Embedding calls (knowledge ingestion, memory extraction, retrieval) are logged with their tokens and cost. Totals are summed in double precision, so long periods keep their precision. - Call counts and response times count only model calls that returned. A failed call does not drag the average latency down, a pre-empted turn is neither answered nor failed, and an embedding call, which returns in a fraction of a second beside every retrieval, stays out of both.
Costs recorded before 1.2.0 can read lower than the provider’s bill for the same traffic: pre-empted turns and embedding calls left no row, and Amazon Nova was priced at the US rate instead of the eu-south-1 rate it is billed at. How each call is priced is described in AI Gateway.
Why the spend cap shows a different total
The spend caps (managed services) count the same billed calls, but their windows differ: a cap’s day or month follows the agent’s time zone, while this page renders in your browser’s.
Time range
Three quick filters: 24 hours, 7 days, 30 days. A custom date-range picker is available for longer windows. All times are rendered in the user’s browser timezone; the underlying data is stored UTC.
When does data appear
A fresh instance shows empty charts until the first message goes through. Latency tracing is fire-and-forget and buffered: expect data to land within ~5 seconds of a request completing.