AI Usage

AI usage, without leaving the work.

A local macOS menu-bar utility I designed and built in 2026 to bring Codex and Claude usage into one glanceable view. The working prototype uses Electron, React, and TypeScript.

AI Usage summary showing Codex and Claude token usage

Usage data was everywhere except where the work happened.

I wanted to know how much AI capacity remained without opening provider websites, searching terminal output, or interrupting the task in front of me. The product question became simple: can the answer live in the menu bar and take less than two seconds to understand?

Fragmented sources

Codex and Claude expose useful information differently, with different terminology and levels of detail.

High interruption cost

A quick status check becomes a context switch when it requires another website, terminal command, or dashboard.

Trust needs visibility

Users need to see the source, freshness, connection state, and reset timing—not just a large token number.

Glance, inspect, return.

The default view answers the immediate question. Provider detail is available when the number needs context, without turning the product into a permanent dashboard.

Compact AI Usage summary with two provider cards
01 · GlanceTokens, remaining allowance, reset timing, and system health in one compact view.
OpenAI provider details including local source, context, reset, and usage history
02 · InspectSource, context window, session duration, token breakdown, and history when deeper information is useful.

Different providers. One mental model.

The interface is simple because the data work happens underneath it: provider-specific signals are parsed, normalized, stored locally, and then presented through one shared usage model.

InputCodex CLIClaude local usage
InterpretProvider parsersManual fallback
NormalizeShared snapshotLocal history
PresentMenu-bar glanceProvider detail

Local by default

The app reads local CLI and usage sources first. No account or cloud sync is required for the core experience.

Providers feel comparable

Codex and Claude use one normalized structure so tokens, remaining allowance, and reset timing scan in the same way.

Failure stays recoverable

When automatic capture is unavailable, pasted /status and /usage output provides a transparent manual fallback.

Failure is part of the interface.

Local tools do not always expose the same fields. Instead of hiding uncertainty, the product shows connection health and offers a manual paste route for Codex /status and Claude /usage output.

Advanced sources panel with manual local CLI paste fallback

What “usage” means is the design problem.

The hardest decision was making different provider limits comparable without hiding uncertainty. Showing the source and reset timing matters as much as showing the number.

The prototype supports two providers, a 60-second refresh, local history, and manual fallbacks. Next, I would test whether people can understand their remaining capacity in under two seconds before exploring trends or notifications.

This is a self-initiated working prototype. The case study describes implemented behavior and design intent; it does not claim public adoption or measured performance outcomes. Interface captures use the renderer’s local fallback sample values.

Continue exploringSelected work