prodex
prodex is a CLI wrapper for codex that separates multiple profiles by giving each one its own CODEX_HOME.
For the shorter version, see QUICKSTART.md.
In short:
- one
prodexprofile = oneCODEX_HOMEdirectory - login is still handled by
codex prodexmanages profiles, the active profile, quota checks viacq, and launchingcodex
The mental model is similar to browser profiles, but for codex.
Quick Start
1. Build
The binary will be available at:
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:
codexcq
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
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 --alland quota preflight depend oncq- 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 cq binary:
PRODEX_CQ_BIN=/path/to/cq
Development
Run during development:
Tests: