{"id":34384925,"url":"https://github.com/steipete/codexbar","last_synced_at":"2026-04-08T05:01:59.532Z","repository":{"id":324581159,"uuid":"1097695258","full_name":"steipete/CodexBar","owner":"steipete","description":"Show usage stats for OpenAI Codex and Claude Code, without having to login.","archived":false,"fork":false,"pushed_at":"2026-04-07T21:12:11.000Z","size":22339,"stargazers_count":10147,"open_issues_count":226,"forks_count":752,"subscribers_count":40,"default_branch":"main","last_synced_at":"2026-04-07T21:26:12.488Z","etag":null,"topics":["ai","claude-code","codex","swift"],"latest_commit_sha":null,"homepage":"https://codexbar.app","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/steipete.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-11-16T17:00:44.000Z","updated_at":"2026-04-07T21:12:16.000Z","dependencies_parsed_at":"2025-12-28T18:00:33.108Z","dependency_job_id":"c9ba5ed4-f7be-4046-8886-e8a3eeb465d0","html_url":"https://github.com/steipete/CodexBar","commit_stats":null,"previous_names":["steipete/codexbar"],"tags_count":49,"template":false,"template_full_name":null,"purl":"pkg:github/steipete/CodexBar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steipete%2FCodexBar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steipete%2FCodexBar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steipete%2FCodexBar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steipete%2FCodexBar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/steipete","download_url":"https://codeload.github.com/steipete/CodexBar/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steipete%2FCodexBar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31540826,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","claude-code","codex","swift"],"created_at":"2025-12-18T22:00:25.073Z","updated_at":"2026-04-08T05:01:59.522Z","avatar_url":"https://github.com/steipete.png","language":"Swift","readme":"# CodexBar 🎚️ - May your tokens never run out.\n\nTiny macOS 14+ menu bar app that keeps your Codex, Claude, Cursor, Gemini, Antigravity, Droid (Factory), Copilot, z.ai, Kiro, Vertex AI, Augment, Amp, JetBrains AI, OpenRouter, and Perplexity limits visible (session + weekly where available) and shows when each window resets. One status item per provider (or Merge Icons mode with a provider switcher and optional Overview tab); enable what you use from Settings. No Dock icon, minimal UI, dynamic bar icons in the menu bar.\n\n\u003cimg src=\"codexbar.png\" alt=\"CodexBar menu screenshot\" width=\"520\" /\u003e\n\n## Install\n\n### Requirements\n- macOS 14+ (Sonoma)\n\n### GitHub Releases\nDownload: \u003chttps://github.com/steipete/CodexBar/releases\u003e\n\n### Homebrew\n```bash\nbrew install --cask steipete/tap/codexbar\n```\n\n### Linux (CLI only)\n```bash\nbrew install steipete/tap/codexbar\n```\nOr download `CodexBarCLI-v\u003ctag\u003e-linux-\u003carch\u003e.tar.gz` from GitHub Releases.\nLinux support via Omarchy: community Waybar module and TUI, driven by the `codexbar` executable.\n\n### First run\n- Open Settings → Providers and enable what you use.\n- Install/sign in to the provider sources you rely on (e.g. `codex`, `claude`, `gemini`, browser cookies, or OAuth; Antigravity requires the Antigravity app running).\n- Optional: Settings → Providers → Codex → OpenAI cookies (Automatic or Manual) to add dashboard extras.\n\n## Providers\n\n- [Codex](docs/codex.md) — Local Codex CLI RPC (+ PTY fallback) and optional OpenAI web dashboard extras.\n- [Claude](docs/claude.md) — OAuth API or browser cookies (+ CLI PTY fallback); session + weekly usage.\n- [Cursor](docs/cursor.md) — Browser session cookies for plan + usage + billing resets.\n- [Gemini](docs/gemini.md) — OAuth-backed quota API using Gemini CLI credentials (no browser cookies).\n- [Antigravity](docs/antigravity.md) — Local language server probe (experimental); no external auth.\n- [Droid](docs/factory.md) — Browser cookies + WorkOS token flows for Factory usage + billing.\n- [Copilot](docs/copilot.md) — GitHub device flow + Copilot internal usage API.\n- [z.ai](docs/zai.md) — API token (Keychain) for quota + MCP windows.\n- [Kimi](docs/kimi.md) — Auth token (JWT from `kimi-auth` cookie) for weekly quota + 5‑hour rate limit.\n- [Kimi K2](docs/kimi-k2.md) — API key for credit-based usage totals.\n- [Kiro](docs/kiro.md) — CLI-based usage via `kiro-cli /usage` command; monthly credits + bonus credits.\n- [Vertex AI](docs/vertexai.md) — Google Cloud gcloud OAuth with token cost tracking from local Claude logs.\n- [Augment](docs/augment.md) — Browser cookie-based authentication with automatic session keepalive; credits tracking and usage monitoring.\n- [Amp](docs/amp.md) — Browser cookie-based authentication with Amp Free usage tracking.\n- [JetBrains AI](docs/jetbrains.md) — Local XML-based quota from JetBrains IDE configuration; monthly credits tracking.\n- [OpenRouter](docs/openrouter.md) — API token for credit-based usage tracking across multiple AI providers.\n- Open to new providers: [provider authoring guide](docs/provider.md).\n\n## Icon \u0026 Screenshot\nThe menu bar icon is a tiny two-bar meter:\n- Top bar: 5‑hour/session window. If weekly is missing/exhausted and credits are available, it becomes a thicker credits bar.\n- Bottom bar: weekly window (hairline).\n- Errors/stale data dim the icon; status overlays indicate incidents.\n\n## Features\n- Multi-provider menu bar with per-provider toggles (Settings → Providers).\n- Session + weekly meters with reset countdowns.\n- Optional Codex web dashboard enrichments (code review remaining, usage breakdown, credits history).\n- Local cost-usage scan for Codex + Claude (last 30 days).\n- Provider status polling with incident badges in the menu and icon overlay.\n- Merge Icons mode to combine providers into one status item + switcher, with an optional Overview tab for up to three providers.\n- Refresh cadence presets (manual, 1m, 2m, 5m, 15m).\n- Bundled CLI (`codexbar`) for scripts and CI (including `codexbar cost --provider codex|claude` for local cost usage); Linux CLI builds available.\n- WidgetKit widget mirrors the menu card snapshot.\n- Privacy-first: on-device parsing by default; browser cookies are opt-in and reused (no passwords stored).\n\n## Privacy note\nWondering if CodexBar scans your disk? It doesn’t crawl your filesystem; it reads a small set of known locations (browser cookies/local storage, local JSONL logs) when the related features are enabled. See the discussion and audit notes in [issue #12](https://github.com/steipete/CodexBar/issues/12).\n\n## macOS permissions (why they’re needed)\n- **Full Disk Access (optional)**: only required to read Safari cookies/local storage for web-based providers (Codex web, Claude web, Cursor, Droid/Factory). If you don’t grant it, use Chrome/Firefox cookies or CLI-only sources instead.\n- **Keychain access (prompted by macOS)**:\n  - Chrome cookie import needs the “Chrome Safe Storage” key to decrypt cookies.\n  - Claude OAuth credentials (written by the Claude CLI) are read from Keychain when present.\n  - z.ai API token is stored in Keychain from Preferences → Providers; Copilot stores its API token in Keychain during device flow.\n  - **How do I prevent those keychain alerts?**\n    - Open **Keychain Access.app** → login keychain → search the item (e.g., “Claude Code-credentials”).\n    - Open the item → **Access Control** → add `CodexBar.app` under “Always allow access by these applications”.\n    - Prefer adding just CodexBar (avoid “Allow all applications” unless you want it wide open).\n    - Relaunch CodexBar after saving.\n    - Reference screenshot: ![Keychain access control](docs/keychain-allow.png)\n  - **How to do the same for the browser?**\n    - Find the browser’s “Safe Storage” key (e.g., “Chrome Safe Storage”, “Brave Safe Storage”, “Firefox”, “Microsoft Edge Safe Storage”).\n    - Open the item → **Access Control** → add `CodexBar.app` under “Always allow access by these applications”.\n    - This removes the prompt when CodexBar decrypts cookies for that browser.\n- **Files \u0026 Folders prompts (folder/volume access)**: CodexBar launches provider CLIs (codex/claude/gemini/antigravity). If those CLIs read a project directory or external drive, macOS may ask CodexBar for that folder/volume (e.g., Desktop or an external volume). This is driven by the CLI’s working directory, not background disk scanning.\n- **What we do not request**: no Screen Recording, Accessibility, or Automation permissions; no passwords are stored (browser cookies are reused when you opt in).\n\n## Docs\n- Providers overview: [docs/providers.md](docs/providers.md)\n- Provider authoring: [docs/provider.md](docs/provider.md)\n- UI \u0026 icon notes: [docs/ui.md](docs/ui.md)\n- CLI reference: [docs/cli.md](docs/cli.md)\n- Architecture: [docs/architecture.md](docs/architecture.md)\n- Refresh loop: [docs/refresh-loop.md](docs/refresh-loop.md)\n- Status polling: [docs/status.md](docs/status.md)\n- Sparkle updates: [docs/sparkle.md](docs/sparkle.md)\n- Release checklist: [docs/RELEASING.md](docs/RELEASING.md)\n\n## Getting started (dev)\n- Clone the repo and open it in Xcode or run the scripts directly.\n- Launch once, then toggle providers in Settings → Providers.\n- Install/sign in to provider sources you rely on (CLIs, browser cookies, or OAuth).\n- Optional: set OpenAI cookies (Automatic or Manual) for Codex dashboard extras.\n\n## Build from source\n```bash\nswift build -c release          # or debug for development\n./Scripts/package_app.sh        # builds CodexBar.app in-place\nCODEXBAR_SIGNING=adhoc ./Scripts/package_app.sh  # ad-hoc signing (no Apple Developer account)\nopen CodexBar.app\n```\n\nDev loop:\n```bash\n./Scripts/compile_and_run.sh\n```\n\n## Related\n- ✂️ [Trimmy](https://github.com/steipete/Trimmy) — “Paste once, run once.” Flatten multi-line shell snippets so they paste and run.\n- 🧳 [MCPorter](https://mcporter.dev) — TypeScript toolkit + CLI for Model Context Protocol servers.\n- 🧿 [oracle](https://askoracle.dev) — Ask the oracle when you're stuck. Invoke GPT-5 Pro with a custom context and files.\n\n## Looking for a Windows version?\n- [Win-CodexBar](https://github.com/Finesssee/Win-CodexBar)\n\n## Credits\nInspired by [ccusage](https://github.com/ryoppippi/ccusage) (MIT), specifically the cost usage tracking.\n\n## License\nMIT • Peter Steinberger ([steipete](https://twitter.com/steipete))\n","funding_links":[],"categories":["Openai"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteipete%2Fcodexbar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsteipete%2Fcodexbar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteipete%2Fcodexbar/lists"}