{"slug": "show-hn-ai-usage-native-macos-menu-bar-for-claude-code-and-codex-limits", "title": "Show HN: AI Usage – Native macOS Menu Bar for Claude Code and Codex Limits", "summary": "Developer Burak Gön has released AI Usage, a free native macOS menu bar app that displays real-time Claude Code and Codex usage limits with 0.0% CPU between refreshes. The app reads local OAuth credentials and fetches quota data directly from provider endpoints, keeping tokens on the user's Mac and never logging or transmitting them. It requires macOS 26 or newer and is available as an open-source project on GitHub.", "body_md": "**Claude Code and Codex limits, one click away.**\n\nNative Liquid Glass. Measured at 0.0% CPU between scheduled refreshes.\n\nA real native menu bar popover — no Dock icon or persistent window.\n\nAI Usage shows the limits that matter and stays out of the way. No extra account, API key, local server, telemetry, usage history, or background log scanning.\n\nOpen the DMG, drag **AI Usage** to Applications, and launch it. It appears in\nthe menu bar rather than the Dock. macOS 26 or newer is required.\n\nNote\n\nCurrent public builds are ad-hoc signed because a Developer ID certificate\nis not available yet. If macOS blocks the first launch, right-click\n**AI Usage** in Applications and choose **Open**. Future updates are still\nprotected by Sparkle's EdDSA signature.\n\n- Claude Code session, weekly, Sonnet, and Fable limits\n- Codex session, weekly, Spark, and Spark weekly limits\n- Remaining or used percentages, switchable directly in the panel\n- A selectable provider and session/weekly value directly in the menu bar\n- Configurable 1, 5, 15, 30, or 60-minute refresh and one-click manual refresh\n- Signed update checks at launch and daily, plus\n**Check for Updates…** - A direct\n**Update** button in the panel when a new version is available - Provider cards only for installed tools, with signed-out status kept visible\n- Native light and dark appearances with Liquid Glass\n- Launch at Login enabled by default and still user-controllable\n\nYou need:\n\n- macOS 26 or newer\n- Xcode 27 or newer\n- Claude Code and/or Codex already signed in locally\n\nThen:\n\n```\ngit clone https://github.com/burakgon/ai-usage-menubar.git\ncd ai-usage-menubar\n./scripts/install.sh\n```\n\nThe script builds a local Release version, installs it to\n`~/Applications/AI Usage.app`\n\n, and opens it. AI Usage appears in the menu bar,\nnot the Dock.\n\nTo run without the installer, open `AIUsage.xcodeproj`\n\nin Xcode and run the\n`AIUsage`\n\nscheme.\n\nAI Usage reads the same local OAuth credentials already created by the\n`claude`\n\nand `codex`\n\nCLIs, then requests quota data directly from the\nproviders' first-party endpoints.\n\n- Credentials stay on your Mac.\n- Tokens are never printed, logged, or sent anywhere else.\n- Temporary failures keep the last successful values in memory and mark them stale.\n- Nothing is cached across launches.\n\nAPI-key-only Codex authentication can't read ChatGPT subscription usage.\n`CLAUDE_CODE_OAUTH_TOKEN`\n\nis intentionally ignored because setup tokens don't\ninclude the profile scope required by Claude's usage endpoint.\n\nThe exact researched contracts are documented in\n[docs/provider-contracts.md](/burakgon/ai-usage-menubar/blob/main/docs/provider-contracts.md).\n\nThe default **Auto** mode shows the provider with the highest used percentage\nfor the selected period. You can independently choose Claude Code, Codex, or\nAuto; Session or Weekly; and whether numbers mean Used or Left.\n**Left** is the default number mode. The menu bar stays compact and shows only\nthe selected percentage; its meaning remains visible in the panel.\n\nRaw percentages are shown exactly as reported by the provider. Only progress\nbar drawing is clamped to `0...100`\n\n. Remaining usage is bounded to `0...100`\n\nbecause a negative remaining percentage is not meaningful.\n\nRun the complete test suite:\n\n```\nxcodebuild test \\\n  -project AIUsage.xcodeproj \\\n  -scheme AIUsage \\\n  -destination 'platform=macOS'\n```\n\nThe app is SwiftUI and AppKit, with a small provider layer and an in-memory\nstore. Its only runtime package dependency is\n[Sparkle](https://github.com/sparkle-project/Sparkle), used for signed\nover-the-air updates.\n\nContributions are welcome. Please read [CONTRIBUTING.md](/burakgon/ai-usage-menubar/blob/main/CONTRIBUTING.md)\nbefore opening a pull request.\n\nRelease packaging and OTA feed maintenance are documented in\n[docs/releasing.md](/burakgon/ai-usage-menubar/blob/main/docs/releasing.md).\n\nProvider contracts and parts of the system-boundary implementation were\nadapted from [OpenUsage](https://github.com/robinebers/openusage), pinned to\ntag `v0.7.6`\n\n/ commit `5a2864f19a1c664f6a140ba06abad5596000af10`\n\n.\nSee [NOTICE](/burakgon/ai-usage-menubar/blob/main/NOTICE) for attribution.\n\nAI Usage is available under the [MIT License](/burakgon/ai-usage-menubar/blob/main/LICENSE).\n\nIf AI Usage saves you a few clicks, please\n[star the repository](https://github.com/burakgon/ai-usage-menubar). It helps\nother Claude Code and Codex users find it.", "url": "https://wpnews.pro/news/show-hn-ai-usage-native-macos-menu-bar-for-claude-code-and-codex-limits", "canonical_source": "https://github.com/burakgon/ai-usage-menubar", "published_at": "2026-07-28 06:43:05+00:00", "updated_at": "2026-07-28 06:52:23.812292+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "ai-products"], "entities": ["Burak Gön", "Claude Code", "Codex", "AI Usage", "macOS", "GitHub", "Sparkle", "OpenUsage"], "alternates": {"html": "https://wpnews.pro/news/show-hn-ai-usage-native-macos-menu-bar-for-claude-code-and-codex-limits", "markdown": "https://wpnews.pro/news/show-hn-ai-usage-native-macos-menu-bar-for-claude-code-and-codex-limits.md", "text": "https://wpnews.pro/news/show-hn-ai-usage-native-macos-menu-bar-for-claude-code-and-codex-limits.txt", "jsonld": "https://wpnews.pro/news/show-hn-ai-usage-native-macos-menu-bar-for-claude-code-and-codex-limits.jsonld"}}