Skip to main content
CDX Manager icon

CDX Manager


License Version Python

The right AI coding account, when you need it. CDX Manager keeps your Codex and Claude accounts in separate profiles, shows which ones have quota, and helps you pick the next usable session from your terminal.

When one account hits a limit mid-task, you should not have to guess which login still works or rebuild your context from memory. CDX shows the available accounts and can prepare a transcript-backed handoff to another session.

cdx status showing quota and availability across accounts

Get started in a minute

Install with npm (Node.js 18+ and Python 3.9+):

npm install -g cdx-manager
cdx add codex work
cdx add claude personal
cdx status
cdx next
cdx work

cdx next recommends a session and prints the launch command; cdx work opens your isolated work profile. CDX also supports Antigravity and local Ollama sessions. Prefer pipx or uv? See installation and setup.

cdx next recommending an available session and explaining why

What you can do

Need CDX command Detail
See quota and choose an account cdx status, cdx next Quota-aware routing
Keep logins and settings separate cdx add, cdx <name>, cdx set Isolated sessions
Continue work in another session cdx handoff source target Context handoff
Run a prompt from a script cdx run --prompt "..." --json Headless automation
Inspect usage or get an alert cdx stats, cdx ready Maintenance and notifications
See which agents wait for you cdx agents --json Agent state

CDX checks authentication before interactive launches. Handoff keeps the source transcript in place and asks the receiving agent to verify the conversation and workspace before acting. No account switch or prompt submission happens just because you run cdx next.

Cache efficiency and fix rounds

cdx history --json records uncached input, cache reads, cache writes, output tokens, and usage.cache_hit_ratio beside the existing token totals. The ratio is cache reads divided by all input tokens, excluding output. Missing provider splits stay null, and text views show cache n/d instead of claiming a zero hit rate.

cdx stats --json adds cache_usage sums and an input-weighted cache_hit_ratio to each session, project (--by project), model (--by model), and total. cache_usage preserves unknown sums as null; existing numeric aggregate fields keep their previous behavior. Ratios include only runs with measured input and cache reads. Coverage is explicit in measured_runs and measured_input_tokens. run_types.cold and run_types.continued expose counts, sums, and ratios for comparison. Text views show values such as cache 72 % next to tokens.

Reuse a completed run's provider conversation for another fix round:

cdx run work --cwd /path/to/repo --prompt "Implement the change" --reasoning-effort high --json
cdx run --continue-run RUN_ID --cwd /path/to/repo --prompt "Fix the remaining test failure" --json

--continue-run resumes the exact Claude session or Codex thread and pins the previous run's recorded model and effort, even if the profile settings changed. The profile is inferred from the parent; an explicit session or provider must match. An explicit model or effort must also match. Runs and history record parent_run_id and conversation_id. Detached continuations use the cdx child supervisor with the same pins. Codex continuation usage is measured between exact transcript snapshots before and after the run, since exec resume can report conversation totals. If either boundary is unavailable, per-run usage stays unknown with usage_attribution: "continuation_usage_unavailable" in history instead of counting earlier turns again.

Conservative assumption: a continuation requires a finished Claude or Codex run, a locally available provider transcript, and recorded model and effort settings. Missing runs, profiles, expired sessions, and unavailable settings produce a clear error; the caller can retry without --continue-run for a cold run. --failover and --isolate-workspace cannot be combined with continuation. Capacity recovery and provider model fallback are disabled for continuations so they cannot silently switch model or account. Provider cache retention remains provider-controlled, so resuming does not guarantee a cache hit.

Run costs and budgets

cdx history --json includes nullable cost_usd for each entry, estimated from its observed usage and serving model using the same table and CDX_TOKEN_PRICES overrides as cdx stats. Unknown prices or usage stay null.

cdx run work --cwd /path/to/repo --prompt "Fix the tests" --budget 2.50 --json

--budget stops a run once its measured estimated cost reaches the USD amount, including with --detach and --continue-run. A budget stop exits with code 125 and reports error.code: "budget_exceeded" and error.spent_usd. Detached callers read the final result through cdx run-status or cdx run-report. Usage arrives in provider updates, so the estimate can overshoot; unknown usage or prices cannot trigger a budget stop. See the budget contract for details.

Codex model capacity recovery

cdx run (including --detach) automatically recovers from Codex's "Selected model is at capacity" failure. It retries the same prompt, profile, and model after 1 and 2 seconds, then tries the profile's fallback_model list in configured order, removing duplicates. Configure alternatives with cdx set work --fallback-model MODEL_A,MODEL_B.

After exhausting those models, CDX selects another ready Codex profile using the normal ranking, including profile priority. Disabled, logged-out, never, and ask-first profiles are excluded from automatic selection. To choose an ask-first profile explicitly, name it in a new command (cdx run NAME ...). Each successor uses --model if supplied, otherwise its own configured/default model, followed by its own fallback list. Each model gets at most three attempts; at most four profile switches are allowed. Settings are not changed. Each attempt retains the command's timeout; the backoff adds at most three seconds per model.

Recovery does not require --failover, which still controls account quota exhaustion separately. Other provider failures and timeouts do not trigger capacity recovery. Attempts restart the prompt in the same workspace; files from earlier attempts remain there. Each retry, model fallback, profile fallback, and exhausted budget is logged to stderr and persisted in recovery_events in the run registry and final JSON (cdx run-status / cdx run-report). Events include archived attempt output paths. Recovery keeps one run ID and reports the final effective model. If no eligible alternative remains or the profile switch budget is reached, the run fails with capacity_recovery_exhausted.

Documentation

Contributions are welcome; see CONTRIBUTING.md. CDX Manager is MIT licensed.

Metadata

Release files for cdx-manager 0.25.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cdx-manager 0.25.1
File Size Uploaded Provenance Actions
cdx_manager-0.25.1.tar.gz 482.7 kB Without provenance Details for cdx_manager-0.25.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for cdx-manager 0.25.1
File Interpreter ABI Platform Actions
cdx_manager-0.25.1-py3-none-any.whl Python 3 none any Details for cdx_manager-0.25.1-py3-none-any.whl

Total release size: 801.0 kB

Release files / cdx_manager-0.25.1.tar.gz

Download URL cdx_manager-0.25.1.tar.gz
Size 482.7 kB
Tags Source
SHA-256 checksum
How to use checksums
665dd71519ae285a7ea3a01f42e1a71e1857ed588cf6d0d7a6fd97f43a29afb5
BLAKE2b-256 checksum
How to use checksums
e27f86d95bef476938ce35f5fab52059239d0f5ae6243fb71d167741291d8653
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.11.17

Release files / cdx_manager-0.25.1-py3-none-any.whl

Download URL cdx_manager-0.25.1-py3-none-any.whl
Size 318.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3b49a886f7848b02e1350907a1f00df20579d6f868d7e8e0625c868116e6289e
BLAKE2b-256 checksum
How to use checksums
853a7f7d56decf276fed43d5083d81a02c678d1b8bf28f81a79a2cc7196c791b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.11.17

Security for cdx-manager 0.25.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.25.1 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page