OpenCode Vitals 0.1.0
First public release of OpenCode Vitals: a small always-on-top bar that shows one honest line for the session you are working in.
◔ 19 turns 65 steps 282 tok/s
What it measures
- turns — responses completed in this session.
- steps — model steps across those responses, so a turn that ran five tools is not mistaken for a fast one.
- tok/s — generated tokens (output + reasoning) divided by active stream time. Tool executions stay out of the denominator, so the number is the model's speed and not your machine's.
Compaction executions and synthetic inbox items are excluded, and duplicate completions, late deltas and repeated plugin instances are deduplicated. When the provider reports no token counts, the bar shows – instead of inventing a number.
The bar
360×54 pixels, undecorated, always on top, no taskbar entry, no focus steal. Drag it anywhere and the position is remembered. The close button collapses it to a small square that keeps showing tok/s; clicking the square brings it back. It follows the Desktop tab you are looking at, and it leaves when you close OpenCode.
Install
Restart OpenCode. To check your machine first: npx opencode-vitals-selftest.
Honest platform note
Verified on Linux with GNOME/Mutter on X11. The macOS and Windows paths are ordinary platform code with a fail-open rule — when a check cannot run, the bar stays instead of disappearing — and their decision logic is covered by tests driven by a fake process list, but no macOS or Windows machine has run it yet. The selftest is the fastest way to find out on yours.
Privacy
No network code at all: no registry calls, no telemetry, no update pings. Prompts and responses are never stored. The one exception is a single read-only row from the Desktop app's own state database so the bar knows which tab you are looking at; no draft text is read.
Quality gates
103 plugin checks and 44 bar checks run before every publish, plus a selftest that reports the Tk version, the window type that stays undecorated and on top, the database path and the tab it read.
{ "plugins": ["opencode-vitals"] }