The device
An ESP32-S3 with a 480×480 capacitive panel. Ships pre-flashed. No soldering, no terminal — plug in USB-C and it boots to a setup screen.
How it works
A desk display, a small server that runs on your own laptop, and a one-line plugin that ties them together. Here's the whole data path — and exactly what leaves your machine and what never does.
Claude Code, Codex and Gemini already log usage locally. The tokenmonitor-mcp broker reads those logs and serves a tiny JSON dashboard.
The 4″ panel polls the broker over your network and draws the numbers. It holds no provider credentials of its own.
The device's only direct internet calls: a public time server and Open-Meteo for the weather strip + sunrise/sunset.
Each provider's own usage API (using the login your CLI already has), a public model-price list, and GitHub to check for firmware updates. No analytics, no telemetry, no phone-home.
Your broker on the LAN, plus pool.ntp.org (clock) and open-meteo.com (weather for your city). It never contacts an AI provider.
The pieces
An ESP32-S3 with a 480×480 capacitive panel. Ships pre-flashed. No soldering, no terminal — plug in USB-C and it boots to a setup screen.
A small open-source (Apache-2.0) server you run on your laptop. It reads your CLI logs and answers the device's polls. Pick the Go, Python or JS build — they're interchangeable.
Installed into Claude Code, Codex or Gemini from the public marketplace. It registers the broker and adds the /tokenmonitor:configure and theme skills, so you pair and manage the device by just asking your AI.
Transparency
The full picture. The broker talks to the same provider APIs your CLI already uses, with the login you already have — it doesn't hand your data to anyone new. It is a new local service on your machine, which is exactly why it's open source and auditable.
| Path | What's sent | What's never sent |
|---|---|---|
| Broker → provider usage API | Your existing CLI login token, plus an account / project id where the provider needs it, to read your real quota. | Your prompts, your code, your files. |
| Broker → price list | A plain request for a public model-price table (LiteLLM). Cached locally for a day. | Anything identifying you. |
| Broker → GitHub | A version check for firmware releases. | Any usage or account data. |
| Device → broker (LAN) | A signed poll asking for the current dashboard numbers. | Leaves your network — it doesn't. |
| Device → time / weather | The clock request, and your city's coordinates for the weather strip. | Any AI usage, tokens or account data. |
The three numbers
The percentage bars are your provider's own reported quota, fetched live from its usage API (about every 90 seconds). Not a guess.
Totalled from the CLI logs on the computer running the broker. They reflect what that machine actually used.
Token counts × a public price list — a useful estimate, not a bill. On a Pro/Max plan it's a notional list-price value, not money charged to you.
Security model
No hand-waving. Here's what the link actually does, and where the limits are.
Every device → broker request is signed with HMAC-SHA256 (a per-device key) over the method, path, timestamp and a one-time nonce. Stale timestamps (> 60 s) and reused nonces are rejected, so a captured request can't be replayed.
Sensitive control-plane payloads — key rotation, settings pushed to the device — are AES-256-CTR encrypted with your device key. (The signature covers request headers, not bodies; we don't claim the whole link is confidential, because it isn't.)
The broker listens on your LAN so the device can reach it — there's no port to forward and nothing is published to the internet. Pairing won't accept a loopback-only address by mistake.
On the device, the key lives in NVS (encrypted at rest on production units). On your laptop it's stored in a 0600 file under ~/.config/tokenmonitor/ — readable only by you.
OTA updates arrive over your LAN through the broker. Each is an Ed25519-signed manifest, verified on the device before the boot slot switches; if a new image doesn't check in healthy, the bootloader rolls back automatically. A version floor blocks downgrades.
The broker and plugin are Apache-2.0 and public. The part that runs on your machine and touches your logs is the part you can read line by line.
Before you buy
tokenmonitor-mcp broker running on it (it can sleep with the machine — the dashboard simply freezes until it's back).8765 open between them).Early-access units are a small first batch — the waitlist locks the launch price for the first 100. Setup is five steps, mostly waiting for it to boot.