@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.
Files changed (2) hide show
  1. package/README.md +205 -65
  2. 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 auto-rotation.
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-rotation; provider adapters let `prodex s` launch the Codex front end against Gemini, Anthropic, Copilot, DeepSeek, and local OpenAI-compatible servers.
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
  ![Prodex overview](https://github.com/christiandoxa/prodex/releases/download/assets/prodex-overview.png)
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
- You need at least one logged-in Prodex profile.
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 to Codex | Auth path | Quota view | Notes |
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 | Full quota preflight and profile auto-rotation. |
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 memory mode</summary>
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 overlay, without the full Super stack.
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 Super/Caveman overlay sessions when `sqz-mcp` is discoverable.
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
- Fast Docker install using Microsoft's published images:
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
- When Super mode opts into Presidio and the default local endpoints are not healthy, Prodex now tries to start these Docker containers automatically before launching Codex. Set `PRODEX_PRESIDIO_AUTO_START=0` to disable that best-effort auto-start and only use the configured endpoints.
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
- Source checkout with Compose:
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
- git clone https://github.com/microsoft/presidio.git ~/.local/share/presidio
447
- cd ~/.local/share/presidio
448
- docker compose -f docker-compose-text.yml up -d --build
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
- Verify with Prodex:
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
- prodex presidio doctor
455
- prodex presidio redact --text "My name is John Smith and my phone is 212-555-1234."
456
- prodex presidio redact --language-mode auto --languages en,id --text "Nama saya Budi dan nomor telepon saya adalah 0812-3456-7890."
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
- When you answer `y` to the `prodex super` / `prodex s` Presidio prompt or pass `--presidio`, Super starts a dedicated runtime proxy that redacts UTF-8 HTTP request bodies and WebSocket text frames through the local Presidio Analyzer and Anonymizer before forwarding them upstream. This is equivalent to adding the `presidio` prefix to the Super stack. Use `--no-presidio` to skip the prompt and keep redaction disabled. 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"`.
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, or Claude sign-in through Claude Code OAuth. For API-key profiles, you can also set an OpenAI-compatible backend URL:
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>Super mode overview</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. 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"`.
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
- Super's built-in optimization stack is deliberately local and deterministic. It preloads Caveman, exposes an overlay `rtk` wrapper plus RTK auto-wrappers for common noisy commands when RTK is installed, auto-registers `sqz-mcp` and `token-savior` MCP servers, exposes `sqz` and `claw-compactor` wrappers 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.
735
+ </details>
616
736
 
617
- Super instructs Codex to use the whole local optimizer stack where it fits the task, not just RTK:
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
- - claw-compactor handles workspace-level summary or benchmark requests through `prodex-claw-compactor` / `prodex-claw-compactor-auto`; treat its output as overview context and reread exact source before edits.
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 a temporary overlay `CODEX_HOME`. |
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 inject a specific launch overlay for that session: `rtk`, `sqz`, `tokensavior`, `clawcompactor`, `mem`, or `presidio`. Top-level shortcuts such as `prodex rtk`, `prodex sqz`, and `prodex mem` map to `prodex caveman <prefix>`.
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, rotates fresh native Responses requests across 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 rotate before commit on auth/quota/rate/temporary failures.
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`. The Super optional tools still run normally because they are local launch overlays 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.
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` and 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 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. The Super optional tools still run as local Codex overlays on this path.
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 rotation. 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.
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 runtime token event: tokens sent (`input_tokens`), cache hits, tokens received (`output_tokens`), and reasoning tokens. |
1012
- | `prodex log stream` | Follows all active runtime logs and prints token events live. Add `--json` for JSON Lines output. |
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.196.0",
4
- "description": "Safe multi-account auto-rotate for Codex CLI with isolated CODEX_HOME profiles",
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.196.0",
20
- "@christiandoxa/prodex-linux-arm64": "0.196.0",
21
- "@christiandoxa/prodex-darwin-x64": "0.196.0",
22
- "@christiandoxa/prodex-darwin-arm64": "0.196.0",
23
- "@christiandoxa/prodex-win32-x64": "0.196.0",
24
- "@christiandoxa/prodex-win32-arm64": "0.196.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",