TRMNL plugin
TRMNL Token Meter
A glanceable Codex usage meter for TRMNL, backed by a local collector that keeps raw session content on your machine. The display gets the numbers it needs. Your prompts, paths, diffs, and repositories do not leave the box.
The TRMNL listing is not public yet. The open-source collector is the companion piece that pairs a machine, computes sanitized aggregates locally, and keeps the display updated in the background.

Primary surface
TRMNL plugin
A dedicated TRMNL view for today, recent trends, token mix, top models, and estimated cost.
Companion
Local pairing
The local collector reads Codex usage on your machine and syncs only sanitized aggregates.
Privacy boundary
Local first
Prompts, responses, commands, diffs, paths, and repository names stay off the wire.
How it works
One product, two surfaces.
The TRMNL side is the display layer. The CLI side is the collector. The collector reads local Codex usage records, computes aggregate totals on your machine, and sends only the sanitized summary required to render the meter. That split is the product: e-ink visibility without cloud-side access to raw work.
01
Install the plugin in TRMNL
The display side lives in TRMNL. Once the listing is public, the first step will be installing the plugin there.
02
Generate a pairing code
The plugin management page creates a one-time code used to pair one machine with one meter.
03
Run the local collector
Use `npx trmnl-token-meter` to pair, upload the first aggregate snapshot, and install background sync.
04
Let the display update quietly
After setup, the collector keeps syncing on a schedule so the TRMNL page stays current without manual work.
Privacy
Designed around a narrow boundary.
The collector uploads aggregate usage fields and generic status signals, not raw Codex activity. That means the meter can stay useful while the underlying working material remains local.
What goes up
- Aggregate totals for today, the last 7 days, and the last 30 days
- Daily trend buckets and normalized per-model totals
- Estimated cost summaries and generic warning states
- Machine label plus collector/runtime status fields needed to render the display
What stays local
- Prompts, responses, and tool output
- Shell commands, diffs, and file contents
- Absolute paths and repository names
- Raw Codex JSONL records and other reconstructable session content