Codex app orchestrator for multiple accounts on a Mac
CodexUse gives each of your Codex accounts its own Codex window and one action: Open when no window is running, Show when one is. It reads each account’s headroom, provides refill controls, opens another eligible account when usage runs low, and lets you plan a task with one account while another builds it.
The problem
The official Codex app signs in one account at a time. With a personal, a work, and a client account, the native workflow is sign out, sign in, lose the window state, repeat. Once you also want to use a cheaper or a local model for some tasks, you are editing config.toml by hand between runs.
The hard part is not saving logins. It is knowing which window belongs to which account, seeing how much quota each one has left, and putting the right account on the right task before a long run starts. Guess wrong and you burn a turn on the wrong quota.
One Codex window per account
An account in CodexUse is one OpenAI account (signed in with the same OAuth as Codex CLI, no API key) or one custom-model account on an OpenAI-compatible provider. Each account gets exactly one Codex window with its own Codex home, auth, config, and local history. CodexUse never creates a second window for the same account.
- Open starts the account’s window. Every other window keeps running and stays signed in.
- Show brings the running window to the front.
- ⌘K jumps to an account or a run by name from anywhere in CodexUse.
A window that CodexUse did not open shows an Outside CodexUse badge. CodexUse can see it and can take it over if you turn on Take over outside windows; restarting that window loses unsaved work in it, so CodexUse asks first.
Status words
Every account shows a status label. The Accounts row and detail header use the same label.
| Status | Meaning |
|---|---|
| Open | The window is running and idle. |
| Busy | The window is generating a response. |
| Ready | Signed in, no window running, headroom is fine. |
| Low | Signed in, one usage window is below your warning level. |
| Needs sign-in | The OpenAI login expired. Sign in again; nothing is deleted. |
| Needs setup | A custom-model account whose provider or models are missing. |
| Opening… | CodexUse is starting the window. |
Headroom, refill timers, and Auto-roll
Headroom is the percent of quota left that Codex reports per usage window: 5-hour, 7-day, and 30-day. CodexUse shows it per account so you can pick a planner with room before a long task.
Refill timers show the timing reported by Codex. The automatic control attempts a short background request after Auto-roll leaves an account; the manual control attempts one for eligible accounts. Neither control accelerates OpenAI’s refill time or creates quota.
Auto-roll moves the active account to the next one in your priority order when headroom drops below Roll below, brings an account back once it passes Rejoin above, and sends a Mac notification at Warn below. A confirm countdown cancels a stale roll, and the recent rolls log shows what happened and why. Auto-roll never moves an open conversation between windows.
Work: plan with one account, build with another
The Work tab turns several accounts into a division of labor. You describe the work, choose a folder, a planner account, and a worker account. The planner reads your request in its own Codex window and hands off a bounded brief. The worker builds in an isolated Git worktree under a workspace-write sandbox and never sees the planner’s transcript. You review the diff and the required checks, then Accept. Nothing merges without your review, and nothing is pushed.
A custom-model account can be the worker when its verified provider route supports the coding tools a worker needs and you allow that provider for the folder. That is how you plan with your best OpenAI model and build with a cheaper or local one. Read the planner and worker guide for the full flow.
How this fits with the CLI
Accounts are local and shared with the CLI on the same Mac. The CLI selects which account the Codex CLI uses next; that selection does not move a desktop conversation.
codexuse profile list
codexuse profile switch work
codexuse account-pool status
When to use what
| Need | Use |
|---|---|
| Open or show the Codex window for a specific account | Accounts tab, Open and Show |
| Plan a task with one account and build it with another | Work |
| Select which account the Codex CLI uses next | CLI: codexuse profile switch |
| Let another OpenAI-compatible tool share saved account quota | Account Pool |
| Run a non-OpenAI model in a Codex window | Custom-model account |
| Move before an account runs out of usage | Headroom, refill timers, and Auto-roll |
Guardrails
- CodexUse does not create extra quota. It makes account state and routing visible so you spend the quota you have on purpose.
- One account never gets two windows. Show is the only action when a window is running.
- Taking over an outside window restarts it, and unsaved work in it is lost.
- Auto-roll does not move an active conversation between windows.
- History lists local Codex tasks from every account and opens each in its owning window. It does not copy messages or cloud history between accounts.
- Account Pool is a local OpenAI-compatible API, not a hosted cloud service. Account limits still apply.
FAQ
Can the Codex app run with multiple accounts?
Yes, with CodexUse. Each account gets its own Codex home and its own Codex window. Open starts a window, Show brings it forward, and the status word (Open, Busy, Ready, Low, Needs sign-in, Needs setup) tells you what each account is doing. No account is signed out.
Does CodexUse require OpenAI API keys?
Not for an OpenAI account: CodexUse uses the same OAuth login as Codex CLI. A custom-model account does need a credential for that provider, which CodexUse keeps in the macOS Keychain. Account Pool creates a separate local key only when another OpenAI-compatible client talks to CodexUse’s local API.
Does CodexUse move active tasks between accounts?
No. History shows local tasks from every account together, then opens each task in the account and window that owns it.