{"id":49853273,"url":"https://github.com/vyctorbrzezowski/codex-switchboard","last_synced_at":"2026-05-31T20:00:50.961Z","repository":{"id":357222980,"uuid":"1235588401","full_name":"vyctorbrzezowski/codex-switchboard","owner":"vyctorbrzezowski","description":"Local-first macOS menu bar app for OpenAI Codex quota tracking, multi-account switching, and workspace usage visibility.","archived":false,"fork":false,"pushed_at":"2026-05-27T22:48:44.000Z","size":5570,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-05-28T00:21:17.693Z","etag":null,"topics":["account-switcher","codex","local-first","macos","menu-bar-app","openai-codex","quota-tracker","swift","swiftui","usage-tracker"],"latest_commit_sha":null,"homepage":"https://vyctorbrzezowski.github.io/codex-switchboard/","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/vyctorbrzezowski.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"Support/AppIcon-1024.png","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-11T13:18:43.000Z","updated_at":"2026-05-27T22:48:46.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vyctorbrzezowski/codex-switchboard","commit_stats":null,"previous_names":["vyctorbrzezowski/codex-switchboard"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/vyctorbrzezowski/codex-switchboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vyctorbrzezowski%2Fcodex-switchboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vyctorbrzezowski%2Fcodex-switchboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vyctorbrzezowski%2Fcodex-switchboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vyctorbrzezowski%2Fcodex-switchboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vyctorbrzezowski","download_url":"https://codeload.github.com/vyctorbrzezowski/codex-switchboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vyctorbrzezowski%2Fcodex-switchboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33746513,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"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":["account-switcher","codex","local-first","macos","menu-bar-app","openai-codex","quota-tracker","swift","swiftui","usage-tracker"],"created_at":"2026-05-14T18:06:23.090Z","updated_at":"2026-05-31T20:00:50.934Z","avatar_url":"https://github.com/vyctorbrzezowski.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Codex Switchboard: macOS Codex quota tracker and account switcher\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-macOS%2013+-000000?logo=apple\" alt=\"macOS 13+\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/swift-5.9-F05138?logo=swift\" alt=\"Swift 5.9\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-blue\" alt=\"License: MIT\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  A local-first macOS menu bar app for OpenAI Codex quota tracking, multi-account switching, and workspace usage visibility.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"Support/screenshots/empty-state.png\" width=\"320\" alt=\"Codex Switchboard macOS menu bar empty account state\"\u003e\n  \u003cimg src=\"Support/screenshots/compact-view.png\" width=\"320\" alt=\"Codex Switchboard compact Codex quota and account usage view\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"Support/screenshots/grouped-teams.png\" width=\"320\" alt=\"Codex Switchboard OpenAI workspace grouped account switcher\"\u003e\n  \u003cimg src=\"Support/screenshots/expanded-view.png\" width=\"320\" alt=\"Codex Switchboard expanded Codex usage and reset window view\"\u003e\n\u003c/p\u003e\n\n---\n\n## Overview\n\n**Codex Switchboard** helps you track OpenAI Codex usage, monitor quota reset windows, and manage multiple Codex accounts and workspaces directly from your Mac menu bar.\n\n- View best-effort Codex quota and usage across all your accounts\n- Group accounts by workspace/team\n- Instantly see which account is active\n- Switch active accounts with one click\n- Identify invalid or deactivated accounts\n\n\u003e **Disclaimer:** Codex Switchboard is not affiliated with OpenAI. It does not change Codex/OpenAI limits, share accounts, or automate account cycling. It only helps you view local usage state and manually switch between accounts you control.\n\n## Features\n\n- **Codex Quota Dashboard** — Best-effort usage tracking across all linked accounts\n- **Workspace Grouping** — Accounts organized by team/workspace\n- **Account Health** — Visual indicators for invalid or deactivated accounts\n- **One-Click Switching** — Change your active Codex account instantly\n- **Automatic Token Refresh** — Expired access tokens are refreshed locally when possible before asking you to re-login\n- **Local-First** — All data stays on your machine; no cloud sync\n- **Secure Token Storage** — Sensitive files written with `0600` permissions\n- **Smart Ordering** — Accounts are implicitly ranked by a composite score so the \"best account to use now\" surfaces to the top\n\n## Smart Ordering\n\nCodex Switchboard automatically re-orders your accounts so the best one to use right now appears first.\n\n- **Smart score** — `min(sessionFree, weeklyFree)`; the account with the highest bottlenecked balance wins.\n- **Priority strip** — Accounts with useful balance whose weekly window resets in less than 24 hours get a temporary urgency boost and appear in a dedicated top section.\n- **Exhausted accounts** — Sorted by who resets first, so you know which one will be usable again soonest.\n- **Free reset group** — Free-plan accounts waiting for session reset are grouped separately so daily-use paid/workspace accounts stay easier to scan.\n\n## Requirements\n\n- macOS 13 (Ventura) or newer\n- [Codex.app](https://github.com/openai/codex) installed in `/Applications/Codex.app` (for account switching)\n\n## Installation\n\n### Option 1: Installer Package (Recommended)\n\nDownload the latest `.pkg` from [Releases](../../releases), double-click to run the installer, and Codex Switchboard will be installed to `/Applications`.\n\n### Option 2: Build From Source\n\n```bash\ngit clone https://github.com/vyctorbrzezowski/codex-switchboard.git\ncd codex-switchboard\nswift test\nswift build\n./build-app.sh\nopen dist/CodexSwitchboard.app\n```\n\n### Building the Installer\n\nTo generate a `.pkg` installer from the built app:\n\n```bash\n./build-app.sh\n./build-pkg.sh\n```\n\nThe installer will be created at `dist/CodexSwitchboard-\u003cversion\u003e.pkg`.\n\n## Data \u0026 Privacy\n\nCodex Switchboard is local-first and never syncs tokens or exposes a remote service.\n\n### Local Files\n\n| Path | Purpose |\n|------|---------|\n| `~/Library/Application Support/CodexSwitchboard/accounts.json` | Account list |\n| `~/Library/Application Support/CodexSwitchboard/profiles/\u003cprofile\u003e/auth.json` | Profile tokens |\n| `~/Library/Application Support/CodexSwitchboard/profiles/\u003cprofile\u003e/meta.json` | Profile metadata |\n| `~/Library/Application Support/CodexSwitchboard/accounts-snapshot.json` | Usage snapshots |\n| `~/Library/Application Support/CodexSwitchboard/team-name-cache.json` | Team name cache |\n| `~/Library/Application Support/CodexSwitchboard/backups/\u003ctimestamp\u003e-remove-account/` | Backups before removal |\n\nAll sensitive files are written with `0600` permissions. Removal actions create backups before deleting profile data.\n\n### Network Calls\n\nThe app uses your local Codex/OpenAI auth tokens to query:\n\n- `https://chatgpt.com/backend-api/codex/usage`\n- `https://chatgpt.com/backend-api/accounts/check/v4-2023-04-27`\n- `https://auth.openai.com/oauth/authorize`\n- `https://auth.openai.com/oauth/token`\n\nThese are not official public APIs and may change without notice.\n\n### Security\n\n- Bearer tokens are never logged or transmitted to third parties\n- OAuth callback server binds only to `localhost:1455` and closes immediately after login\n- See [SECURITY.md](SECURITY.md) for the full threat model\n\n## FAQ\n\n### Does Codex Switchboard work with OpenAI Codex?\n\nYes. Codex Switchboard is built for local OpenAI Codex account usage visibility and manual account switching on macOS.\n\n### Does it track Codex quota and reset windows?\n\nIt shows best-effort Codex usage and reset timing from the local app using your existing Codex/OpenAI auth state. The underlying endpoints are not official public APIs and may change.\n\n### Does it switch Codex accounts automatically?\n\nNo. Codex Switchboard does not automate account cycling. It only changes the active local Codex account after an explicit manual action.\n\n### Does it upload tokens or account data?\n\nNo. Codex Switchboard is local-first and does not sync tokens, account data, or usage snapshots to a third-party service.\n\n## Contributing\n\nIssues and pull requests are welcome. Please keep changes local-first, avoid token logging, and run `swift test` before opening a PR.\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvyctorbrzezowski%2Fcodex-switchboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvyctorbrzezowski%2Fcodex-switchboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvyctorbrzezowski%2Fcodex-switchboard/lists"}