@christiandoxa/prodex 0.46.0 → 0.48.0
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.
- package/README.md +48 -71
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -1,42 +1,21 @@
|
|
|
1
1
|
# prodex
|
|
2
2
|
|
|
3
|
-
`prodex` is a wrapper for Codex and Claude Code
|
|
3
|
+
`prodex` is a wrapper for Codex and Claude Code for working with multiple profiles.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The main feature is auto rotate. If one OpenAI/Codex profile runs out of quota, `prodex` can route new work to another profile that is still available. You do not need to switch accounts manually.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
It also keeps profiles isolated and keeps existing sessions attached to the profile they started with. For Codex CLI 0.124.0 and newer, Codex itself supports Amazon Bedrock and other OpenAI-compatible custom providers through `model_provider`; Prodex passes those profiles through directly instead of adding its OpenAI quota and rotation layer.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Why use it
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Use `prodex` if you want to:
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
- automatically use another available profile when quota runs out
|
|
14
|
+
- work with multiple accounts
|
|
15
|
+
- keep each profile isolated
|
|
16
|
+
- keep sessions tied to the original profile
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
- want isolated profile environments
|
|
17
|
-
- need quota checks before launch
|
|
18
|
-
- want session continuity tied to the original profile
|
|
19
|
-
|
|
20
|
-
If you only use one account and do not care about quota-aware routing or isolated homes, you probably do not need it.
|
|
21
|
-
|
|
22
|
-
## Repository layout
|
|
23
|
-
|
|
24
|
-
- `src/main.rs` — binary entrypoint
|
|
25
|
-
- `src/lib.rs` — shared crate wiring and test support
|
|
26
|
-
- `src/app_commands/`, `src/command_dispatch.rs`, `src/cli_args.rs` — CLI parsing and top-level command flow
|
|
27
|
-
- `src/profile_commands/`, `src/quota_support/`, `src/secret_store/`, `src/profile_identity.rs` — profile, quota, secret storage, and identity management
|
|
28
|
-
- `src/runtime_proxy/`, `src/runtime_launch/`, `src/runtime_persistence/`, `src/runtime_store/`, `src/runtime_broker/` — runtime internals
|
|
29
|
-
- `src/runtime_claude/`, `src/runtime_anthropic/`, `src/runtime_caveman.rs`, `src/runtime_mem.rs` — Claude, Caveman, and memory integrations
|
|
30
|
-
- `scripts/npm/` and `npm/` — npm packaging and publishing helpers
|
|
31
|
-
|
|
32
|
-
## Supported commands
|
|
33
|
-
|
|
34
|
-
- `prodex` / `prodex run`
|
|
35
|
-
- `prodex caveman`
|
|
36
|
-
- `prodex caveman mem`
|
|
37
|
-
- `prodex claude`
|
|
38
|
-
- `prodex claude caveman`
|
|
39
|
-
- `prodex claude caveman mem`
|
|
18
|
+
If you only use one account and do not need profile isolation or quota-aware routing, you probably do not need it.
|
|
40
19
|
|
|
41
20
|
## Requirements
|
|
42
21
|
|
|
@@ -45,7 +24,7 @@ You need at least one logged-in Prodex profile.
|
|
|
45
24
|
Depending on your setup, you may also need:
|
|
46
25
|
|
|
47
26
|
- Codex CLI for `prodex` and `prodex caveman`
|
|
48
|
-
- Claude Code for `prodex claude`
|
|
27
|
+
- Claude Code for `prodex claude`
|
|
49
28
|
- `claude-mem` for `mem` variants
|
|
50
29
|
|
|
51
30
|
## Install
|
|
@@ -56,15 +35,13 @@ Depending on your setup, you may also need:
|
|
|
56
35
|
npm install -g @christiandoxa/prodex
|
|
57
36
|
````
|
|
58
37
|
|
|
59
|
-
This installs `prodex` and pulls in the current Codex runtime dependency.
|
|
60
|
-
|
|
61
38
|
### Cargo
|
|
62
39
|
|
|
63
40
|
```bash
|
|
64
41
|
cargo install prodex
|
|
65
42
|
```
|
|
66
43
|
|
|
67
|
-
Cargo
|
|
44
|
+
If you install with Cargo, make sure the `codex` binary in your `PATH` is already installed and up to date.
|
|
68
45
|
|
|
69
46
|
## Quick start
|
|
70
47
|
|
|
@@ -82,23 +59,21 @@ prodex profile add second
|
|
|
82
59
|
prodex login --profile second
|
|
83
60
|
```
|
|
84
61
|
|
|
85
|
-
|
|
62
|
+
You can also import a logged-in Copilot CLI account:
|
|
86
63
|
|
|
87
64
|
```bash
|
|
88
65
|
prodex profile import copilot
|
|
89
66
|
prodex profile import copilot --name copilot-main --activate
|
|
90
67
|
```
|
|
91
68
|
|
|
92
|
-
Check
|
|
69
|
+
Check your profiles and quota:
|
|
93
70
|
|
|
94
71
|
```bash
|
|
95
72
|
prodex profile list
|
|
96
73
|
prodex quota --all
|
|
97
74
|
```
|
|
98
75
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
Run commands through `prodex`:
|
|
76
|
+
Run through `prodex`:
|
|
102
77
|
|
|
103
78
|
```bash
|
|
104
79
|
prodex
|
|
@@ -107,29 +82,11 @@ prodex caveman mem
|
|
|
107
82
|
prodex exec "review this repo"
|
|
108
83
|
prodex claude -- -p "summarize this repo"
|
|
109
84
|
prodex claude mem -- -p "recall past work on this repo"
|
|
110
|
-
prodex claude caveman -- -p "summarize this repo briefly"
|
|
111
|
-
prodex claude caveman mem -- -p "summarize this repo briefly"
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
## Profile commands
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
prodex profile list
|
|
118
|
-
prodex profile add second
|
|
119
|
-
prodex profile import copilot
|
|
120
|
-
prodex profile import-current main
|
|
121
|
-
prodex login --profile second
|
|
122
|
-
prodex use --profile main
|
|
123
|
-
prodex logout --profile main
|
|
124
|
-
prodex profile remove second
|
|
125
|
-
prodex profile remove --all
|
|
126
85
|
```
|
|
127
86
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
`prodex profile import copilot` does not move the Copilot token into Prodex-managed storage. The token stays where Copilot already stores it. Prodex only records the provider identity and API endpoint in its own metadata.
|
|
87
|
+
## Common commands
|
|
131
88
|
|
|
132
|
-
|
|
89
|
+
### Run Codex
|
|
133
90
|
|
|
134
91
|
```bash
|
|
135
92
|
prodex
|
|
@@ -140,9 +97,7 @@ prodex run 019c9e3d-45a0-7ad0-a6ee-b194ac2d44f9
|
|
|
140
97
|
printf 'context from stdin' | prodex run exec "summarize this"
|
|
141
98
|
```
|
|
142
99
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
## Caveman examples
|
|
100
|
+
### Run Caveman mode
|
|
146
101
|
|
|
147
102
|
```bash
|
|
148
103
|
prodex caveman
|
|
@@ -154,11 +109,9 @@ prodex caveman 019c9e3d-45a0-7ad0-a6ee-b194ac2d44f9
|
|
|
154
109
|
|
|
155
110
|
`prodex caveman` runs Codex with a temporary overlay `CODEX_HOME`, so the base profile home stays unchanged after the session ends.
|
|
156
111
|
|
|
157
|
-
If the selected profile sets `model_provider` to a non-OpenAI backend, Prodex skips quota preflight and launches Caveman directly without the local runtime proxy.
|
|
158
|
-
|
|
159
112
|
If you use the `mem` variant, Prodex points an existing Claude-Mem Codex setup to the active Prodex session path instead of the default `~/.codex/sessions`.
|
|
160
113
|
|
|
161
|
-
|
|
114
|
+
### Run Claude Code
|
|
162
115
|
|
|
163
116
|
```bash
|
|
164
117
|
prodex claude -- -p "summarize this repo"
|
|
@@ -173,11 +126,37 @@ prodex claude --profile second -- -p --output-format json "show the latest diff"
|
|
|
173
126
|
|
|
174
127
|
`prodex claude` uses the normal Claude Code flow.
|
|
175
128
|
|
|
176
|
-
|
|
129
|
+
`prodex claude caveman` enables Caveman for that session while keeping state under the Prodex-managed `CLAUDE_CONFIG_DIR`, not the global `~/.claude`.
|
|
177
130
|
|
|
178
|
-
`prodex claude caveman`
|
|
131
|
+
`prodex claude caveman mem` combines Caveman and Claude-Mem.
|
|
179
132
|
|
|
180
|
-
|
|
133
|
+
## Profile commands
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
prodex profile list
|
|
137
|
+
prodex profile add second
|
|
138
|
+
prodex profile import copilot
|
|
139
|
+
prodex profile import-current main
|
|
140
|
+
prodex login --profile second
|
|
141
|
+
prodex use --profile main
|
|
142
|
+
prodex logout --profile main
|
|
143
|
+
prodex profile remove second
|
|
144
|
+
prodex profile remove --all
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Bedrock and custom providers
|
|
148
|
+
|
|
149
|
+
Auto rotate and quota checks apply to supported OpenAI/Codex profiles.
|
|
150
|
+
|
|
151
|
+
Codex CLI 0.124.0 added first-class Amazon Bedrock and OpenAI-compatible custom provider support. Configure that in the selected profile's Codex `config.toml`, for example with `model_provider = "amazon-bedrock"`.
|
|
152
|
+
|
|
153
|
+
If a profile's `config.toml` sets `model_provider` to a non-OpenAI backend such as `amazon-bedrock`, `prodex run` and `prodex caveman` launch Codex directly without quota preflight or the local auto-rotate proxy. Bedrock quota, credentials, regions, and provider errors are handled by Codex and the upstream provider, not by Prodex.
|
|
154
|
+
|
|
155
|
+
`prodex quota` is not available for those profiles.
|
|
156
|
+
|
|
157
|
+
`prodex claude` is only supported with the default OpenAI/Codex provider.
|
|
158
|
+
|
|
159
|
+
When you import a Copilot profile, Prodex does not move the Copilot token into Prodex-managed storage. It only records the provider identity and API endpoint in its own metadata.
|
|
181
160
|
|
|
182
161
|
## Utility commands
|
|
183
162
|
|
|
@@ -188,8 +167,6 @@ prodex quota --all --once
|
|
|
188
167
|
prodex doctor --runtime
|
|
189
168
|
```
|
|
190
169
|
|
|
191
|
-
If Prodex returns `409 stale_continuation`, the request still carries continuation state, but the original binding is gone or no longer safe to reuse. Prodex refuses to fresh-replay that turn on another profile because continuation affinity is part of the request contract, and replaying it elsewhere can drop tool context or continue the wrong conversation. Start a new prompt or retry from the same live session if it still exists. If the failure looks unexpected, `prodex doctor --runtime` and the latest runtime log can show which continuation binding went stale.
|
|
192
|
-
|
|
193
170
|
## More
|
|
194
171
|
|
|
195
172
|
See [QUICKSTART.md](./QUICKSTART.md) for a longer walkthrough.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@christiandoxa/prodex",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.48.0",
|
|
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": "latest"
|
|
17
17
|
},
|
|
18
18
|
"optionalDependencies": {
|
|
19
|
-
"@christiandoxa/prodex-linux-x64": "0.
|
|
20
|
-
"@christiandoxa/prodex-linux-arm64": "0.
|
|
21
|
-
"@christiandoxa/prodex-darwin-x64": "0.
|
|
22
|
-
"@christiandoxa/prodex-darwin-arm64": "0.
|
|
23
|
-
"@christiandoxa/prodex-win32-x64": "0.
|
|
24
|
-
"@christiandoxa/prodex-win32-arm64": "0.
|
|
19
|
+
"@christiandoxa/prodex-linux-x64": "0.48.0",
|
|
20
|
+
"@christiandoxa/prodex-linux-arm64": "0.48.0",
|
|
21
|
+
"@christiandoxa/prodex-darwin-x64": "0.48.0",
|
|
22
|
+
"@christiandoxa/prodex-darwin-arm64": "0.48.0",
|
|
23
|
+
"@christiandoxa/prodex-win32-x64": "0.48.0",
|
|
24
|
+
"@christiandoxa/prodex-win32-arm64": "0.48.0"
|
|
25
25
|
},
|
|
26
26
|
"engines": {
|
|
27
27
|
"node": ">=18"
|