@christiandoxa/prodex 0.2.130 → 0.2.132
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 -52
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -2,30 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/christiandoxa/prodex/actions/workflows/ci.yml)
|
|
4
4
|
|
|
5
|
-
Run multiple isolated Codex profiles on the same OpenAI account pool
|
|
5
|
+
Run multiple isolated Codex profiles on the same OpenAI account pool.
|
|
6
6
|
|
|
7
|
-
`prodex`
|
|
7
|
+
`prodex` is a small CLI for managing multiple Codex profiles without manually switching logins and local state.
|
|
8
8
|
|
|
9
|
-
It
|
|
9
|
+
It uses a simple model:
|
|
10
10
|
|
|
11
11
|
- **One account = one profile**
|
|
12
12
|
- **Quota is checked before launch**
|
|
13
13
|
- **Fresh work can move to another ready profile**
|
|
14
14
|
- **Existing continuations stay with the profile that already owns them**
|
|
15
15
|
|
|
16
|
-
That means you can keep working smoothly across multiple accounts while preserving session continuity where it matters.
|
|
17
|
-
|
|
18
16
|
## Why `prodex`?
|
|
19
17
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
Sometimes it makes more sense to run 2 or 3 separate $20 accounts you already have. The problem is that doing it manually is annoying fast. You have to log in, log out, switch homes, check quota, and keep track of which session belongs to which account.
|
|
23
|
-
|
|
24
|
-
`prodex` exists to remove that pain.
|
|
18
|
+
If you use multiple accounts, doing everything by hand gets old quickly.
|
|
25
19
|
|
|
26
|
-
|
|
20
|
+
A common case is having 2 or 3 separate $20 accounts instead of paying for a higher-tier plan. That works, but the workflow is annoying. You have to log in and out, switch homes, check quota manually, and remember which session belongs to which account.
|
|
27
21
|
|
|
28
|
-
|
|
22
|
+
`prodex` handles that setup by keeping profiles isolated, checking quota before launch, and keeping continuations on the profile that already owns them.
|
|
29
23
|
|
|
30
24
|
## Requirements
|
|
31
25
|
|
|
@@ -36,7 +30,7 @@ Before using `prodex`, make sure you have:
|
|
|
36
30
|
- **Claude Code (`claude`)**, if you want to use `prodex claude`
|
|
37
31
|
|
|
38
32
|
> Installing `@christiandoxa/prodex` from npm also installs the Codex runtime dependency for you.
|
|
39
|
-
> Claude Code is still a separate CLI and
|
|
33
|
+
> Claude Code is still a separate CLI and should already be available on your `PATH` when you use `prodex claude`.
|
|
40
34
|
|
|
41
35
|
## Install
|
|
42
36
|
|
|
@@ -44,7 +38,7 @@ Before using `prodex`, make sure you have:
|
|
|
44
38
|
|
|
45
39
|
```bash
|
|
46
40
|
npm install -g @christiandoxa/prodex
|
|
47
|
-
|
|
41
|
+
````
|
|
48
42
|
|
|
49
43
|
### Cargo
|
|
50
44
|
|
|
@@ -62,18 +56,18 @@ Check your installed version:
|
|
|
62
56
|
prodex --version
|
|
63
57
|
```
|
|
64
58
|
|
|
65
|
-
The current local version in this repo is `0.2.
|
|
59
|
+
The current local version in this repo is `0.2.132`:
|
|
66
60
|
|
|
67
61
|
```bash
|
|
68
|
-
npm install -g @christiandoxa/prodex@0.2.
|
|
69
|
-
cargo install prodex --force --version 0.2.
|
|
62
|
+
npm install -g @christiandoxa/prodex@0.2.132
|
|
63
|
+
cargo install prodex --force --version 0.2.132
|
|
70
64
|
```
|
|
71
65
|
|
|
72
66
|
Dependency status in this repo:
|
|
73
67
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
68
|
+
* The npm runtime dependency is already at the latest published `@openai/codex` release: `0.118.0`
|
|
69
|
+
* `cargo update` currently produces no Rust lockfile changes on the Rust `1.94.1` compatible graph used by this project
|
|
70
|
+
* `generic-array` remains pinned transitively by `crypto-common`, and `sha2 0.11` would require a wider RustCrypto compatibility jump than this release
|
|
77
71
|
|
|
78
72
|
Switching from a Cargo-installed binary to npm?
|
|
79
73
|
|
|
@@ -97,7 +91,7 @@ prodex login
|
|
|
97
91
|
prodex login --device-auth
|
|
98
92
|
```
|
|
99
93
|
|
|
100
|
-
|
|
94
|
+
If you want to name the profile first:
|
|
101
95
|
|
|
102
96
|
```bash
|
|
103
97
|
prodex profile add second
|
|
@@ -120,11 +114,11 @@ prodex exec "review this repo"
|
|
|
120
114
|
prodex claude -- -p "summarize this repo"
|
|
121
115
|
```
|
|
122
116
|
|
|
123
|
-
|
|
117
|
+
`prodex` without a subcommand is shorthand for `prodex run`.
|
|
124
118
|
|
|
125
119
|
## Common Workflows
|
|
126
120
|
|
|
127
|
-
###
|
|
121
|
+
### Create or import profiles
|
|
128
122
|
|
|
129
123
|
```bash
|
|
130
124
|
prodex profile import-current main
|
|
@@ -132,7 +126,7 @@ prodex profile add second
|
|
|
132
126
|
prodex login --profile second
|
|
133
127
|
```
|
|
134
128
|
|
|
135
|
-
###
|
|
129
|
+
### Inspect your pool
|
|
136
130
|
|
|
137
131
|
```bash
|
|
138
132
|
prodex profile list
|
|
@@ -140,7 +134,7 @@ prodex quota --all
|
|
|
140
134
|
prodex info
|
|
141
135
|
```
|
|
142
136
|
|
|
143
|
-
###
|
|
137
|
+
### Run Codex with automatic profile selection
|
|
144
138
|
|
|
145
139
|
```bash
|
|
146
140
|
prodex
|
|
@@ -148,19 +142,21 @@ prodex run
|
|
|
148
142
|
prodex exec "review this repo"
|
|
149
143
|
```
|
|
150
144
|
|
|
151
|
-
###
|
|
145
|
+
### Resume an existing session on the correct profile
|
|
152
146
|
|
|
153
147
|
```bash
|
|
154
148
|
prodex run 019c9e3d-45a0-7ad0-a6ee-b194ac2d44f9
|
|
155
149
|
```
|
|
156
150
|
|
|
157
|
-
###
|
|
151
|
+
### Run Claude Code through the same profile pool
|
|
158
152
|
|
|
159
153
|
```bash
|
|
160
154
|
prodex claude -- -p "summarize this repo"
|
|
161
155
|
prodex claude --profile second -- -p --output-format json "show the latest diff"
|
|
162
156
|
```
|
|
163
157
|
|
|
158
|
+
For managed profiles, Prodex can seed Claude state from your existing `~/.claude` and `~/.claude.json` on first use, then keep Claude config and chat history in shared Prodex-managed state.
|
|
159
|
+
|
|
164
160
|
## Command Reference
|
|
165
161
|
|
|
166
162
|
### Profile & Login
|
|
@@ -235,9 +231,9 @@ That pointer path lives in `/tmp` only when you keep the default runtime log dir
|
|
|
235
231
|
|
|
236
232
|
Use `prodex cleanup` to remove stale local runtime logs, temporary login homes, dead broker leases and registries, plus old orphaned managed profile homes that are no longer tracked in state.
|
|
237
233
|
|
|
238
|
-
## Runtime
|
|
234
|
+
## Advanced Runtime Configuration
|
|
239
235
|
|
|
240
|
-
|
|
236
|
+
If you want tighter control over runtime logging, secrets, or proxy behavior, you can pin local settings in `$PRODEX_HOME/policy.toml` or `~/.prodex/policy.toml`.
|
|
241
237
|
|
|
242
238
|
```toml
|
|
243
239
|
version = 1
|
|
@@ -260,38 +256,38 @@ stream_idle_timeout_ms = 300000
|
|
|
260
256
|
|
|
261
257
|
Notes:
|
|
262
258
|
|
|
263
|
-
* Environment variables still win over `policy.toml
|
|
264
|
-
* `prodex info` and `prodex doctor` show the active policy file, selected secret backend, and effective runtime log mode
|
|
265
|
-
* The default runtime log format remains `text`; set `log_format = "json"` or `PRODEX_RUNTIME_LOG_FORMAT=json` when you want machine-readable runtime logs
|
|
266
|
-
* Secret backend selection can be overridden with `PRODEX_SECRET_BACKEND` and `PRODEX_SECRET_KEYRING_SERVICE
|
|
267
|
-
* `prodex audit` reads the local append-only audit log and supports `--tail`, `--component`, `--action`, `--outcome`, and `--json
|
|
259
|
+
* Environment variables still win over `policy.toml`
|
|
260
|
+
* `prodex info` and `prodex doctor` show the active policy file, selected secret backend, and effective runtime log mode
|
|
261
|
+
* The default runtime log format remains `text`; set `log_format = "json"` or `PRODEX_RUNTIME_LOG_FORMAT=json` when you want machine-readable runtime logs
|
|
262
|
+
* Secret backend selection can be overridden with `PRODEX_SECRET_BACKEND` and `PRODEX_SECRET_KEYRING_SERVICE`
|
|
263
|
+
* `prodex audit` reads the local append-only audit log and supports `--tail`, `--component`, `--action`, `--outcome`, and `--json`
|
|
268
264
|
|
|
269
|
-
##
|
|
265
|
+
## Hardening And Operational Notes
|
|
270
266
|
|
|
271
|
-
The current
|
|
267
|
+
The current setup is still local-first, but it already includes:
|
|
272
268
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
-
|
|
278
|
-
|
|
269
|
+
* a secret-management abstraction for `auth.json` and exported profile bundles
|
|
270
|
+
* a stable live broker snapshot at `GET /__prodex/runtime/metrics`
|
|
271
|
+
* a Prometheus scrape target at `GET /__prodex/runtime/metrics/prometheus`
|
|
272
|
+
* `prodex info` and `prodex doctor --runtime --json` surfacing live broker metrics targets and the selected secret backend
|
|
273
|
+
* append-only audit logging for profile selection, rotation decisions, and admin-facing state changes
|
|
274
|
+
* `prodex audit` as a local read-only CLI surface for browsing recent audit events
|
|
279
275
|
|
|
280
276
|
Current limitations:
|
|
281
277
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
278
|
+
* local `auth.json` remains the compatibility source of truth for current Codex flows even when a non-file backend is selected
|
|
279
|
+
* there is no keychain, Vault, or KMS-backed secret backend implementation yet
|
|
280
|
+
* audit logs follow the resolved runtime log directory by default, or `PRODEX_AUDIT_LOG_DIR` when set
|
|
281
|
+
* there is no central control plane, RBAC, SSO, or SCIM
|
|
282
|
+
* `prodex doctor --runtime --json` is useful operationally, but it is not a full observability stack
|
|
283
|
+
* the repo still assumes a per-host profile pool and local state ownership
|
|
284
|
+
* runtime-store modularization is still in progress, so persistence and audit/event handling remain implementation details rather than a public API
|
|
289
285
|
|
|
290
286
|
## Notes
|
|
291
287
|
|
|
292
|
-
* Managed profiles share persisted Codex state through Prodex-owned shared storage
|
|
293
|
-
* `prodex quota --all` refreshes live by default
|
|
294
|
-
* Use `--once` if you only want a one-shot snapshot
|
|
288
|
+
* Managed profiles share persisted Codex state through Prodex-owned shared storage
|
|
289
|
+
* `prodex quota --all` refreshes live by default
|
|
290
|
+
* Use `--once` if you only want a one-shot snapshot
|
|
295
291
|
|
|
296
292
|
## Learn More
|
|
297
293
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@christiandoxa/prodex",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.132",
|
|
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.
|
|
20
|
-
"@christiandoxa/prodex-linux-arm64": "0.2.
|
|
21
|
-
"@christiandoxa/prodex-darwin-x64": "0.2.
|
|
22
|
-
"@christiandoxa/prodex-darwin-arm64": "0.2.
|
|
23
|
-
"@christiandoxa/prodex-win32-x64": "0.2.
|
|
24
|
-
"@christiandoxa/prodex-win32-arm64": "0.2.
|
|
19
|
+
"@christiandoxa/prodex-linux-x64": "0.2.132",
|
|
20
|
+
"@christiandoxa/prodex-linux-arm64": "0.2.132",
|
|
21
|
+
"@christiandoxa/prodex-darwin-x64": "0.2.132",
|
|
22
|
+
"@christiandoxa/prodex-darwin-arm64": "0.2.132",
|
|
23
|
+
"@christiandoxa/prodex-win32-x64": "0.2.132",
|
|
24
|
+
"@christiandoxa/prodex-win32-arm64": "0.2.132"
|
|
25
25
|
},
|
|
26
26
|
"engines": {
|
|
27
27
|
"node": ">=18"
|