Personal project
ModelMeter
A native macOS menu bar app that brings Claude, Codex and Cursor usage limits into one glanceable view.
AI tools shape much of my daily workflow, but their usage limits are fragmented across separate dashboards and inconsistent quota systems.
I built ModelMeter to make the essential information visible at a glance, then disappear until needed.
One compact view
ModelMeter lives entirely in the macOS menu bar. Concentric rings show live usage for each connected provider, with optional reset countdowns alongside them.
Clicking the icon opens a compact breakdown of session and weekly limits. Usage changes colour as capacity runs low, with configurable notifications before a limit becomes disruptive.
The app also preserves details unique to each provider, including Claude extra usage, Codex credit balances and Cursor on-demand spend.
Designing for limited space
Three services, multiple quota windows and reset times had to fit without turning the menu bar into a dashboard.
Information is revealed progressively: the menu bar shows current pressure, the popover provides exact percentages and quota windows, and settings handle providers, alerts, appearance and refresh behaviour.
The hierarchy adapts to state. If a weekly quota is exhausted, its unusable session capacity is hidden and the interface prioritises the weekly limit and reset time instead.
Normalising different providers
Each provider exposes different data structures and authentication behaviour. ModelMeter converts them into one shared usage model while retaining useful provider-specific information.
Claude and Cursor use embedded WebKit sign-in. Codex can reuse and refresh local CLI OAuth credentials, with browser authentication as a fallback. Credentials are stored in the macOS Keychain rather than application preferences.
Usage refreshes automatically at a configurable interval, with manual refresh available from the popover.
Beyond the interface
ModelMeter can expose normalised quota data through a local JSON API. The server binds only to 127.0.0.1, allowing other tools to understand current availability without receiving provider credentials.
It includes general quota endpoints, a unified heartbeat response and compatibility with Tend’s backend routing.
Outcome
ModelMeter turns three inconsistent usage systems into one native macOS utility. It stays quiet during normal work, becomes legible as capacity runs low and removes a small but frequent source of context switching.

