MIT Licensed ยท 100% Rust ยท macOS Menu Bar

Every AI coding CLI.
One menu bar.

usagio tracks usage and quota across Claude Code, Codex, and every AI coding CLI you run โ€” multiple accounts per provider, one keystroke to switch, and an auto-swap daemon that keeps you coding when a weekly limit hits.

Free & open source ยท macOS 13+ ยท Intel & Apple Silicon

usagio menu-bar dropdown showing two Claude accounts and one Codex account with session and weekly usage percentages
One dashboard, every CLI

Ships with support for the CLIs you actually run.

First-party coverage for Claude Code and Codex today. Stubs and scaffolding for the rest are in the tree โ€” provider adapters land as each CLI's usage surface stabilises.

  • Claude Code Anthropic
  • Codex OpenAI
  • Cursor
  • opencode
  • Gemini CLI
  • Qwen
  • Copilot CLI
  • Amazon Q
  • Cline
  • Grok
  • Kimi
  • OpenRouter
  • DeepSeek
  • Z.ai
  • Fireworks
  • Synthetic

Shipping today Planned / stub in tree

Built the way Mac tools should be

Native. Fast. Out of your way.

Session & weekly at a glance

Each row shows session-window and weekly-quota use as a percentage, with reset countdowns on hover. No dashboards, no browser.

Multiple accounts per provider

Sign in more than once to Claude Max or Codex, switch which one claude or codex uses without touching /login.

Auto-swap daemon

When a weekly quota is about to hit, usagio drains accounts in reset order โ€” the next account is already active before you notice the wall.

Menu bar first, CLI too

The same single Rust binary powers the menu-bar app and a scriptable CLI. Pipe usage into your shell prompt, or check it in a Raycast script.

Keychain-backed, no webview

Tokens live in the macOS Keychain. State lives in ~/.config/usagio. No Electron, no bundled Chromium โ€” one binary, launched by launchd.

Open source, single binary

Pure Rust. Install via Homebrew or build from source. The whole app is licensed MIT โ€” run it anywhere, audit it, build on it.

Why open source?

usagio talks to first-party provider endpoints with tokens issued to your account. That's a lot of trust to give a closed binary. Every line is MIT-licensed and on GitHub so you can audit exactly what it sends, where it stores state, and how the auto-swap decides when to move you.

One glance, the whole picture

Green when you're fine. Red when you're not.

The menu reads at a glance in every state โ€” from a fresh Monday morning to the moment auto-swap catches a weekly ceiling.

Healthy state โ€” all accounts below 60% weekly usage

Everything's under budget

All accounts under 60% weekly. Menu stays green; auto-swap keeps its powder dry until it's actually needed.

Mixed state โ€” one account at 82% (warning), one at 94% (critical)

Two accounts, two colors

One account at 82% starts glowing amber. Another crosses 94% and turns red. Auto-swap has already picked the next candidate โ€” you notice the color before you notice the wall.

Locked state โ€” top account weekly-locked, next account auto-swapped in

The lockout turns into a countdown

When an account hits 100%, its percentage row swaps for a countdown to when it's usable again. Auto-swap flips to the next-priority account in the same tick โ€” no interruption.

Install

Two commands, no configuration.

brew install puts the binary on your PATH. claude-usage install wires up the menu-bar app and the auto-swap daemon, now and at every login.

 # Homebrew tap โ†’ single Rust binary, no runtime, no webview $ brew install MattJackson/tap/claude-usage
$ claude-usage install # menu-bar app + auto-swap, now and every login 

Prefer a manual install, or building from source? See the download page โ†’

Stop hitting the wall at 3 a.m.

Install usagio. See every quota. Never lose a session to a limit you didn't know you were about to hit.