@christiandoxa/prodex 0.196.0 → 0.198.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 +205 -65
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# prodex
|
|
2
2
|
|
|
3
|
-
`prodex` is a multi-account, multi-provider Codex wrapper with
|
|
3
|
+
`prodex` is a multi-account, multi-provider Codex wrapper with quota-aware profile routing.
|
|
4
4
|
|
|
5
|
-
Use multiple Codex accounts and supported provider backends from one command line. OpenAI/Codex profiles get quota-aware routing and auto-
|
|
5
|
+
Use multiple Codex accounts and supported provider backends from one command line. OpenAI/Codex profiles get quota-aware routing and can auto-rotate when multiple eligible profiles exist; provider adapters let `prodex s` launch the Codex front end against Gemini, Anthropic, Copilot, DeepSeek, and local OpenAI-compatible servers.
|
|
6
6
|
|
|
7
7
|

|
|
8
8
|
|
|
@@ -29,9 +29,9 @@ Use multiple Codex accounts and supported provider backends from one command lin
|
|
|
29
29
|
Use `prodex` if you want to:
|
|
30
30
|
|
|
31
31
|
- use multiple Codex accounts from one CLI
|
|
32
|
-
- rotate to another account when quota runs out
|
|
32
|
+
- rotate to another eligible account when quota runs out
|
|
33
33
|
- launch Codex/Super against non-OpenAI providers without changing front ends
|
|
34
|
-
- keep profile credentials separated
|
|
34
|
+
- keep profile `auth.json` account credentials separated
|
|
35
35
|
- keep sessions attached to the profile that created them
|
|
36
36
|
- run Codex, Caveman mode, Super mode, and Claude Code through the same wrapper
|
|
37
37
|
|
|
@@ -39,7 +39,7 @@ If you only use one Codex account and do not need quota rotation, you probably d
|
|
|
39
39
|
|
|
40
40
|
## Requirements
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
For OpenAI/Codex quota-aware routing, you need at least one logged-in Prodex profile. Local `--url` launches and some provider API-key launches can run without a persisted profile.
|
|
43
43
|
|
|
44
44
|
<details>
|
|
45
45
|
<summary>Tool requirements</summary>
|
|
@@ -62,12 +62,13 @@ Prodex supports two provider paths:
|
|
|
62
62
|
<details>
|
|
63
63
|
<summary>Supported provider matrix</summary>
|
|
64
64
|
|
|
65
|
-
| Provider | Launch
|
|
65
|
+
| Provider | Launch path | Auth path | Quota view | Notes |
|
|
66
66
|
|---|---:|---|---:|---|
|
|
67
|
-
| OpenAI / Codex | `prodex`, `prodex run`, `prodex s` | ChatGPT OAuth, device code, or OpenAI/API-compatible key via `prodex login` | Yes |
|
|
68
|
-
| Google Gemini | `prodex s gemini` | Google OAuth via `prodex login --with-google`, or `GEMINI_API_KEY(S)` / `GOOGLE_API_KEY(S)` / `--api-key` | OAuth profiles | API-key mode uses Google's OpenAI-compatible Chat Completions endpoint; OAuth uses Code Assist. Both rotate before commit. |
|
|
67
|
+
| OpenAI / Codex | `prodex`, `prodex run`, `prodex s` | ChatGPT OAuth, device code, or OpenAI/API-compatible key via `prodex login` | Yes | Quota preflight, plus profile auto-rotation when multiple eligible profiles exist. |
|
|
68
|
+
| Google Gemini | `prodex s gemini` | Google OAuth via `prodex login --with-google`, or `GEMINI_API_KEY(S)` / `GOOGLE_API_KEY(S)` / `--api-key` | OAuth profiles | API-key mode uses Google's OpenAI-compatible Chat Completions endpoint; OAuth uses Code Assist. Both can rotate before commit across configured profiles/keys. |
|
|
69
|
+
| Google Antigravity CLI | `prodex s gemini --cli agy` | Antigravity keyring / Google Sign-In via `prodex login --with-antigravity` or `agy auth login` | CLI quota snapshot | Native CLI path; no Prodex account auto-rotation or Presidio proxying. |
|
|
69
70
|
| Anthropic Claude | `prodex s --provider anthropic` | Claude Code OAuth via `prodex login --with-claude` / `prodex profile import claude`, or `ANTHROPIC_API_KEY(S)` / `--api-key` | OAuth profiles | Shows Claude OAuth readiness; add `ANTHROPIC_ADMIN_KEY` to include Anthropic Admin rate-limit groups. |
|
|
70
|
-
| GitHub Copilot | `prodex s --provider copilot` | Imported Copilot CLI profile via `prodex profile import copilot`, or `GITHUB_COPILOT_API_KEY(S)` / `--api-key` | Imported profiles | Native profile and API-key modes rotate before commit; continuations stay bound to the owning profile. |
|
|
71
|
+
| GitHub Copilot | `prodex s --provider copilot` | Imported Copilot CLI profile via `prodex profile import copilot`, or `GITHUB_COPILOT_API_KEY(S)` / `--api-key` | Imported profiles | Native profile and API-key modes can rotate before commit across configured profiles/keys; continuations stay bound to the owning profile. |
|
|
71
72
|
| DeepSeek | `prodex s deepseek` | `DEEPSEEK_API_KEY(S)` / `--api-key` | API-key balance | `prodex quota --all --provider deepseek` reads DeepSeek `/user/balance`. |
|
|
72
73
|
| Local OpenAI-compatible | `prodex super --url http://127.0.0.1:8131` | Local server auth/config | Health snapshot | `prodex quota --all --provider local --base-url ...` checks the local `/models` endpoint. |
|
|
73
74
|
| Bedrock / custom Codex `model_provider` | `prodex run` / `prodex caveman` direct pass-through | Codex-owned config | Config snapshot | Prodex reports configured provider metadata; provider-side quota stays owned by Codex/upstream. |
|
|
@@ -91,7 +92,7 @@ curl http://127.0.0.1:4000/v1/responses \
|
|
|
91
92
|
</details>
|
|
92
93
|
|
|
93
94
|
<details>
|
|
94
|
-
<summary>Gateway capabilities</summary>
|
|
95
|
+
<summary>Gateway capabilities (advanced)</summary>
|
|
95
96
|
|
|
96
97
|
The gateway serves `/v1/responses`, `/v1/chat/completions`, `/v1/embeddings`, `/v1/images/*`, `/v1/audio/*`, `/v1/batches`, `/v1/rerank`, `/v1/a2a`, `/v1/messages`, and `/v1/models` where the selected upstream supports them. It adds `x-prodex-call-id` to responses, writes local request detail plus `gateway_spend` events for both `request` and `response` phases to runtime logs, can export those events to JSONL or HTTP using generic, OTel, Datadog, or Langfuse-shaped payloads, supports catalog-backed policy routing strategies (`fallback`, `round-robin`, `least-busy`, `lowest-cost`, `lowest-latency`, `rpm`, `tpm`, `first`) for model aliases/fallback chains, can enforce static virtual keys with persisted request/spend usage plus model/budget/RPM/TPM limits, supports file, SQLite, Postgres, or Redis-backed gateway admin/usage/ledger/SCIM state, and can apply keyword/model, local PII redaction, Presidio, and external webhook guardrails before calls and on outputs. Admin-token, trusted-proxy SSO, or OIDC/JWT bearer requests can list usage, create generated-token keys, rotate/disable/update/delete admin-managed keys, provision SSO users through SCIM-compatible `/v1/prodex/gateway/scim/v2/Users`, inspect usage at `/v1/prodex/gateway/keys` and `/v1/prodex/gateway/usage`, read recent billing ledger records with response-status/output-token reconciliation at `/v1/prodex/gateway/ledger`, read aggregated billing totals at `/v1/prodex/gateway/ledger/summary`, export billing CSV from `/v1/prodex/gateway/ledger.csv` and `/v1/prodex/gateway/ledger/summary.csv`, scrape Prometheus text metrics at `/v1/prodex/gateway/metrics`, inspect provider adapter contracts at `/v1/prodex/gateway/providers`, inspect active observability and guardrail configuration at `/v1/prodex/gateway/observability` and `/v1/prodex/gateway/guardrails`, fetch the machine-readable gateway contract at `/v1/prodex/gateway/openapi.json`, and open the built-in gateway admin dashboard at `/v1/prodex/gateway/admin`; policy/env-backed keys remain read-only, SCIM users can carry tenant/team/project/user/budget scopes for SSO/OIDC fallback, admin-managed key and SCIM user mutations are recorded in `prodex audit`, and additional admin-plane tokens can be `admin` or read-only `viewer` with optional virtual-key prefix plus tenant/team/project/user/budget scopes. Configure defaults under `[gateway]` in `policy.toml`; validate provider catalog edits with `npm run catalog:providers`.
|
|
97
98
|
|
|
@@ -100,9 +101,9 @@ JavaScript clients can use `@christiandoxa/prodex-gateway-sdk` for `/v1/response
|
|
|
100
101
|
</details>
|
|
101
102
|
|
|
102
103
|
<details>
|
|
103
|
-
<summary>Provider behavior details</summary>
|
|
104
|
+
<summary>Provider behavior details (advanced)</summary>
|
|
104
105
|
|
|
105
|
-
The auto-rotate proxy is intentionally conservative. It rotates only before a request or stream is committed, preserves `previous_response_id`, turn-state, and session affinity, and does not rotate mid-stream. OpenAI/Codex remains the default quota-aware pool. Gemini OAuth, imported Copilot profiles, Anthropic OAuth profiles, DeepSeek API keys, local OpenAI-compatible URLs, and Bedrock/custom Codex providers now have `prodex quota` views. Anthropic, DeepSeek, API-key Gemini, API-key Copilot, local URLs, and Bedrock/custom Codex providers still skip OpenAI quota preflight.
|
|
106
|
+
The auto-rotate proxy is intentionally conservative. It rotates only before a request or stream is committed, preserves `previous_response_id`, turn-state, and session affinity, and does not rotate mid-stream. OpenAI/Codex remains the default quota-aware pool. Gemini OAuth, Antigravity CLI, imported Copilot profiles, Anthropic OAuth profiles, DeepSeek API keys, local OpenAI-compatible URLs, and Bedrock/custom Codex providers now have `prodex quota` views. Anthropic, DeepSeek, API-key Gemini, API-key Copilot, Antigravity CLI, local URLs, and Bedrock/custom Codex providers still skip OpenAI quota preflight.
|
|
106
107
|
|
|
107
108
|
Runtime proxy design contract:
|
|
108
109
|
|
|
@@ -143,7 +144,7 @@ If you install from source, make sure the `codex` binary in your `PATH` is alrea
|
|
|
143
144
|
|
|
144
145
|
## Optional tools
|
|
145
146
|
|
|
146
|
-
`prodex` can run without RTK, SQZ, token-savior, claw-compactor, Presidio, or prodex-memory. `prodex-memory` is built in and opt-in through the `mem` prefix or managed Mem0 Super prompt.
|
|
147
|
+
`prodex` can run without RTK, SQZ, token-savior, claw-compactor, Presidio, or prodex-memory. `prodex-inspect` is a built-in read-only MCP server for profile/runtime diagnostics and is auto-registered in Prodex overlay sessions. `prodex-memory` is built in and opt-in through the `mem` prefix or managed Mem0 Super prompt.
|
|
147
148
|
|
|
148
149
|
Install them only if you want to use commands such as:
|
|
149
150
|
|
|
@@ -167,7 +168,24 @@ prodex super
|
|
|
167
168
|
</details>
|
|
168
169
|
|
|
169
170
|
<details>
|
|
170
|
-
<summary>Prodex
|
|
171
|
+
<summary>Prodex inspect MCP</summary>
|
|
172
|
+
|
|
173
|
+
`prodex-inspect` exposes read-only MCP tools for agent-side diagnostics:
|
|
174
|
+
|
|
175
|
+
- `prodex_status`: Prodex paths, active profile, profile count, binding counts, and version.
|
|
176
|
+
- `prodex_profiles`: configured profiles without secrets.
|
|
177
|
+
- `prodex_latest_runtime_log`: latest runtime log pointer plus a bounded tail excerpt.
|
|
178
|
+
|
|
179
|
+
Prodex auto-registers it for Prodex overlay sessions. For direct diagnostics:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
prodex __inspect-mcp
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
</details>
|
|
186
|
+
|
|
187
|
+
<details>
|
|
188
|
+
<summary>Prodex memory mode (advanced)</summary>
|
|
171
189
|
|
|
172
190
|
```bash
|
|
173
191
|
prodex s
|
|
@@ -178,7 +196,7 @@ prodex s doctor
|
|
|
178
196
|
|
|
179
197
|
`prodex s` leaves `prodex-memory` disabled unless you opt in.
|
|
180
198
|
The base Codex profile stays unchanged; memory state is owned by Prodex.
|
|
181
|
-
Use `prodex caveman mem` when you want only Caveman plus the local memory MCP
|
|
199
|
+
Use `prodex caveman mem` when you want only Caveman plus the local memory MCP server, without the full Super stack.
|
|
182
200
|
|
|
183
201
|
`prodex-memory` provides Mem0-style local memory without Mem0 Cloud, Mem0 CLI, or `MEM0_API_KEY`.
|
|
184
202
|
The local `mem` prefix stores memories in a SQLite database under `PRODEX_HOME`:
|
|
@@ -200,7 +218,7 @@ The SQLite path remains the fastest OOTB memory path when you request memory:
|
|
|
200
218
|
Managed Mem0 mode requires Docker Compose (`docker compose` or `docker-compose`). It does not require a Mem0 Cloud token or a user-supplied provider API key for the default memory path. OpenAI-compatible API-key profiles, `--url` local providers, and supported provider bridges can provide richer upstream LLM/embedding behavior; otherwise Prodex falls back to local embeddings for Mem0.
|
|
201
219
|
|
|
202
220
|
<details>
|
|
203
|
-
<summary>Managed Mem0 internals</summary>
|
|
221
|
+
<summary>Managed Mem0 internals (advanced)</summary>
|
|
204
222
|
|
|
205
223
|
Managed Mem0 mode is still local-first:
|
|
206
224
|
|
|
@@ -217,7 +235,7 @@ Managed Mem0 mode is still local-first:
|
|
|
217
235
|
</details>
|
|
218
236
|
|
|
219
237
|
<details>
|
|
220
|
-
<summary>Memory diagnostics</summary>
|
|
238
|
+
<summary>Memory diagnostics (advanced)</summary>
|
|
221
239
|
|
|
222
240
|
Use `prodex s doctor` to verify that the built-in memory store can be opened before launching Codex. The hidden MCP server can also be launched directly for diagnostics:
|
|
223
241
|
|
|
@@ -346,7 +364,7 @@ sqz gain
|
|
|
346
364
|
which sqz-mcp
|
|
347
365
|
```
|
|
348
366
|
|
|
349
|
-
Prodex auto-registers `prodex-sqz` for
|
|
367
|
+
Prodex auto-registers `prodex-sqz` for Prodex overlay sessions when `sqz-mcp` is discoverable.
|
|
350
368
|
|
|
351
369
|
</details>
|
|
352
370
|
|
|
@@ -428,7 +446,9 @@ python3 ~/.local/share/claw-compactor/scripts/mem_compress.py /path/to/workspace
|
|
|
428
446
|
|
|
429
447
|
Presidio is used by `prodex presidio` and by the optional Super-mode privacy prompt. It runs as local Analyzer and Anonymizer HTTP services.
|
|
430
448
|
|
|
431
|
-
|
|
449
|
+
### English-only quick install
|
|
450
|
+
|
|
451
|
+
Use Microsoft's published images when you only need English (`en`):
|
|
432
452
|
|
|
433
453
|
```bash
|
|
434
454
|
docker pull mcr.microsoft.com/presidio-analyzer
|
|
@@ -438,39 +458,135 @@ docker run -d --name presidio-analyzer -p 5002:3000 mcr.microsoft.com/presidio-a
|
|
|
438
458
|
docker run -d --name presidio-anonymizer -p 5001:3000 mcr.microsoft.com/presidio-anonymizer:latest
|
|
439
459
|
```
|
|
440
460
|
|
|
441
|
-
|
|
461
|
+
<details>
|
|
462
|
+
<summary>English + Indonesian install (advanced)</summary>
|
|
463
|
+
|
|
464
|
+
Prodex can route requests with `--language-mode auto --languages en,id`, but Indonesian (`id`) detection only works if the Analyzer supports Indonesian NLP configuration and recognizers. The default Microsoft Analyzer image is usually English-only, so build a custom Analyzer and keep the standard Anonymizer.
|
|
465
|
+
|
|
466
|
+
Minimal local Analyzer example:
|
|
467
|
+
|
|
468
|
+
```bash
|
|
469
|
+
mkdir -p ~/.local/share/presidio-id-analyzer
|
|
470
|
+
cd ~/.local/share/presidio-id-analyzer
|
|
471
|
+
|
|
472
|
+
cat > Dockerfile <<'EOF'
|
|
473
|
+
FROM python:3.11-slim
|
|
474
|
+
RUN pip install --no-cache-dir flask gunicorn presidio-analyzer spacy \
|
|
475
|
+
&& python -m spacy download en_core_web_sm \
|
|
476
|
+
&& python -m spacy download xx_ent_wiki_sm
|
|
477
|
+
WORKDIR /app
|
|
478
|
+
COPY app.py /app/app.py
|
|
479
|
+
CMD ["gunicorn", "-b", "0.0.0.0:3000", "app:app"]
|
|
480
|
+
EOF
|
|
481
|
+
|
|
482
|
+
cat > app.py <<'EOF'
|
|
483
|
+
from flask import Flask, jsonify, request
|
|
484
|
+
from presidio_analyzer import AnalyzerEngine, Pattern, PatternRecognizer, RecognizerRegistry
|
|
485
|
+
from presidio_analyzer.nlp_engine import NlpEngineProvider
|
|
486
|
+
from presidio_analyzer.predefined_recognizers import EmailRecognizer, UrlRecognizer
|
|
487
|
+
|
|
488
|
+
nlp_config = {
|
|
489
|
+
"nlp_engine_name": "spacy",
|
|
490
|
+
"models": [
|
|
491
|
+
{"lang_code": "en", "model_name": "en_core_web_sm"},
|
|
492
|
+
{"lang_code": "id", "model_name": "xx_ent_wiki_sm"},
|
|
493
|
+
],
|
|
494
|
+
}
|
|
495
|
+
nlp_engine = NlpEngineProvider(nlp_configuration=nlp_config).create_engine()
|
|
496
|
+
registry = RecognizerRegistry(supported_languages=["en", "id"])
|
|
497
|
+
registry.load_predefined_recognizers(nlp_engine=nlp_engine, languages=["en", "id"])
|
|
498
|
+
registry.add_recognizer(EmailRecognizer(supported_language="id"))
|
|
499
|
+
registry.add_recognizer(UrlRecognizer(supported_language="id"))
|
|
500
|
+
|
|
501
|
+
registry.add_recognizer(PatternRecognizer(
|
|
502
|
+
supported_entity="PHONE_NUMBER",
|
|
503
|
+
language="id",
|
|
504
|
+
patterns=[Pattern("id mobile phone", r"(?<!\d)(?:\+62|62|0)8[1-9][\d\s.-]{7,13}\d(?!\d)", 0.75)],
|
|
505
|
+
context=["telepon", "nomor", "hp", "ponsel"],
|
|
506
|
+
))
|
|
507
|
+
registry.add_recognizer(PatternRecognizer(
|
|
508
|
+
supported_entity="ID_INDONESIA_NIK",
|
|
509
|
+
language="id",
|
|
510
|
+
patterns=[Pattern("nik", r"(?<!\d)\d{16}(?!\d)", 0.75)],
|
|
511
|
+
context=["nik", "ktp"],
|
|
512
|
+
))
|
|
513
|
+
registry.add_recognizer(PatternRecognizer(
|
|
514
|
+
supported_entity="ID_INDONESIA_NPWP",
|
|
515
|
+
language="id",
|
|
516
|
+
patterns=[Pattern("npwp", r"(?<!\d)\d{2}\.?\d{3}\.?\d{3}\.?\d[-.]?\d{3}\.?\d{3}(?!\d)", 0.75)],
|
|
517
|
+
context=["npwp", "pajak"],
|
|
518
|
+
))
|
|
519
|
+
registry.add_recognizer(PatternRecognizer(
|
|
520
|
+
supported_entity="PERSON",
|
|
521
|
+
language="id",
|
|
522
|
+
patterns=[Pattern("nama saya", r"(?i)\b(?:nama saya|saya bernama|nama)\s+[A-Z][A-Za-z.'-]*(?:\s+[A-Z][A-Za-z.'-]*){0,3}", 0.85)],
|
|
523
|
+
context=["nama", "saya", "bernama"],
|
|
524
|
+
))
|
|
525
|
+
|
|
526
|
+
analyzer = AnalyzerEngine(
|
|
527
|
+
nlp_engine=nlp_engine,
|
|
528
|
+
registry=registry,
|
|
529
|
+
supported_languages=["en", "id"],
|
|
530
|
+
)
|
|
531
|
+
app = Flask(__name__)
|
|
532
|
+
|
|
533
|
+
@app.get("/health")
|
|
534
|
+
def health():
|
|
535
|
+
return jsonify({"status": "ok"})
|
|
536
|
+
|
|
537
|
+
@app.post("/analyze")
|
|
538
|
+
def analyze():
|
|
539
|
+
body = request.get_json(force=True)
|
|
540
|
+
results = analyzer.analyze(
|
|
541
|
+
text=body["text"],
|
|
542
|
+
language=body.get("language", "en"),
|
|
543
|
+
entities=body.get("entities"),
|
|
544
|
+
score_threshold=body.get("score_threshold", 0),
|
|
545
|
+
)
|
|
546
|
+
return jsonify([result.to_dict() for result in results])
|
|
547
|
+
EOF
|
|
548
|
+
|
|
549
|
+
docker build -t prodex-presidio-analyzer-id:latest .
|
|
550
|
+
docker rm -f presidio-analyzer presidio-anonymizer 2>/dev/null || true
|
|
551
|
+
docker run -d --name presidio-analyzer -p 5002:3000 prodex-presidio-analyzer-id:latest
|
|
552
|
+
docker run -d --name presidio-anonymizer -p 5001:3000 mcr.microsoft.com/presidio-anonymizer:latest
|
|
442
553
|
|
|
443
|
-
|
|
554
|
+
prodex presidio enable --language-mode auto --languages en,id
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
This example keeps built-in recognizers such as `EMAIL_ADDRESS` and `URL`, adds Indonesian phone numbers, NIK, NPWP, and context-based `PERSON` detection for text like `Nama saya Budi`.
|
|
558
|
+
|
|
559
|
+
</details>
|
|
560
|
+
|
|
561
|
+
### Verify
|
|
444
562
|
|
|
445
563
|
```bash
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
564
|
+
prodex presidio doctor --json
|
|
565
|
+
prodex presidio redact --language en --text "My name is John Smith and my phone is 212-555-1234."
|
|
566
|
+
prodex presidio redact --language id --text "Nama saya Budi dan nomor telepon saya adalah 0812-3456-7890."
|
|
567
|
+
prodex presidio redact --language id --text "NIK saya 3171010101900001 dan email saya budi@example.com."
|
|
449
568
|
```
|
|
450
569
|
|
|
451
|
-
|
|
570
|
+
English should redact `PERSON` and `PHONE_NUMBER`. Indonesian should redact `PERSON`, `PHONE_NUMBER`, `ID_INDONESIA_NIK`, and `EMAIL_ADDRESS`. If `id` misses names or identifiers, the Analyzer container is not using the custom Indonesian config/recognizers.
|
|
571
|
+
|
|
572
|
+
### Use with `prodex s`
|
|
573
|
+
|
|
574
|
+
Once `prodex presidio enable --language-mode auto --languages en,id` is configured and the custom Analyzer plus Anonymizer containers are healthy, run `prodex s` and answer `y` to the Presidio prompt. That is enough to enable runtime request-body and WebSocket text-frame redaction for the session. Use `--presidio` to enable it non-interactively or `--no-presidio` to skip it.
|
|
575
|
+
|
|
576
|
+
If the endpoints are unhealthy, Prodex may auto-start the default Microsoft containers. Those are English-only unless your custom Analyzer image/container is already configured and running. Set `PRODEX_PRESIDIO_AUTO_START=0` to disable best-effort auto-start and only use configured endpoints.
|
|
577
|
+
|
|
578
|
+
<details>
|
|
579
|
+
<summary>Docker Desktop context note</summary>
|
|
580
|
+
|
|
581
|
+
If the containers do not appear in Docker Desktop, check the active Docker context. Docker Desktop usually uses `desktop-linux`.
|
|
452
582
|
|
|
453
583
|
```bash
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
prodex presidio redact --language id --text "Nomor telepon saya adalah 0812-3456-7890."
|
|
458
|
-
prodex presidio enable
|
|
459
|
-
prodex presidio redact --language-mode auto --languages en,id --text "Nama saya Budi dan nomor telepon saya adalah 0812-3456-7890."
|
|
460
|
-
prodex presidio enable --language-mode auto --languages en,id
|
|
461
|
-
prodex presidio status
|
|
462
|
-
prodex presidio doctor --json
|
|
463
|
-
prodex presidio redact --language-mode auto --languages en,id --text "Nama saya Budi dan nomor telepon saya adalah 0812-3456-7890."
|
|
464
|
-
prodex presidio enable --language-mode auto --languages en,id
|
|
465
|
-
prodex presidio redact --language-mode auto --languages en,id --text "Nama saya Budi dan nomor telepon saya adalah 0812-3456-7890."
|
|
466
|
-
prodex presidio enable --language-mode auto --languages en,id
|
|
467
|
-
prodex presidio status
|
|
468
|
-
prodex presidio doctor --json
|
|
469
|
-
prodex presidio status
|
|
470
|
-
prodex presidio doctor --json
|
|
584
|
+
docker context show
|
|
585
|
+
docker context ls
|
|
586
|
+
docker --context desktop-linux ps -a --filter name=presidio
|
|
471
587
|
```
|
|
472
588
|
|
|
473
|
-
|
|
589
|
+
</details>
|
|
474
590
|
</details>
|
|
475
591
|
|
|
476
592
|
## Quick start
|
|
@@ -495,9 +611,10 @@ prodex profile add second
|
|
|
495
611
|
prodex login --profile second
|
|
496
612
|
prodex login --with-google
|
|
497
613
|
prodex login --with-claude
|
|
614
|
+
prodex login --with-antigravity
|
|
498
615
|
```
|
|
499
616
|
|
|
500
|
-
Interactive `prodex login` now asks for the login method before starting a browser. Choose ChatGPT browser login, device-code login, API-key login, Google sign-in for Gemini,
|
|
617
|
+
Interactive `prodex login` now asks for the login method before starting a browser. Choose ChatGPT browser login, device-code login, API-key login, Google sign-in for Gemini, Claude sign-in through Claude Code OAuth, or Antigravity CLI sign-in through `agy auth login`. Antigravity login is global to the `agy` CLI and does not create a Prodex profile. For API-key profiles, you can also set an OpenAI-compatible backend URL:
|
|
501
618
|
|
|
502
619
|
```bash
|
|
503
620
|
printf '%s\n' "$OPENAI_API_KEY" | prodex login --with-api-key --base-url http://localhost:11434/v1
|
|
@@ -558,7 +675,7 @@ When you import a Copilot profile, Prodex does not move the Copilot token into P
|
|
|
558
675
|
## Daily command: `prodex s`
|
|
559
676
|
|
|
560
677
|
<details>
|
|
561
|
-
<summary>
|
|
678
|
+
<summary>Runs Codex with Caveman, RTK, and local optimizer guidance</summary>
|
|
562
679
|
|
|
563
680
|
For daily work, I use:
|
|
564
681
|
|
|
@@ -594,13 +711,16 @@ prodex s expose
|
|
|
594
711
|
prodex caveman rtk sqz tokensavior clawcompactor --full-access
|
|
595
712
|
```
|
|
596
713
|
|
|
714
|
+
<details>
|
|
715
|
+
<summary>Prompts, Presidio, memory, and expose (advanced)</summary>
|
|
716
|
+
|
|
597
717
|
Before launch, Super asks whether to add Presidio redaction. Empty input or `n` keeps the expansion above. If you answer `y`, it is equivalent to:
|
|
598
718
|
|
|
599
719
|
```bash
|
|
600
720
|
prodex caveman rtk sqz tokensavior clawcompactor presidio --full-access
|
|
601
721
|
```
|
|
602
722
|
|
|
603
|
-
Use `prodex super --presidio` to enable Presidio without prompting, or `prodex super --no-presidio` to skip the prompt and keep Presidio disabled. Presidio enables runtime request-body and WebSocket text redaction through local Presidio for the session
|
|
723
|
+
Use `prodex super --presidio` to enable Presidio without prompting, or `prodex super --no-presidio` to skip the prompt and keep Presidio disabled. Presidio enables runtime request-body and WebSocket text redaction through local Presidio for the session when services are healthy; service failures follow `fail_mode`. The runtime uses `presidio.toml` endpoints when configured, falls back to `http://localhost:5002` and `http://localhost:5001`, and honors `fail_mode = "open"` or `"closed"`.
|
|
604
724
|
|
|
605
725
|
After the Presidio prompt, Super asks whether to enable prodex-memory through managed Mem0 Docker. Empty input or `n` leaves `prodex-memory` disabled, so Codex will not wait for that MCP server. Answer `y` or pass `--mem0` to start the managed Mem0 OSS Docker server, route its OpenAI-compatible calls through a session-local Prodex gateway, and inject the local Mem0 API key into the temporary Codex MCP config. Use `--no-mem0` to skip the prompt. Use the `mem` optimizer prefix for local SQLite memory. This path does not use Mem0 Cloud or `MEM0_API_KEY`; Docker Compose is required, and Prodex falls back to local embeddings when no upstream provider API key is available.
|
|
606
726
|
|
|
@@ -612,14 +732,20 @@ Use `prodex s doctor` to inspect the Super optimizer stack without launching Cod
|
|
|
612
732
|
|
|
613
733
|
Use `prodex s expose` when you need to reach the live Super terminal from a browser. Prodex starts a local PTY bridge protected by a high-entropy access token, launches `cloudflared tunnel --protocol http2 --url ...` when `cloudflared` is available, and prints both the loopback and Cloudflare quick-tunnel URLs. The browser tab can close without stopping the session; reopening the same token URL reconnects to the existing PTY and replays recent scrollback. Add `--no-tunnel` for local-only access, `--max-clients N` to cap simultaneous browsers, or `--command 'prodex s --no-presidio'` to choose the initial terminal command.
|
|
614
734
|
|
|
615
|
-
|
|
735
|
+
</details>
|
|
616
736
|
|
|
617
|
-
|
|
737
|
+
<details>
|
|
738
|
+
<summary>Super optimizer internals (advanced)</summary>
|
|
739
|
+
|
|
740
|
+
Super's built-in optimization stack is deliberately local and deterministic. It preloads Caveman, exposes a Prodex overlay `rtk` PATH wrapper plus RTK auto-wrappers for common noisy commands when RTK is installed, auto-registers built-in `prodex-inspect` plus discovered `sqz-mcp` and `token-savior` MCP servers, exposes `sqz` and `claw-compactor` wrapper commands when those commands/checkouts are discoverable, invokes a trusted one-shot `prodex-claw-compactor-sessionstart` SessionStart benchmark probe when Claw-Compactor is available, falls back to a temporary shadow `MEMORY.md` when the workspace has no Markdown memory files, then uses Smart Context Autopilot through a dedicated runtime proxy for lower-token request shaping. The probe delegates to `prodex-claw-compactor-auto "$(pwd)"` and uses a marker under `CODEX_HOME` so Codex conversation restarts do not replay it. Presidio redaction and prodex-memory are added only when you opt in. Prodex passes token-savior cache, stats paths, and local memory under `PRODEX_HOME` (default `~/.prodex`) so compatible token-savior versions and memory state stay out of worktrees.
|
|
741
|
+
|
|
742
|
+
Super instructs Codex to use the available local optimizer stack where it fits the task, not just RTK:
|
|
618
743
|
|
|
619
744
|
- RTK works upstream/input-side. Use visible `rtk <cmd>` for noisy terminal commands before their output enters the model context, such as `git diff`, `cargo test`, `npm test`, build logs, and package-manager output. Prodex also auto-wraps common noisy commands as a fallback when RTK is installed, but that fallback does not make the TUI show an `rtk` prefix.
|
|
620
|
-
- SQZ works downstream/context-side through the auto-registered `prodex-sqz` MCP server. Use it for repeated workspace reads, large text blobs, long command outputs that need reuse, and long-session context compression instead of emitting the same full content again.
|
|
621
|
-
- token-savior handles symbol lookup, caller/context navigation, duplicate/dead-code checks, and API-impact searches before broad source reads.
|
|
622
|
-
-
|
|
745
|
+
- SQZ works downstream/context-side through the auto-registered `prodex-sqz` MCP server when `sqz-mcp` is available. Use it for repeated workspace reads, large text blobs, long command outputs that need reuse, and long-session context compression instead of emitting the same full content again.
|
|
746
|
+
- token-savior handles symbol lookup, caller/context navigation, duplicate/dead-code checks, and API-impact searches before broad source reads when token-savior is available.
|
|
747
|
+
- prodex-inspect provides read-only MCP diagnostics for Prodex status, profiles, and latest runtime log tail.
|
|
748
|
+
- claw-compactor handles workspace-level summary or benchmark requests through `prodex-claw-compactor` / `prodex-claw-compactor-auto` when available; treat its output as overview context and reread exact source before edits.
|
|
623
749
|
- prodex-memory provides local Mem0-style memory through the `mem` prefix with SQLite, or through managed Mem0 OSS Docker when you opt in with the Super prompt or `--mem0`; neither path uses Mem0 Cloud auth or `MEM0_API_KEY`.
|
|
624
750
|
- Presidio stays optional and only runs when you opt in with the Super prompt or `--presidio`.
|
|
625
751
|
|
|
@@ -628,6 +754,8 @@ The generated `SUPER_OPTIMIZERS.md` overlay includes an `Available Now` section
|
|
|
628
754
|
|
|
629
755
|
</details>
|
|
630
756
|
|
|
757
|
+
</details>
|
|
758
|
+
|
|
631
759
|
## Commands
|
|
632
760
|
|
|
633
761
|
<details>
|
|
@@ -746,12 +874,12 @@ unless Prodex explicitly owns that command.
|
|
|
746
874
|
| Mode | Command | Description |
|
|
747
875
|
|---|---|---|
|
|
748
876
|
| Normal Codex | `prodex` or `prodex run` | Managed Codex launch with profile selection and quota routing. |
|
|
749
|
-
| Caveman | `prodex caveman` | Runs Codex with
|
|
877
|
+
| Caveman | `prodex caveman` | Runs Codex with Caveman mode enabled. |
|
|
750
878
|
| Super | `prodex s` or `prodex super` | Daily mode with Caveman, RTK guidance, full access, and deterministic/local token optimizations. |
|
|
751
879
|
| Claude Code | `prodex claude` | Runs Claude Code through Prodex-managed state. |
|
|
752
880
|
|
|
753
881
|
<details>
|
|
754
|
-
<summary>Normal Codex</summary>
|
|
882
|
+
<summary>Normal Codex — managed Codex launch</summary>
|
|
755
883
|
|
|
756
884
|
```bash
|
|
757
885
|
prodex
|
|
@@ -763,7 +891,7 @@ prodex exec "review this repo"
|
|
|
763
891
|
</details>
|
|
764
892
|
|
|
765
893
|
<details>
|
|
766
|
-
<summary>Caveman mode</summary>
|
|
894
|
+
<summary>Caveman mode — runs Codex with Caveman enabled</summary>
|
|
767
895
|
|
|
768
896
|
```bash
|
|
769
897
|
prodex caveman
|
|
@@ -780,16 +908,16 @@ prodex caveman exec "review this repo in caveman mode"
|
|
|
780
908
|
prodex caveman 019c9e3d-45a0-7ad0-a6ee-b194ac2d44f9
|
|
781
909
|
```
|
|
782
910
|
|
|
783
|
-
`prodex caveman` runs Codex with a temporary overlay `CODEX_HOME`, so the base profile home stays unchanged after the session ends.
|
|
911
|
+
`prodex caveman` runs Codex with Caveman mode active in a temporary Prodex overlay `CODEX_HOME`, so the base profile home stays unchanged after the session ends.
|
|
784
912
|
|
|
785
|
-
Add optimizer prefixes before Codex args when you want Prodex to
|
|
913
|
+
Add optimizer prefixes before Codex args when you want Prodex to enable a specific session tool in the Prodex overlay: `rtk`, `sqz`, `tokensavior`, `clawcompactor`, `mem`, or `presidio`. Top-level shortcuts such as `prodex rtk`, `prodex sqz`, and `prodex mem` map to `prodex caveman <prefix>`.
|
|
786
914
|
|
|
787
915
|
RTK is still an external binary. Install it separately if `rtk gain` is unavailable.
|
|
788
916
|
|
|
789
917
|
</details>
|
|
790
918
|
|
|
791
919
|
<details>
|
|
792
|
-
<summary>Super mode</summary>
|
|
920
|
+
<summary>Super mode — daily Caveman + RTK + optimizer stack</summary>
|
|
793
921
|
|
|
794
922
|
```bash
|
|
795
923
|
prodex s
|
|
@@ -811,6 +939,9 @@ This is my daily mode. It is the path I keep tuning for normal work: Caveman ena
|
|
|
811
939
|
|
|
812
940
|
Super also enables Smart Context Autopilot in the runtime proxy.
|
|
813
941
|
|
|
942
|
+
<details>
|
|
943
|
+
<summary>Provider launch examples and bridge behavior (advanced)</summary>
|
|
944
|
+
|
|
814
945
|
Use `--provider anthropic` when you want the Codex/Super front end with Anthropic upstream:
|
|
815
946
|
|
|
816
947
|
```bash
|
|
@@ -828,7 +959,7 @@ prodex profile import copilot
|
|
|
828
959
|
prodex s --provider copilot --model gpt-5.1-codex
|
|
829
960
|
```
|
|
830
961
|
|
|
831
|
-
Without `--api-key`, Prodex uses imported Copilot CLI profiles, refreshes Copilot runtime API tokens from GitHub before launch,
|
|
962
|
+
Without `--api-key`, Prodex uses imported Copilot CLI profiles, refreshes Copilot runtime API tokens from GitHub before launch, can rotate fresh native Responses requests across multiple eligible profiles, and binds streaming response IDs back to the owning profile for continuations. `GITHUB_COPILOT_API_KEY`, `GITHUB_COPILOT_API_KEYS`, or `--api-key` can be used when you already have Copilot runtime API token(s); plural keys may be comma-, semicolon-, or newline-separated and can rotate before commit on auth/quota/rate/temporary failures.
|
|
832
963
|
|
|
833
964
|
Use `--provider deepseek` when you want the Codex/Super front end with DeepSeek as the upstream model:
|
|
834
965
|
|
|
@@ -836,7 +967,7 @@ Use `--provider deepseek` when you want the Codex/Super front end with DeepSeek
|
|
|
836
967
|
prodex s deepseek --model deepseek-v4-pro --api-key "$DEEPSEEK_API_KEY"
|
|
837
968
|
```
|
|
838
969
|
|
|
839
|
-
If `--api-key` is omitted, Prodex reads `DEEPSEEK_API_KEY`; `DEEPSEEK_API_KEYS` may contain multiple comma-, semicolon-, or newline-separated keys for round-robin request rotation and pre-commit retry on auth/quota/rate/temporary failures. This path injects a temporary `prodex-deepseek` Codex provider, exposes a local `/v1/responses` adapter to Codex, forwards to DeepSeek's OpenAI-format chat API, and keeps quota preflight disabled. Prodex also injects a one-model Codex catalog for the selected DeepSeek model, so `/model` stays on that model and offers the DeepSeek-compatible `high`/`xhigh` effort choices. `prodex quota --all --provider deepseek` reads the same `DEEPSEEK_API_KEY(S)` environment and fetches DeepSeek `/user/balance`.
|
|
970
|
+
If `--api-key` is omitted, Prodex reads `DEEPSEEK_API_KEY`; `DEEPSEEK_API_KEYS` may contain multiple comma-, semicolon-, or newline-separated keys for round-robin request rotation and pre-commit retry on auth/quota/rate/temporary failures. This path injects a temporary `prodex-deepseek` Codex provider, exposes a local `/v1/responses` adapter to Codex, forwards to DeepSeek's OpenAI-format chat API, and keeps quota preflight disabled. Prodex also injects a one-model Codex catalog for the selected DeepSeek model, so `/model` stays on that model and offers the DeepSeek-compatible `high`/`xhigh` effort choices. `prodex quota --all --provider deepseek` reads the same `DEEPSEEK_API_KEY(S)` environment and fetches DeepSeek `/user/balance`. Available Super optimizer tools remain local Prodex overlay additions around Codex. Remote compact is not implemented for this adapter yet, so the default DeepSeek context window is large and `--auto-compact-token-limit` defaults high.
|
|
840
971
|
|
|
841
972
|
Use `--provider gemini` when you want the Codex/Super front end with Gemini upstream:
|
|
842
973
|
|
|
@@ -849,9 +980,9 @@ GEMINI_API_KEY=... prodex s gemini --model gemini-2.5-pro
|
|
|
849
980
|
prodex s gemini --model gemini-2.5-pro --api-key "$GEMINI_API_KEY"
|
|
850
981
|
```
|
|
851
982
|
|
|
852
|
-
Without `--api-key`, Prodex uses the Google OAuth profile created by `prodex login`
|
|
983
|
+
Without `--api-key`, Prodex uses the Google OAuth profile created by `prodex login --with-google` or the interactive Google sign-in choice, then routes through Google's Code Assist Gemini endpoint. Google login verifies Code Assist readiness before creating or updating the profile, and may open a second browser page if Google requires account verification. With `--api-key`, or `GEMINI_API_KEY(S)` / `GOOGLE_API_KEY(S)`, Prodex converts Codex Responses requests to Chat Completions and sends them through Google's documented `/v1beta/openai/chat/completions` endpoint with Bearer authentication. Streaming, function calls, continuations, and Gemini `reasoning_effort` values are converted back into Codex Responses semantics. Plural key env vars may be comma-, semicolon-, or newline-separated and can rotate before commit on auth/quota/rate/temporary failures. OAuth sessions keep fresh Gemini requests sticky to the previous successful profile by default for smoother Codex-style continuity; set `PRODEX_GEMINI_STICKY_FRESH_OAUTH=0` to restore pure fresh-request round robin. The default model is `auto`, matching Gemini CLI-style model routing through Gemini 3 and stable fallbacks; launch-time Gemini `modelConfigs` / `modelIdResolutions` / `modelChains` are projected into the Codex catalog and runtime fallback snapshot when configured. The injected catalog exposes Gemini reasoning efforts with the 2.5 default thinking budget of 8192 where budget mode is used. `prodex quota` reads the same Google OAuth profile and fetches Gemini Code Assist `retrieveUserQuota` bucket data. Available Super optimizer tools remain local Prodex overlay additions around Codex on this path.
|
|
853
984
|
|
|
854
|
-
`prodex s gemini --cli gemini` launches the native Google Gemini CLI instead of Codex, defaults its native tools to YOLO approval mode, and routes Code Assist requests through Prodex OAuth profile
|
|
985
|
+
`prodex s gemini --cli gemini` launches the native Google Gemini CLI instead of Codex, defaults its native tools to YOLO approval mode, and routes Code Assist requests through Prodex OAuth profile routing. This native CLI path currently requires a Google OAuth profile and does not accept `--api-key`. Set `PRODEX_GEMINI_BIN` to override the `gemini` executable.
|
|
855
986
|
|
|
856
987
|
`prodex s gemini --cli agy` launches the native Antigravity CLI with `--dangerously-skip-permissions` so tool permission prompts are auto-approved. Antigravity CLI owns its authentication through the system keyring/Google Sign-In and does not expose an endpoint or token override, so Prodex account auto-rotation and Presidio proxying are not available on this path. Set `PRODEX_AGY_BIN` to override the `agy` executable.
|
|
857
988
|
|
|
@@ -867,6 +998,11 @@ Gemini Live realtime websocket translation remains available for compatible call
|
|
|
867
998
|
|
|
868
999
|
Run `npm run test:gemini-schema` after changing Gemini request, response, SSE, semantic compact, exact-output, tool-schema, or Live translation. Run `PRODEX_LIVE_GEMINI=1 npm run test:gemini-live` for a credentialed end-to-end Gemini adapter smoke request; set `PRODEX_BIN` or `PRODEX_LIVE_GEMINI_MODEL` to override the binary or model. Add `PRODEX_LIVE_GEMINI_EXTENDED=1` for command-output-only, file edit, `apply_patch`, reference-repo clone/inspection, optional-tool update discipline, semantic compact, and explicit `exec resume` checks. Add `PRODEX_LIVE_GEMINI_MCP=1` and/or `PRODEX_LIVE_GEMINI_MULTIMODAL=1` when the local environment should also exercise MCP and image-input paths.
|
|
869
1000
|
|
|
1001
|
+
</details>
|
|
1002
|
+
|
|
1003
|
+
<details>
|
|
1004
|
+
<summary>Presidio, memory, and optimizer internals (advanced)</summary>
|
|
1005
|
+
|
|
870
1006
|
Before launch, Super asks whether to add Presidio redaction. Empty input or `n` keeps Presidio disabled; answer `y` or pass `--presidio` to add the `presidio` prefix. Use `--no-presidio` to make the disabled choice explicit for non-interactive use. Super then asks whether to enable prodex-memory through managed Mem0 Docker. Empty input or `n` leaves prodex-memory disabled; answer `y` or pass `--mem0` to start the managed Mem0 OSS Docker server and route its OpenAI-compatible calls through Prodex gateway. Use `--no-mem0` to skip that prompt, or the `mem` prefix for local SQLite memory.
|
|
871
1007
|
|
|
872
1008
|
Prodex now supports multi-language Presidio redaction, including automatic detection and multi-language merging. The runtime uses `presidio.toml` endpoints and language configuration when available, falling back to `http://localhost:5002` and `http://localhost:5001` for Analyzer/Anonymizer URLs, and English (`en`) for language if not specified. It honors `fail_mode = "open"` or `"closed"`.
|
|
@@ -894,8 +1030,10 @@ Managed optimizer checkouts are discovered from `PRODEX_OPTIMIZERS_HOME`, `$XDG_
|
|
|
894
1030
|
|
|
895
1031
|
</details>
|
|
896
1032
|
|
|
1033
|
+
</details>
|
|
1034
|
+
|
|
897
1035
|
<details>
|
|
898
|
-
<summary>Claude Code</summary>
|
|
1036
|
+
<summary>Claude Code — managed Claude Code state</summary>
|
|
899
1037
|
|
|
900
1038
|
```bash
|
|
901
1039
|
prodex claude -- -p "summarize this repo"
|
|
@@ -995,6 +1133,7 @@ See [LOCAL.md](./LOCAL.md) for self-hosted model setup and testing.
|
|
|
995
1133
|
prodex info
|
|
996
1134
|
prodex log
|
|
997
1135
|
prodex log stream
|
|
1136
|
+
prodex log upstream
|
|
998
1137
|
prodex doctor --install
|
|
999
1138
|
prodex doctor --runtime
|
|
1000
1139
|
prodex doctor --bundle ./prodex-doctor.json --redacted
|
|
@@ -1008,8 +1147,9 @@ git diff | prodex context compact-output --kind git-diff
|
|
|
1008
1147
|
| Command | Description |
|
|
1009
1148
|
|---|---|
|
|
1010
1149
|
| `prodex info` | Shows provider route/quota shapes plus effective runtime tuning values after environment, policy, and default resolution. |
|
|
1011
|
-
| `prodex log` | Shows the latest
|
|
1012
|
-
| `prodex log stream` | Follows
|
|
1150
|
+
| `prodex log` | Shows the latest session transcript text plus the latest runtime token event. |
|
|
1151
|
+
| `prodex log stream` | Follows session/runtime logs and prints transcript text plus token events live. Add `--json` for JSON Lines token events only. |
|
|
1152
|
+
| `prodex log upstream` | Follows backend-bound LLM payload snapshots after Prodex processing such as Presidio redaction and Smart Context rewriting. Add `--json` for JSON Lines payload events. Snapshots are capped at 128 KiB per payload. |
|
|
1013
1153
|
| `prodex doctor --install` | Adds install and embedded asset checks to doctor output. |
|
|
1014
1154
|
| `prodex doctor --runtime` | Runs runtime diagnostics. |
|
|
1015
1155
|
| `prodex doctor --bundle PATH --redacted` | Writes a shareable JSON diagnostic bundle without stored auth tokens or headers. |
|
|
@@ -1059,7 +1199,7 @@ Set `PRODEX_SHARED_CODEX_HOME` only when you intentionally want a different shar
|
|
|
1059
1199
|
<details>
|
|
1060
1200
|
<summary>Bedrock and custom providers</summary>
|
|
1061
1201
|
|
|
1062
|
-
Auto-rotate and quota checks apply to supported OpenAI/Codex profiles. `prodex quota` also supports Google Gemini OAuth profiles, Anthropic OAuth profiles, imported Copilot accounts, DeepSeek API-key balances, local OpenAI-compatible health snapshots, and configured custom providers.
|
|
1202
|
+
Auto-rotate and quota checks apply to supported OpenAI/Codex profiles. `prodex quota` also supports Google Gemini OAuth profiles, Antigravity CLI quota snapshots, Anthropic OAuth profiles, imported Copilot accounts, DeepSeek API-key balances, local OpenAI-compatible health snapshots, and configured custom providers.
|
|
1063
1203
|
|
|
1064
1204
|
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.
|
|
1065
1205
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@christiandoxa/prodex",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.198.0",
|
|
4
|
+
"description": "Multi-provider Codex wrapper with OpenAI quota-aware routing and Claude Code support",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"bin": {
|
|
7
7
|
"prodex": "prodex"
|
|
@@ -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.198.0",
|
|
20
|
+
"@christiandoxa/prodex-linux-arm64": "0.198.0",
|
|
21
|
+
"@christiandoxa/prodex-darwin-x64": "0.198.0",
|
|
22
|
+
"@christiandoxa/prodex-darwin-arm64": "0.198.0",
|
|
23
|
+
"@christiandoxa/prodex-win32-x64": "0.198.0",
|
|
24
|
+
"@christiandoxa/prodex-win32-arm64": "0.198.0",
|
|
25
25
|
"@openai/codex-linux-x64": "npm:@openai/codex@linux-x64",
|
|
26
26
|
"@openai/codex-linux-arm64": "npm:@openai/codex@linux-arm64",
|
|
27
27
|
"@openai/codex-darwin-x64": "npm:@openai/codex@darwin-x64",
|