@christiandoxa/prodex 0.2.107 → 0.2.109

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +57 -65
  2. package/package.json +7 -7
package/README.md CHANGED
@@ -1,15 +1,27 @@
1
1
  # prodex
2
2
 
3
- Safe multi-account auto-rotate for `codex`.
3
+ [![CI](https://github.com/christiandoxa/prodex/actions/workflows/ci.yml/badge.svg)](https://github.com/christiandoxa/prodex/actions/workflows/ci.yml)
4
4
 
5
- `prodex` wraps `codex` with isolated profiles, built-in quota checks, and seamless account rotation.
5
+ One OpenAI profile pool for Codex CLI and Claude Code.
6
6
 
7
- ## Why prodex
7
+ `prodex` gives you two entry points backed by the same OpenAI account pool:
8
8
 
9
- - auto-rotate to another ready account when the current one is quota-blocked or temporarily unhealthy
10
- - keep each account isolated in its own `CODEX_HOME`
11
- - preserve continuation affinity so ongoing chains stay on the right account
12
- - keep transport behavior close to direct `codex`
9
+ | Use case | Command |
10
+ | --- | --- |
11
+ | Run Codex CLI through Prodex | `prodex` or `prodex run` |
12
+ | Run Claude Code through Prodex | `prodex claude` |
13
+
14
+ It keeps each profile isolated, checks quota before launch, and rotates to another ready account before a request or stream is committed.
15
+
16
+ Use `prodex` when Codex CLI is your front end. Use `prodex claude` when Claude Code is your front end. The account pool, profile isolation, quota checks, and continuation routing stay in Prodex either way.
17
+
18
+ ## Requirements
19
+
20
+ - An OpenAI account, plus at least one logged-in Prodex profile
21
+ - Codex CLI if you want to use `prodex`
22
+ - Claude Code (`claude`) if you want to use `prodex claude`
23
+
24
+ If you install `@christiandoxa/prodex` from npm, the Codex runtime dependency is installed for you. Claude Code is still a separate CLI and should already be available on your `PATH` when you use `prodex claude`.
13
25
 
14
26
  ## Install
15
27
 
@@ -19,8 +31,6 @@ Install from npm:
19
31
  npm install -g @christiandoxa/prodex
20
32
  ```
21
33
 
22
- This is usually the lightest option because it does not need a local Rust build.
23
-
24
34
  Or install from [crates.io](https://crates.io/crates/prodex):
25
35
 
26
36
  ```bash
@@ -29,120 +39,102 @@ cargo install prodex
29
39
 
30
40
  The npm package version is kept in lockstep with the published crate version.
31
41
 
32
- ## Update Tips
42
+ ## Update
33
43
 
34
- Check your installed version first:
44
+ Check your installed version:
35
45
 
36
46
  ```bash
37
47
  prodex --version
38
48
  ```
39
49
 
40
- The current local binary version in this repo is `0.2.107`, so matching update commands look like this:
50
+ The current local version in this repo is `0.2.109`:
41
51
 
42
52
  ```bash
43
- npm install -g @christiandoxa/prodex@0.2.107
44
- cargo install prodex --force --version 0.2.107
53
+ npm install -g @christiandoxa/prodex@0.2.109
54
+ cargo install prodex --force --version 0.2.109
45
55
  ```
46
56
 
47
- If you just want the lighter install path, prefer npm over `cargo install` because npm does not need to compile `prodex` locally.
48
-
49
- If you want to move from a Cargo-installed binary to npm, uninstall the Cargo binary first and then install the npm package:
57
+ If you want to switch from a Cargo-installed binary to npm:
50
58
 
51
59
  ```bash
52
60
  cargo uninstall prodex
53
61
  npm install -g @christiandoxa/prodex
54
62
  ```
55
63
 
56
- ## Quick Start
64
+ ## Start
57
65
 
58
- Import your current `codex` login:
66
+ Import your current login:
59
67
 
60
68
  ```bash
61
69
  prodex profile import-current main
62
70
  ```
63
71
 
64
- Or create a profile through `codex login`:
72
+ Or create a profile through the normal Codex login flow:
65
73
 
66
74
  ```bash
67
75
  prodex login
68
- ```
69
-
70
- If you need device-code auth, pass it through unchanged:
71
-
72
- ```bash
73
76
  prodex login --device-auth
74
77
  ```
75
78
 
76
- Check quotas:
79
+ Check the pool:
77
80
 
78
81
  ```bash
82
+ prodex profile list
79
83
  prodex quota --all
80
84
  prodex info
81
85
  ```
82
86
 
83
- Run `codex` with safe auto-rotate:
84
-
85
- ```bash
86
- prodex
87
- prodex run
88
- ```
89
-
90
- Running `prodex` without a subcommand is shorthand for `prodex run`.
87
+ ## Use `prodex` for Codex CLI
91
88
 
92
- Resume a saved Codex session directly:
89
+ `prodex` without a subcommand is shorthand for `prodex run`.
93
90
 
94
91
  ```bash
92
+ prodex
93
+ prodex run --profile second
95
94
  prodex run 019c9e3d-45a0-7ad0-a6ee-b194ac2d44f9
95
+ printf 'context from stdin' | prodex run exec "summarize this"
96
96
  ```
97
97
 
98
- Pin a specific profile when needed:
98
+ Use this path when you want Codex CLI itself to be the front end. Prodex handles profile selection, quota preflight, continuation affinity, and safe pre-commit rotation across your OpenAI-backed profiles.
99
+
100
+ ## Use `prodex claude` for Claude Code
99
101
 
100
102
  ```bash
101
- prodex run --profile second
103
+ prodex claude -- -p "summarize this repo"
104
+ prodex claude --profile second -- -p --output-format json "show the latest diff"
102
105
  ```
103
106
 
104
- `prodex run exec` also preserves stdin passthrough, so prompt and piped input stay together:
107
+ Use this path when you want Claude Code to be the front end while Prodex still routes requests through the same OpenAI-backed profile pool.
105
108
 
106
- ```bash
107
- printf 'context from stdin' | prodex run exec "summarize this"
108
- ```
109
+ - `prodex claude` runs Claude Code through a local Anthropic-compatible proxy
110
+ - Claude Code state is isolated per profile in `CLAUDE_CONFIG_DIR`
111
+ - the initial Claude model follows the shared Codex `config.toml` model when available
112
+ - Claude's `opus`, `sonnet`, and `haiku` picker entries are pinned to representative GPT models
113
+ - Claude `max` effort maps to OpenAI `xhigh` when the selected GPT model supports it
114
+ - Claude Code itself only exposes built-in aliases plus one custom model option on third-party providers
115
+ - use `PRODEX_CLAUDE_BIN` if `claude` is not on `PATH`
116
+ - use `PRODEX_CLAUDE_MODEL` to force a specific upstream Responses model
117
+ - use `PRODEX_CLAUDE_REASONING_EFFORT` to force the upstream reasoning tier
109
118
 
110
- Run Claude Code through the same profile pool:
119
+ Example:
111
120
 
112
121
  ```bash
113
- prodex claude -- -p "summarize this repo"
122
+ PRODEX_CLAUDE_MODEL=gpt-5.2 PRODEX_CLAUDE_REASONING_EFFORT=xhigh prodex claude -- -p "hello"
114
123
  ```
115
124
 
116
- ## Core Commands
125
+ ## Common Commands
117
126
 
118
127
  ```bash
119
- prodex
120
- prodex exec "review this repo"
121
128
  prodex profile list
122
129
  prodex use --profile main
123
- prodex info
130
+ prodex current
124
131
  prodex quota --all
125
132
  prodex quota --all --once
133
+ prodex info
126
134
  prodex doctor
127
135
  prodex doctor --runtime
128
- prodex run
129
- prodex run 019c9e3d-45a0-7ad0-a6ee-b194ac2d44f9
130
- prodex claude -- -p "summarize this repo"
131
136
  ```
132
137
 
133
- ## Notes
134
-
135
- - one `prodex` profile = one isolated `CODEX_HOME`
136
- - `prodex login` still uses the real `codex login` flow, including `--device-auth`
137
- - `prodex login` without `--profile` first tries to read the ChatGPT account email from `tokens.id_token` in `auth.json`, then falls back to the usage endpoint email when needed
138
- - `prodex` without a subcommand behaves like `prodex run`
139
- - `prodex run <session-id>` forwards to `codex resume <session-id>`
140
- - `prodex info` summarizes profile count, the installed prodex version and update status, running Prodex processes, aggregated quota pool, and a no-reset runway estimate from active runtime logs
141
- - `prodex quota` live-refreshes every 5 seconds by default, and `prodex quota --all` also shows aggregated `5h` and `weekly` pool remaining before the per-profile table
142
- - Prodex-owned screens adapt to terminal width, and live views can also adapt to terminal height
143
- - `prodex claude` injects a local Anthropic-compatible proxy for Claude Code and still uses Prodex profile selection and runtime rotation
144
- - `prodex claude` also keeps Claude Code state in an isolated per-profile `CLAUDE_CONFIG_DIR`, so theme/login onboarding does not reappear every launch and the current workspace can open directly in chat mode
145
- - use `PRODEX_CLAUDE_BIN` if `claude` is not on `PATH`
146
- - use `PRODEX_CLAUDE_MODEL` to override the upstream Responses model used for Anthropic-compatible requests
138
+ ## More
147
139
 
148
- For a slightly longer setup guide, see [QUICKSTART.md](https://github.com/christiandoxa/prodex/blob/main/QUICKSTART.md).
140
+ For a slightly longer walkthrough, see [QUICKSTART.md](https://github.com/christiandoxa/prodex/blob/main/QUICKSTART.md).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@christiandoxa/prodex",
3
- "version": "0.2.107",
3
+ "version": "0.2.109",
4
4
  "description": "Safe multi-account auto-rotate for Codex CLI with isolated CODEX_HOME profiles",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -16,12 +16,12 @@
16
16
  "@openai/codex": "^0.118.0"
17
17
  },
18
18
  "optionalDependencies": {
19
- "@christiandoxa/prodex-linux-x64": "0.2.107",
20
- "@christiandoxa/prodex-linux-arm64": "0.2.107",
21
- "@christiandoxa/prodex-darwin-x64": "0.2.107",
22
- "@christiandoxa/prodex-darwin-arm64": "0.2.107",
23
- "@christiandoxa/prodex-win32-x64": "0.2.107",
24
- "@christiandoxa/prodex-win32-arm64": "0.2.107"
19
+ "@christiandoxa/prodex-linux-x64": "0.2.109",
20
+ "@christiandoxa/prodex-linux-arm64": "0.2.109",
21
+ "@christiandoxa/prodex-darwin-x64": "0.2.109",
22
+ "@christiandoxa/prodex-darwin-arm64": "0.2.109",
23
+ "@christiandoxa/prodex-win32-x64": "0.2.109",
24
+ "@christiandoxa/prodex-win32-arm64": "0.2.109"
25
25
  },
26
26
  "engines": {
27
27
  "node": ">=18"