Insights
See who is coding through Tokamak right now, and when your organization, a team or one person works, from the telemetry coding tools already send.
Open Insights (formerly Pulse) to see coding-tool activity as sessions: who is working right now, how long each session has run, what it produced, and a heat map of when your organization or team works.
Insights is an administrator view and an organization opt-in. It appears for the organization's owners and administrators (org.admin), not billing administrators, who read spend in Analytics but not who worked on what, and only after a platform administrator has switched the organization's Insights feature on in the platform console (Organizations → Features). Switching it off hides Insights, Activities, the People panels and Home's session blocks, makes the server refuse the Insights routes immediately, and removes the organization from the platform operators' cross-organization Insights aggregate; nothing is deleted, and switching it back on shows the same data.
Insights is built from two things tokamak launch sets up: the OpenTelemetry stream coding tools send, and the requests the same tools make through Tokamak. Nothing else is installed, hooked or polled. A tool that is not launched through Tokamak, or whose owner has opted out, sends no telemetry, and Insights says so rather than showing zero activity.
Reconciliation gaps
The session reconciliation panel shows usage without telemetry as a share of sessions with linked metered requests, and telemetry without usage as a share of sessions with accepted client telemetry. Each percentage includes its counts for the selected filters and overlapping session window. An empty denominator is unavailable, not zero. Reconciliation runs in the background and can lag; telemetry-only work is not necessarily an error. These figures are not wallet debits or billing discrepancies.
Which tools send what
| Tool | Telemetry | Prompt summaries |
|---|---|---|
| Claude Code | prompts, API calls, tools, lines, commits, tokens, cost, active time | yes |
| Claude Cowork | same as Claude Code | yes |
| Codex CLI and Codex App | conversations, prompts, API calls, tools, tokens | yes |
| GitHub Copilot CLI | sessions, prompts, tokens (OpenTelemetry GenAI conventions) | yes |
| Oh My Pi | runs, LLM requests and tool calls, grouped per launch | no |
| Jan Agent | sessions, prompts, API calls, tools, tokens, cost, active time | yes |
| Pi | OpenTelemetry GenAI metrics | no |
| OpenCode | traces (API calls and tool runs) | no |
| Droid, DeepSeek Harness | none | no |
A tool that sends no telemetry still shows up: Tokamak builds a request-derived session from the requests it metered for that person and key, marked with a request-derived badge. Such a session has metered requests, tokens and cost, but no prompts, tool runs, lines or active time, because nothing reported them.
What a session is
A session is one run of a coding tool. Claude Code, Cowork, Codex, Copilot and Jan Agent stamp a session or conversation identity on what they export; Tokamak groups those by that identity, per member, inside your organization. A tool that reports no identity (Oh My Pi) is grouped per launch. Each session carries:
- when it started and when it last reported, and whether it is live (seen in the last five minutes),
- the client and models used, the repository name, the terminal and how the run was started (fresh, resume, continue),
- counts of prompts, API calls, errors and tool results,
- lines added and removed, commits and pull requests the tool reported,
- the tokens and cost the client reported, and the requests, tokens and cost Tokamak metered for the session — the gateway's own rows, joined to the session by the evidence described under Reading the numbers.
Tool arguments, file contents and paths are never stored. Prompt text is stored only under the summaries opt-in described below, and only until it is summarised; otherwise counts and timing only.
Simple and Advanced
The Simple / Advanced switch in the navigation bar sets how much Insights shows. Simple is the summary: who is coding now, how many people were active, active time and cost, the digest (when your organization has summaries on) and the People table — one row per member with a daily sparkline, their active time and what they are working on. Advanced adds the change against the previous period on every figure, prompts, API calls and errors, commits, pull requests and lines, cache hit rate, and beside the digest the daily trend against the previous period, the heat map (hour × weekday, by member or calendar), and active time and cost by team and by member; the People table gains sessions, prompts and metered cost. Filter any view by team, model or client, search people by name or email, or click a theme to see who worked on it; the digest always covers everyone in scope and says so when a filter narrows only the figures. Nothing in Advanced grants anything Simple does not; it only shows more of the same data.
Click a person anywhere in Insights to open their page (a People row's Details opens a quick look in a side panel instead): their sessions, what they worked on, their rhythm (a 13-week calendar and an hour-of-day profile), the tools and models they use, and each session's timeline with — when summaries are on — one line per prompt.
What people worked on (summaries)
By default Insights stores no prompt text, so it can say when and how much someone worked but not on what. An organization can opt into prompt summaries (a platform administrator switches on Insights prompt summaries under the organization's features). Then:
tokamak launchturns on each tool's own prompt switch (OTEL_LOG_USER_PROMPTSfor Claude Code and Jan Agent,otel.log_user_promptfor Codex, Cowork'suserPromptscapture, Copilot's GenAI content capture) only after the server confirms the organization's switch, and says so in the launch banner. Any other launch exports no prompt text.- The server keeps each prompt only until a summary exists. A few minutes after a session goes quiet, one model call turns its prompts into a short paragraph, theme tags, and one sentence per prompt with the tools that followed it; the prompt text is deleted in the same write, and anything not summarised within 72 hours is deleted regardless.
- Digests — This period at <org>, What <person> worked on, a team's digest — are built from those session summaries, never from prompts, and cached: a period headline with its main threads of work over one entry per local day, in your time zone. A day that has ended keeps its text, so it reads the same tomorrow; today's entry refreshes as sessions are summarised, and Refresh today rewrites today and the headline. The counters beside each day are always current, and if a new text cannot be written the last one stays with a notice.
Summaries are generated text: they describe what was asked and what the client reported, they can be wrong, and they never quote a prompt. The model is instructed to leave out secrets, personal data and code. Every member sees their own sessions and today's digest on Home, through a view the server pins to them. Switching the feature off stops the export and the capture immediately; existing summaries remain until their sessions expire. A platform administrator picks the model that writes them (the organization's Internal model in the platform console); a deployment can also set a default (TOKAMAK_INSIGHTS_SUMMARY_MODEL). Until one exists, Insights says there is no summary model for the organization.
The three views
My sessions shows your own runs across your API keys, newest first, with a per-minute timeline of any session you select (and your heat map at Advanced). It reads your own view, the one Home uses.
Team shows one team: who is live, its figures and digest, the People table and, at Advanced, a member × hour grid of when each person works. Members who sent no telemetry appear as dashed rows labelled no telemetry.
Organization shows every member. At Advanced an hour × weekday heat map answers "when does this organization work"; the Active members tile says how many members sent telemetry at all.
Activities (in the navigation below Insights) is the sessions list on its own: the same scopes, range, filters and search, every session in range with its newest activity first, each opening in a side panel with its timeline and, when summaries are on, its summary. Step through sessions with the panel's buttons or j / k.
Organization and Team read the organization-administrator analytics surface; My sessions reads your own view. The page itself is for owners and administrators, so other members, billing administrators included, do not see Insights even when the organization has it on; they see their own sessions, today's digest and their rhythm on Home.
Team and member pages under People carry a compact Insights panel with a link to the full view.
Reading the numbers
- Metered cost (and metered requests and tokens) is what Tokamak itself recorded for the requests it joined to the session. It is the money figure: the same rows Usage and the wallet are settled from. The tag beside it says how the join was made:
metered— joined on hard evidence: the request id the tool saw on its response, the session id the tool sent with its requests, or the launch idtokamak launchgave the process. These are exact.window— matched by member, API key and the session's time window (plus two minutes), the fallback for tools that send no identity.window*means another session on the same key overlapped, so the figure is an upper bound.client-reported— no metered request could be joined, so the client's own figure is shown instead.
- Client-reported cost and tokens are the client's own figures. They are activity, not billing evidence; the wallet is settled from metered usage only. On the session page both ledgers sit side by side, labelled, and are never added together.
- request-derived marks a session Tokamak built from metered requests alone because no telemetry arrived for that work (Droid, DeepSeek Harness, or a tool run outside
tokamak launchon a key that still names its client). Tokamak groups those requests by the session id the tool sent with them, else by thetokamak launchrun that made them, and only as a last resort into sessions split by 30 minutes without a request. If telemetry for the same session arrives later, the two merge. - Metered figures appear within about two minutes of a request; the client-reported ones as soon as the tool exports.
- Telemetry coverage compares members with any session to the roster where the roster is known (a team). Missing telemetry is missing coverage, never zero work.
- Heat maps colour active minutes: the minutes of session spans that overlapped each hour, in your browser's time zone.
Turning it off
Telemetry is part of tokamak launch for every tool in the table above that sends it. To keep a launch out of Insights, run the tool directly instead of through tokamak launch, or clear CLAUDE_CODE_ENABLE_TELEMETRY in your own Claude settings. Requests you still make through Tokamak stay metered, and if they name their client they appear as request-derived sessions. Prompt content is exported only when your organization opted into summaries (the launch banner says Insights: prompt summaries on); otherwise Tokamak leaves every tool's prompt switch off.
Sessions expire with the telemetry they were built from, 93 days after their last report.
Related
- Usage and spending for costs and reliability
- Organizations and teams for who can see what
- Data capture for recording, tagging and exporting the requests behind these sessions
When a key fails
What happens to a request when your provider rejects your key, refuses a model, rate-limits you or is down; how a failed key is disabled and falls back; and how to rotate it.
Data capture
Record every request and response your organization sends through Tokamak, tag it, browse and label it, and export it as a training dataset.