How it works

One sender, four channels, one server, and totals kept for years

Workboard is a pipeline from a developer's machine to one page. This page describes each hop as it runs today, the OpenTelemetry alignment, the data tiers behind the trends, and the path to tens of thousands of seats.

On the machine

The sender: one Rust binary for macOS, Linux and Windows

310,875rows identical between the Rust sender and the reference on a full local history
99 MBpeak memory on a first full pass, against 1.3 GB for the previous collector
2.7 msp95 hook time on macOS; 1.2 ms on Linux
7 daysof outbox on the machine when the server is away

Install, join, wire up

  • InstallOne command checks the binary against published SHA-256 checksums and puts it in the user's home folder. No Python, no admin rights.
  • JoinThe sender prints an 8-letter code. The person opens the device page, signed in, checks the computer name and approves. The machine gets its own 365-day token. It takes no seat.
  • Wire upThe sender merges the hooks and the OpenTelemetry settings into the tool's own settings, with a backup and a diff, refuses if content logging is on, and registers a 60-second job. Within a minute the person's sessions appear on the page.

Four channels, none blocking the tool

ChannelWhat it sends
OpenTelemetry exportCost, tokens, model, API calls and errors, with content logging forced off
HooksSession events: prompts submitted as sizes, tool use, stops, compactions. Dropped to a local folder instantly, flushed every 10 seconds
PassTranscript-derived signals, project and session titles, outbox retries. Every 60 seconds
Status linePlan usage readings for the five-hour and weekly windows
The path of one event

Cut on the machine, sent in a batch, checked again, written before the answer

01

Capture

The tool fires a hook, writes its transcript and exports OpenTelemetry. The hook drops the payload in a local folder in under 3 milliseconds.

02

Cut to the registry

Only the fields listed for each event type survive. Tool labels become a program or file base name. Free text is dropped.

03

Batch and send

One gzipped batch over https with the machine's token, at most every 10 seconds for hooks or 60 for the pass. It stays in the outbox until answered.

04

Authenticate and check again

The token is hashed and looked up; the sender format is checked; expired or revoked tokens are refused. Every row is checked against the same registry, and a bad line is refused with its reason and counted.

05

Write, then answer

One transaction, with insert-or-ignore on each event's natural key, so a resent batch adds nothing. The server answers 200 only after the write commits; the machine then deletes the batch. Nothing lost, nothing counted twice.

About 20 event types in five families: cost and usage, work, plumbing, savings, and state and health. API calls, tool calls and hook runs carry most of the volume. The next sender release sends about a third fewer rows by counting hook runs per minute on the machine.

OpenTelemetry

Speaks OpenTelemetry today; aligned with it throughout

Today

OTLP intake

Workboard takes in the tool's OpenTelemetry export over OTLP, logs and metrics as OTLP/JSON over https, next to the batches from its own sender. The same path will take Codex and Gemini telemetry as they arrive.

Rolling out

One data model and an export of your own

  • One shared definition each of org, user, machine, account, project, session, turn, API call, tool call, agent, job and loop, used the same way by the page, the API and the export.
  • Trace and span ids per session, with OpenTelemetry's GenAI semantic names, so a session reads as one trace.
  • Export of spans and metrics over OTLP to your own observability platform, such as Datadog, Grafana, Honeycomb or New Relic.
  • A Prometheus metrics endpoint with totals per org, user, project and model.
  • The standard OpenTelemetry Collector at the edge, with a disk queue, memory limits and server-side content stripping.
Data tiers

Detail for weeks, totals for years, findings computed once

The page shows totals, but the findings that make Workboard worth paying for need rows in order: the gap between consecutive calls of one agent, the same call three times with nothing changed between, the context of each turn. So rows are kept long enough to analyse, and totals are kept for years.

TierKeptHolds
Raw events30 to 90 days, by planEvery row, for analysis, the session drawer and Explore. A rule added next month can price last month only if the rows exist.
Hourly totals13 monthsPer org, user, project, model and host: calls, tokens by kind, cost, errors, tool counts
Daily totals3 yearsThe same keys by day; the source of every trend chart. A nightly check recomputes yesterday from raw rows and compares.
Findings3 yearsEach finding when computed, once a session has been idle 30 minutes: rule, session, tokens, dollars, advice
Session summaries3 yearsOne row per session
Access model

Three roles, one owner-controlled switch, and no way to lock an organization out

Owner

The buyer, or anyone an owner promotes. Pays and changes the seat count, changes any role, and alone turns the admin visibility switch on or off. The last owner can never be demoted or disabled; the check runs in the same database transaction as the change.

Admin

Invites people as member or admin, revokes invites, runs the Team tab, and moves people between member and admin. Never touches an owner. With the owner's switch on, reads every member's usage and sessions, read-only.

Member

One paid seat. Signs in with GitHub, Google or an email link, joins machines, sees their own data on every view, and chooses whether to share totals with teammates. Their Needs-you list and budget alerts are theirs alone.

Rows of white server cabinets in a large data center hall, seen from above
Scale

Built to grow in stages, each triggered by seats or a contract

The client already does its part: spooling, batching, gzip and backing off. The server side grows with the customer base: a dedicated cloud project with Cloud Run and managed PostgreSQL for the first paying organizations; an OpenTelemetry edge, a durable queue and workers that scale on queue depth around 10,000 seats; ClickHouse for event totals, a second region and per-customer databases past that or on contract. Every stage is preceded by a load test at ten times the expected peak.

Written service levels: 99.9% of valid ingest requests accepted each month, data on the page within two minutes at p95, page views within one second at p95, restores tested on a schedule.

See your own numbers before you decide

Tell us how many developers use Claude Code and where you would run Workboard. A person at Cognitivi reads every message, replies by email and walks you through the page on your team's data.