Mockup · not a real screenshot · macOS only

What we could put on your Mac

A live menu-bar pill, a click-down menu, and a side panel pinned to the right edge — all showing every account at once, Claude and Codex/OpenAI. Each account shows its 5-hour and weekly window with the white time-marker from your dashboard, so you can see when you're burning too fast.

1The whole idea, on your desktop

The panel sticks to the right edge and stays visible on every Space, floating over your editor and terminal. Same bars as your dashboard — colored fill = quota used, white line = where you are in the window by time.

claude — zsh — 80×24
jack@studio ~/Github/claude-jacked
claude
● Working on auth refactor…
● Tests: 2438 passed
oauth.py — jacked
# OAuth PKCE flow
CLIENT_ID = "9d1c250a-e61b-…"
async def exchange_code(self, code):
  return await self._post(TOKEN_URL)
jacked Account usage
A
jack@hank.ai
1 login · 2 orgs
Hank AI· Enterprise ACTIVEMAX
5H
62%4:41p
7D
41%Mon
Personal· individual PRO
5H
12%
7D
9%Wed
A
Hank Research · ml-research@hank.ai
MAX
5H
96%3:08p
7D
78%Mon
O
codex@hank.ai · OpenAI
PLUS
5H
71%5:20p
7D
34%Mon
Auto-swap ON → next: Personal
↗ Open full dashboard
ml-research is the warning: 5H fill is way past the white line — 96% burned with only 38% of the window gone. The pill goes red to match.
2Or just click the menu-bar icon

Don't want the panel up? Click the pill and the same bars drop down — both windows, the white pace-marker, and same-email/different-org accounts grouped under one login.

J96% · 78%
2:14 PM
The white line is the whole point.

Colored fill = how much of the window's quota you've used. White line = how far through the window you are by time.

• Fill past the line → burning faster than the clock (ml-research: 96% used, 38% of the window gone).

• Fill behind the line → you'll reset before running out (codex: 71% used, 82% gone).

Numbers come from /api/analytics/usage-overview; "Add account…" is where an OpenAI/Codex login slots in.
3Pick how loud the menu bar is

Same data, four levels of glance. Tabular digits so the width never jitters as numbers change.

J

Icon only
Quiet. Click for detail.

96%

Worst account
One number — your most-saturated account, color-coded.

J 62% · 14%

Active acct
5-hour · weekly for the account in use right now.

▦ 62 96 12 71

All accounts
Every account's 5h%, side by side. Densest glance.

4The one honest limit

You asked it to "stick to the side." It floats there, always on top, on every Space. What macOS will not let a normal app do is reserve that strip like the Dock, so a maximized window can still slide underneath it. The apps that fake "reservation" replace your Dock or run a permission-hungry window manager — not worth it for a usage strip.

✓ What you get
USAGE
Floats on top · always visible · every Space ✓
Public AppKit API (verified on current macOS). The panel sits over everything; your windows are untouched.
✗ Not possible
USAGE
Reserve the strip so windows can't cover it ✗
No public API for this (no Dock-style "strut"). The maximized window fills the whole screen, under the panel.
5What we'd skip: a native "desktop widget"

macOS desktop / Notification-Center widgets (WidgetKit) sound right but Apple only lets them refresh every 15–60 minutes and they can't show your live web dashboard — they'd show stale numbers. The live surface is the menu bar + the floating panel.

Claude usage · 1:50 PM 58% ⚠ last updated 24 min ago

Looks nice, but it's a snapshot the system throttles. Wrong for "am I about to get rate-limited right now."

So the plan is:

Menu-bar pill — live, updates every few seconds, glanceable from anywhere.
Floating side panel — your real dashboard bars, pinned right, on every Space.
⏭️ WidgetKit widget — skip, or add later as a stale "nice to have."

Reality check. The menu-bar app + floating panel are mostly reuse — your tray code, your local server, and your existing dashboard bars (the .elapsed-marker shown here is copied straight from usage.js) all carry over; the new part is swapping pystray for rumps on Mac (crisp live menu-bar text) and a thin WKWebView panel at 127.0.0.1:8321. The OpenAI/Codex account is the separate piece: its login is a clean port of your OAuth flow, but reading its usage rides an undocumented Codex surface.
<71% healthy 71–90% tight >90% saturated white line = time elapsed in window A Claude O OpenAI