MultiAgent analytics brings every agent’s data into one picture: MultiAgent keeps a local copy of the chat list and refreshes it itself — roughly once a minute, plus right after changes on the agents — and once an hour it reconciles the copy with the agents in full, so the numbers do not drift from reality even after a history recount on an agent. Fresh changes land on the open charts immediately, without a page reload. Reports are built from that local copy — opening the page sends no requests to the live agents. The result is the full picture of your fleet: cost, tokens, messages and commits across all agents at once.
Overview
The top of the page shows summary cards: total cost, tokens, messages and duration for the period you pick. Detailed charts follow below.
Time series
Cost, tokens, messages, prompts and commits over time — broken down by hours, days, weeks or months. The hourly view shows your working day; the monthly view shows trends and seasonality. Empty stretches do not fall out of the chart: a quiet hour or day keeps its zero point, so the line never breaks.
Breakdowns and patterns
On charts and in tables an agent is labelled with its short name while that name occurs once. If there are same-named agents on different servers, the label becomes “server/agent” — otherwise two different agents would merge into one line.
- time × model — how the load spreads across models;
- time × agent — which agents consume resources and when;
- by hour of day and day of week — when your agents work best and what that costs;
- distributions — cost, tokens/sec and messages/sec: which chats stand out from the norm.
Filters
Every chart follows the filters: a saved filter, a multi-select of tags, and a time range (presets plus any custom period). Filters are named: the list starts with “All” (no restriction), then saved filters, and “New filter” last. The filter dialog has three tabs — “Fleets”, “Servers” and “Agents”: you can tick whole fleets, servers and individual agents, and the name suggested on creation is “Filter N” and stays fully editable. Picking a filter and picking tags are mutually exclusive. Your chosen filter, detail level and collapsed sections are remembered between visits. Deleting a chat does not break past totals — softly deleted records still count in earlier periods.
Chat tables
At the bottom sit the “Chats” and “Subagent Chats” tables with sorting and pagination: cost, tokens and duration for every chat. Chats deleted on the agent disappear from these tables, but not from past-period totals and charts. The badge in the header shows a short summary for the chosen period and opens the full report on click, and page sections collapse — keep only the charts you need.
ClickHouse archive
Optionally, MultiAgent keeps a long-term analytics archive in ClickHouse — a free database built for large histories. Set the environment variable MULTIAGENT_CLICKHOUSE_URL (the address of your ClickHouse server), and the database and its chat_analytics table are created automatically. From then on, once a minute the chat-mirror stats (snapshots updated since the last upload) are appended to the archive, so you can study the history with external tools.
A “Backfill ClickHouse Stats” button appears at the bottom of the report — it shows only when the archive is configured, and it uploads everything the archive is missing (for example, after a long downtime).
ClickHouse is an optional addition to the database, not its replacement: the report itself is still built from local tables, so an unavailable archive is never critical and breaks nothing.
Balances and quotas of your LLM accounts are analyzed separately — see Accounts.