Privacy architecture

The metrics travel. The content doesn't.

Measuring a team's AI work only works if the team trusts the measurement. So the boundary is architectural, not a policy promise: the collector is built so that raw content cannot reach the cloud at the default level.

THE HARD BOUNDARY

Transcripts exist only on the engineer's machine. Every derived stat (tokens, tool health, prompt lengths, session titles) is computed locally by the uploader and shipped as a digest. The cloud never parses raw content.

Usage metrics

on for every install
  • ✓Timestamps of agent activity: when runs start and stop
  • ✓Counts: prompts, tool calls, error tallies, token totals
  • ✓Locally computed aggregates: prompt-length stats, tool-health tallies, token counts - each also split by calendar day, so the board can show exactly the days you are looking at
  • ✓Session titles, AI-summarized on your machine from your first prompts (a short label like "Fix checkout race"); when summarization is unavailable a generic placeholder uploads instead, never raw prompt text
  • ✓Terminal tool label: one word saying which terminal tool the agent ran inside (only "cmux" today, when cmux started it); never its workspace ids or socket path
  • ✓Project name: the last folder of the working directory (a label like "checkout-service"), so the board can show which project the work went to
  • ✓Data starts at install: only hook-recorded events upload by default, and a session that was already open before install contributes only what happened after the collector first saw it, even though its transcript goes back further. Optional backfill (backfillDays in the local config) rebuilds recent history locally from transcript timestamps under the same rules, statistics only, labeled as estimated past records
  • ✓Local buffer, bounded: the on-device event file is pruned after upload (uploaded lines older than 90 days; retentionDays in the local config adjusts it). Lines not yet uploaded are never deleted, and a machine that never enabled uploads keeps its full local history
  • ✗Raw prompts never leave the machine
  • ✗Tool arguments never leave the machine
  • ✗File contents and transcripts never leave the machine
  • ✗Full file paths never leave the machine, only that one folder name

Who sees what

Access follows roles, enforced at the database layer. Admins read their org. Members read themselves. An engineer always sees their own data; the lead sees the team they run; nobody sees across org boundaries.

Agent Arena is the one exception, and it is yours to make. The arena is a cross-team leaderboard that shows a player only after that player picked a handle and joined. What it shows is the handle, an optional tagline, and counts: agent runtime, sessions, prompts, tool calls, tokens, streaks, how many agents ran at once, and which agent platforms were used. It never shows session titles, project names, prompts or code, and nothing of yours appears until you join. Leaving removes you from the board immediately. A team appears on the team board only when a workspace admin names it, and only opted-in members count toward it.

Verify it yourself

OPEN SOURCE COLLECTOR

The collector ships as a public npm package. Read the source and see exactly which events it emits. No compiled blob, no hidden channel.

INSPECTABLE HOOKS

The installer writes plain hooks into your agent's settings file. Open the file and read what runs on each event. Delete the hooks and collection stops.

LOCAL COMPUTATION

Digests are computed on the machine before upload. What travels is the result of the math, not the material it was computed from.

Why we built it this way

A measurement tool that engineers route around measures nothing. What we collect is deliberately boring: timestamps and counts are enough to draw the lanes, compute leverage, and surface tool health, and they are not interesting to leak.

Install the collector How the metrics work