Leask

Token Deck

Leask

Since Codex has recently become the most important tool in my work, without question, keeping an eye on token usage at all times has become crucial. Today, I spent a little time vibe coding a Stream Deck plugin called Token Deck. It can display AI provider quotas, token usage, and Mac hardware status on Stream Deck. The project is open source on GitHub at leask/token-deck.

Stream Deck Photo

Token Deck is a Stream Deck plugin for showing AI provider quota, token usage, and Mac hardware status on Stream Deck keys. The token action is powered by CodexBar, the hardware actions read local macOS status directly.

Token Deck Screenshot

Requirements

By default, the plugin uses CLI mode and runs a short-lived CodexBar command at each refresh:

codexbar usage --provider codex --format json --json-only

HTTP mode reads an explicitly running CodexBar JSON service:

codexbar serve --port 8080 --refresh-interval 60

The plugin never switches data sources automatically. Pick CLI or HTTP in the action settings.

Custom connection fields are optional. If CLI Path is empty, Token Deck checks the common Homebrew paths and then runs codexbar from PATH. If HTTP Endpoint is empty, Token Deck builds http://127.0.0.1:<port>/usage from the HTTP Port setting.

Architecture

Development

npm install
npm run build
npm run watch

The official Stream Deck CLI linked the plugin into:

~/Library/Application Support/com.elgato.StreamDeck/Plugins/com.leask.token-deck.sdPlugin

The link points back to this checkout’s com.leask.token-deck.sdPlugin directory.

Actions

AI Token Usage renders:

Pressing the key forces a refresh.

Hardware status actions can be added as separate keys without changing the token key:

The hardware keys refresh automatically and also refresh immediately when pressed.

CPU Status samples aggregate CPU activity over a short interval.

Memory Status shows current used memory based on Node’s OS memory counters.

Disk Status aggregates mounted local physical storage and skips network mounts, Time Machine local snapshots, and disk images. On macOS APFS volumes are deduplicated by container, so the internal Data volume and an external USB disk array are counted once each instead of counting every APFS system volume.

GPU Status reads Apple Silicon GPU utilization from IOAccelerator when that counter is exposed by macOS.

Network Status samples local interface counters and shows combined download and upload throughput. Loopback, bridge, AWDL, and other virtual interfaces are ignored.

Temperature Status uses Apple SMC temperature readings when available. If the native sensor module cannot be loaded in the Stream Deck runtime, it falls back to macOS thermal pressure from pmset -g therm instead of showing an error.

Battery Status uses pmset -g batt on macOS. It shows internal battery level on laptops, UPS charge on desktop Macs with a supported UPS, and AC/no battery when no battery source is present.

Power Status reads Apple SMC power keys without requiring sudo. If SMC power is unavailable, it falls back to Apple power telemetry from ioreg, then to voltage/current-derived power on systems that expose battery amperage.

Validation

Use these checks before shipping a local change:

npx tsc --noEmit
npm run build
streamdeck validate com.leask.token-deck.sdPlugin
streamdeck restart com.leask.token-deck

Runtime logs are written under:

com.leask.token-deck.sdPlugin/logs/com.leask.token-deck.0.log

Categories Computers and Internet