A private, native macOS menu bar meter for Claude Code and Codex usage limits.
InferenceMeter keeps Claude's and Codex's weekly windows visible without opening either CLI. A five-hour window appears when the provider reports it for your account and returns on its own if the provider reports it again. Claude's scoped Fable limit is shown when available, and threshold notifications can warn at 80% and 95%.
Important
InferenceMeter relies on provider-owned, undocumented usage data. Claude Code or Codex updates can change those formats without notice. The project is maintained on a best-effort basis and is not affiliated with, endorsed by, or supported by Anthropic or OpenAI.
- Native SwiftUI menu bar app with no Dock icon
- Claude Code weekly and Fable usage, plus the five-hour window when Claude reports it
- Codex weekly usage from the installed CLI, with recent-session fallback, plus the five-hour window when Codex reports it
- Reset times and stale-data indicators
- Optional 80% and 95% macOS notifications
- Wake-from-sleep and Codex session-file refreshes
- Read-only credential handling with no analytics or telemetry
- macOS 15 or later
- Claude Code and/or Codex installed and signed in
- Full Xcode and XcodeGen to build from source
Download the latest signed build from GitHub Releases when one is available, unzip it, and move InferenceMeter.app to /Applications.
To build a local copy instead:
brew install xcodegen
git clone https://github.com/MonomythDevelopment/inference-meter.git
cd inference-meter
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer make build
open DerivedData/Build/Products/Debug/InferenceMeter.appThe app appears only in the menu bar. It does not create a Dock icon.
The open-source release uses the Monomyth Development bundle identifier dev.monomyth.InferenceMeter. If you installed an earlier private build, quit and remove that copy before installing the public build, then re-enable Launch at Login from the popover if desired.
InferenceMeter is a read-only monitor. It reads credentials already owned by the CLIs:
- Claude Code's
Claude Code-credentialsitem in macOS Keychain - The installed Codex CLI's read-only
account/rateLimits/readapp-server method - Codex session data under
~/.codex/sessions ~/.codex/auth.jsononly when a Codex endpoint is explicitly configured in code
The app never sends a refresh-token request and never writes OAuth credentials. Refresh tokens can rotate when used; independently refreshing one would invalidate the CLI's stored copy and cause repeated login prompts. When Claude's access token expires, InferenceMeter asks the installed Claude Code CLI to inspect its own auth state and adopts a newer Keychain token only if the CLI writes one.
Tokens, credentials, and authorization headers are not logged. The app contains no analytics, advertising, or update tracker. Claude network requests go directly to its provider endpoint. Codex network requests are delegated to the installed CLI so Codex remains the sole owner of its authentication lifecycle.
InferenceMeter reads the Claude credential through Apple's /usr/bin/security tool, the same way Claude Code reads it, so macOS does not show a Keychain password prompt. Claude Code's item already trusts that tool, which means any process running as your user can read the credential this way, with or without InferenceMeter installed. If you previously chose Always Allow, the leftover InferenceMeter entries on the item are harmless and no longer used.
- Claude requests are limited to one attempt every five minutes. The last successful reading remains visible through transient failures and is marked stale after fifteen minutes.
- Codex asks the installed CLI for its current account rate limits. If that interface is unavailable, Inference Meter falls back to snapshots from up to 20 recent rollout files and ignores windows whose reset time had already passed when they were recorded.
- A missing window is displayed as unavailable rather than inferred from another window.
- Provider schema changes may temporarily make a meter unavailable until the parser is updated.
Sanitized schema research lives in docs/spikes. Never attach credentials, Keychain exports, auth.json, or unsanitized rollout files to a public issue.
The Xcode project is generated from project.yml; do not edit or commit InferenceMeter.xcodeproj.
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer make test
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer make buildCreate a local release archive with:
./scripts/release.shWithout CODESIGN_IDENTITY, the release script uses ad-hoc signing for local testing. Public distribution requires a Developer ID Application certificate and notarization credentials. Follow the project-specific Apple distribution and notarization guide for credential setup, signing, verification, and future GitHub Actions automation.
See CONTRIBUTING.md for the development workflow and SECURITY.md for vulnerability reporting.
Copyright © 2026 Monomyth Development. Released under the MIT License.