Developer Utility

OpenRouter Menu

Check OpenRouter usage, spend and model activity without breaking focus to visit a browser dashboard.

Built for Developers, AI power users and small teams using OpenRouter for coding agents, prototypes or production workflows.

The product story

Built around the work between the obvious steps.

The problem

Where the workflow breaks down.

A balance check is a small task, but repeating it through a browser dashboard creates friction. It becomes harder to spot changes in spend, model mix or key health while staying inside the development workflow.

Why I built it

The product grew from the real gap.

OpenRouter Menu began as a quick account-balance view in the macOS menu bar. The useful questions soon expanded beyond one number, so the utility developed into three focused views: Overview for account health, Models for usage mix and Activity for spend over time.

Development milestones

Three steps that changed the product.

  1. 01

    Make the glance useful

    Overview combines the current balance with recent usage and budget context in a compact native panel.

  2. 02

    Explain where usage went

    Models adds request, token, cost and share breakdowns when the saved key can access OpenRouter analytics.

  3. 03

    Show the direction of travel

    Activity brings together a 30-day spend trend, BYOK split and credit burn-down so a change is visible before it becomes a surprise.

Product decisions

Choices that protect the experience.

Each decision is there to make the product clearer, more dependable or easier to own.

Live in the menu bar

The utility stays one click away and avoids turning a quick operational check into a context switch.

Store secrets in Keychain

API keys are validated before storage and kept in Apple Keychain rather than the app's local settings file.

Degrade progressively

A standard key can still show key-level usage; management-only views explain missing access instead of making the whole app fail.

Keep the cache local

Non-secret settings and usage snapshots are cached on the Mac, and exported state deliberately excludes the Keychain value.

Under the hood

Technical choices that support the product promise.

The implementation comes after the customer story, but it matters wherever trust, portability or reliability are part of the experience.

SwiftUI and SwiftPM

The repository contains a native SwiftUI menu bar application, a separate core module and Swift Package Manager build targets.

OpenRouter API integration

Key-level usage uses the standard key endpoint, while credits, activity and per-key analytics are added when management access is available.

Permission-aware refresh

Management endpoint failures fall back to the available key-level data and surface a partial state rather than discarding a valid refresh.

Executable checks

The source includes checks for response decoding, calculations, mocked refresh paths, error mapping and activity aggregation.

Current status

Available on GitHub

The source is available on GitHub and requires macOS 14 or newer. Local app and DMG packaging are supported, but the current development build is ad-hoc signed and not notarised for general distribution.

What comes next
  • Complete the signing and notarisation path for a smoother public install.
  • Keep permission differences between standard and management keys easy to understand.
  • Refine budget, model-watch and alerting workflows around real usage patterns.