prodex
prodex is a CLI wrapper for codex that separates multiple profiles by giving each one its own CODEX_HOME.
Install from crates.io:
For the shorter version, see QUICKSTART.md.
In short:
- one
prodexprofile = oneCODEX_HOMEdirectory - login is still handled by
codex prodexmanages profiles, the active profile, built-in quota checks, and launchingcodex
The mental model is similar to browser profiles, but for codex.
Quick Start
1. Install
Package page:
https://crates.io/crates/prodex
2. Import your current codex profile
If you already have an active login in ~/.codex:
This will:
- copy
~/.codexinto a new managed profile - store the profile in
~/.prodex/profiles/main - set
mainas the active profile
3. Add a new profile and log in
If you want a fresh empty profile:
prodex login does not handle the OAuth callback itself. It only runs codex login with the selected profile's CODEX_HOME.
4. View all quotas
Example MAIN column:
5h 37/100 used | weekly 12/100 used
5. Select the active profile and run codex
Or run directly with a specific profile:
Requirements
prodex relies on the following binaries:
codex
Quick check:
If you want to audit the prodex environment:
How It Works
prodex stores its own state in:
~/.prodex
The main structure is:
state.json: the list of profiles and the active profileprofiles/<name>: the managedCODEX_HOMEfor each profile
Authentication is still stored by codex inside each profile's auth.json.
Most Common Commands
Profile Management
Install from crates.io:
Add an empty profile:
Import from ~/.codex:
List all profiles:
Select the active profile:
Remove a profile:
Remove a profile and its managed home:
Login/Logout
Log in to a specific profile:
Log out from a specific profile:
Quota
Show quota for one profile:
Show raw quota JSON:
View all profiles at once:
Run codex
Run codex with the active profile:
Run codex with arguments:
Run with a specific profile:
Temporarily disable auto-rotate:
Skip quota preflight:
Quota Behavior
Before prodex run launches codex, prodex tries to check quota for the selected profile.
Before a profile is considered safe to use, prodex requires both the 5h and weekly quota windows to be present and still below 100/100.
If that profile does not clearly have remaining required quota:
prodex runtries to rotate to the next ready profile by default, including when you pass--profile- if you want the command to stay blocked on that profile instead, use
--no-auto-rotate - it prints the missing, unknown, or exhausted quota reasons
- it suggests other profiles that appear ready, when available
If auto-rotate succeeds, the active profile is updated to the profile that was used.
Important Notes
- quota checks are built into
prodexand use the ChatGPT backend endpoint used by Codex - ChatGPT quota can only be read when the profile uses ChatGPT auth, not an API key
- if a profile uses API key auth,
quota --allwill showerrorfor that profile prodexdoes not replacecodex; it only acts as a launcher and profile manager
Environment Variables
Override the prodex state location:
PRODEX_HOME=/path/to/prodex-home
Override the codex binary:
PRODEX_CODEX_BIN=/path/to/codex
Override the default ChatGPT quota base URL:
CODEX_CHATGPT_BASE_URL=https://chatgpt.com/backend-api
Development
Run during development:
Tests: