Know your limits.
Before you hit them.

UReport reads your OpenAI Codex and Claude Code plan limits and keeps them in your menu bar — how much of the window you have spent, and when it resets. It runs entirely on your Mac.

macOS 14 or newer · Apple Silicon · Free

Codex and Claude, side by side

Account-level limits for OpenAI Codex and Claude Code in one panel. Hide either provider and UReport stops collecting, polling, and alerting for it entirely.

Five-hour and weekly windows

Claude's five-hour and seven-day limits with reset countdowns. Model-specific windows are parsed forward-compatibly, so new ones appear as Anthropic adds them.

Local-first by design

Snapshots stay on your Mac. UReport reuses your provider CLI's existing authentication and never reads or stores access tokens, prompts, or transcripts.

Ninety days of local history

Every snapshot is archived on disk for 90 days and charted in the dashboard, so you can see the shape of a week before it runs out on you.

Threshold notifications

Choose the percentage that counts as high and get one notification when a limit crosses it — once per window, not once per refresh.

Widgets and a global shortcut

Small and medium widgets for the desktop and Notification Center, launch at login, an optional Dock icon, and a rebindable global shortcut on ⌃⌥⌘U.

Claude / 5-hour

62%

RESETS IN 2H 14M

Claude / 7-day

41%

RESETS FRI 09:00

Codex / weekly

78%

RESETS IN 3D 06H

COLLECTOR: LIVERETENTION: 90D

REPRESENTATIVE_PREVIEW // FIGURES ARE ILLUSTRATIVE

Read the meter, not the mail

01. COLLECT

Codex limits come from the Codex app-server adapter — the copy bundled with ChatGPT first, then Conductor, then a standalone CLI. Claude limits come from Claude Code's documented status-line payload, through a reversible integration that backs up and restores whatever status-line command you already had.

02. FALLBACK

If that payload goes stale past five minutes, UReport opens Claude's own /usage screen in a hidden pseudo-terminal, reads only the labelled plan-limit blocks, and closes it again. That catches usage through Conductor and other non-terminal clients, and the result is marked FALLBACK in the UI.

03. SURFACE

Limits land in the menu-bar panel, the dashboard, and native widgets, with a notification when one crosses your threshold. Every snapshot is archived locally for ninety days.

No tokens, no prompts, no transcripts

UReport reuses the authentication your provider CLI already holds. It does not read or store access tokens, and it never touches the content of a conversation.

Nothing is uploaded

There is no UReport account and no UReport server. Usage snapshots are written to disk on your Mac and read back by the app — that is the whole data path.

Reversible integration

Connecting Claude backs up your existing status-line command before replacing it, and restores it when you disconnect. Hiding a provider stops collection for it outright.

Signed updates, on your say-so

Updates are EdDSA-signed and delivered through Sparkle. UReport asks before installing one; nothing lands silently.

Put it in the menu bar.

Unzip, drag UReport to Applications, and connect whichever of Codex or Claude Code you already use. It picks up their existing sign-in.

Version
0.6.0
Requires
macOS 14+
Architecture
arm64
Format
.zip
Updates
Sparkle