A Desktop Application for Managing Multiple OpenAI Codex Accounts
Easily switch between accounts, monitor usage, schedule warm-ups, and stay in control of your quota
auth.json filesThe easiest way to install Codex Switcher is from the latest GitHub release:
Choose the file for your platform:
Codex.Switcher_*_aarch64.dmgCodex.Switcher_*_x64.dmgCodex.Switcher_*_x64-setup.exe or Codex.Switcher_*_x64_en-US.msiCodex.Switcher_*_amd64.debCodex.Switcher_*_amd64.AppImageCodex.Switcher-*-1.x86_64.rpmmacOS: current release builds are not Apple-notarized. If macOS says the app is damaged, move it to
/Applicationsand remove the quarantine flag:
bash sudo xattr -dr com.apple.quarantine "/Applications/Codex Switcher.app" open "/Applications/Codex Switcher.app"
Codex Switcher checks the latest GitHub release on startup. When a newer signed update package is available, the app shows an update prompt and can install it from inside the app.
# Clone the repository
git clone https://github.com/Lampese/codex-switcher.git
cd codex-switcher
# Install dependencies
pnpm install
# Run in development mode
pnpm tauri dev
# Build for production
pnpm tauri build
Windows: the
pnpm tauriscript runs through a POSIX shell wrapper (sh ./scripts/tauri.sh) and will not work in PowerShell/CMD. Use thetauri:winscript instead:pnpm tauri:win devandpnpm tauri:win build.
The built application will be in src-tauri/target/release/bundle/.
You can also serve the built dashboard over HTTP instead of opening the Tauri shell.
# Build the frontend and start the web server on 0.0.0.0:3210
pnpm lan
Optional environment variables:
CODEX_SWITCHER_WEB_HOST to override the bind hostCODEX_SWITCHER_WEB_PORT to override the portThe browser dashboard serves the same UI and backend actions through /api/invoke/*, which makes it usable over LAN, Tailscale, or a remote host tunnel when you expose the chosen port safely.
Codex Switcher shows two kinds of account usage information:
The tray popup also includes compact active-account stats for today and the last 7 days, while keeping the normal rate-limit refresh flow separate.
A warm-up sends one minimal request to an account so its current 5-hour usage window starts counting — handy for activating a window before you need it.
08:00, 13:00, 18:00) from
the Timed control in the main window. At each time the app warms all
accounts (skipping any whose weekly limit is exhausted), so you control when
your 5-hour windows start instead of letting them drift.Timed warm-up checks the schedule every 30 seconds, runs each configured minute only once per day, and skips missed times if the machine was asleep instead of warming accounts late.
On macOS you can keep the machine awake with the built-in caffeinate command,
which stops automatically when the app quits:
caffeinate -i -w "$(pgrep -x 'Codex Switcher')"
This tool is designed exclusively for individuals who personally own multiple OpenAI/ChatGPT accounts. It is intended to help users manage their own accounts more conveniently.
This tool is NOT intended for:
By using this software, you agree that you are the rightful owner of all accounts you add to the application. The authors are not responsible for any misuse or violations of OpenAI's terms of service.
Use the version bump helper to keep app versions in sync across Tauri, Cargo, and the frontend.
# Exact version
pnpm version:bump 0.2.1
# Semver bumps
pnpm version:patch
pnpm version:minor
pnpm version:major
# Prepare a release commit and tag
# This automatically runs the version bump first.
pnpm release patch
# Prepare and push a release
# This automatically runs the version bump first.
pnpm release patch -- --push
$ claude mcp add codex-switcher \
-- python -m otcore.mcp_server <graph>