Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs-site/astro.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ export default defineConfig({
{ label: "opencode", translations: { ko: "opencode", "zh-CN": "opencode", "zh-TW": "opencode", ru: "opencode", ja: "opencode", tr: "opencode" }, slug: "guides/opencode" },
{ label: "Pi", translations: { ko: "Pi", "zh-CN": "Pi", "zh-TW": "Pi", ru: "Pi", ja: "Pi", tr: "Pi" }, slug: "guides/pi" },
{ label: "Integrations", translations: { ko: "연동", "zh-CN": "集成", "zh-TW": "整合", ru: "Интеграции", ja: "連携", tr: "Entegrasyonlar" }, slug: "guides/integrations" },
{ label: "MiniMax clients", translations: { ko: "MiniMax 클라이언트", "zh-CN": "MiniMax 客户端", "zh-TW": "MiniMax 客戶端", ru: "Клиенты MiniMax", ja: "MiniMax クライアント", tr: "MiniMax İstemcileri" }, slug: "guides/minimax" },
{ label: "Sidecars: Web Search & Vision", translations: { ko: "사이드카: 웹 검색 & 비전", "zh-CN": "边车:网络搜索与视觉", "zh-TW": "邊車:網路搜尋與視覺", ru: "Сайдкары: веб-поиск и зрение", ja: "サイドカー: ウェブ検索 & ビジョン", tr: "Sidecar'lar: Web Arama ve Görme" }, slug: "guides/sidecars" },
{ label: "Image Bridge", translations: { ko: "이미지 브릿지", "zh-CN": "图像桥接", "zh-TW": "圖像橋接", ru: "Image Bridge", ja: "画像ブリッジ", tr: "Image Bridge" }, slug: "guides/image-bridge" },
{ label: "Video Bridge", translations: { ko: "비디오 브릿지", "zh-CN": "视频桥接", "zh-TW": "影片橋接", ru: "Video Bridge", ja: "動画ブリッジ", tr: "Video Bridge" }, slug: "guides/video-bridge" },
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
42 changes: 36 additions & 6 deletions docs-site/src/content/docs/guides/integrations.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
title: Integrations
description: Connect opencodex to OpenCode, Pi, OMP, Hermes, OpenClaw, Kimi Code, Gajae Code and DeepSeek Harness from the dashboard — one switch per client, with a backup taken before every write.
description: Connect opencodex to OpenCode, Pi, OMP, Hermes, OpenClaw, Kimi Code, Gajae Code, DeepSeek Harness and MiniMax Code from the dashboard — one switch per client, with a backup taken before every write.
---

The **Integrations** tab writes opencodex's provider block into a client's own config
file, and removes it again. Eight clients work this way, each with a switch:
file, and removes it again. Nine clients work this way, each with a switch:

| Client | Config file | Format | When the change takes effect | Credential |
|---|---|---|---|---|
Expand All @@ -16,13 +16,20 @@ file, and removes it again. Eight clients work this way, each with a switch:
| Kimi Code | `~/.kimi-code/config.toml` | TOML | on restart, or `/reload` | loopback placeholder |
| Gajae Code | `~/.gjc/agent/models.yml` | YAML | new sessions, or when you open `/model` |`OPENCODEX_GAJAE_API_KEY` |
| DeepSeek Harness (DSH) | `$DSH_HOME/settings.yaml` (default `~/.dsh/settings.yaml`) | YAML | hot reload | non-secret loopback bearer placeholder |
| MiniMax Code | `~/.minimax/config.yaml` | YAML | new sessions, or after opening the model picker | loopback placeholder |

Managed DSH support has a compatibility floor of **DSH 0.1.0-rc.6**. OpenCodex owns only
`llm-pi-ai.providers.opencodex`; Apply and Refresh replace that fragment, Disable removes only that
fragment, and Restore puts back a recorded snapshot. DSH hot reloads provider changes. These
operations do not change the user's default model or the native `deepseek-official` provider.
The managed DSH integration is currently loopback-only and never writes a real credential.

MiniMax Code follows `MINIMAX_DATA_DIR`, then `MAVIS_DATA_DIR`, before falling
back to `~/.minimax`. Its managed block owns only `custom_provider.opencodex`.
It does not change `defaultModel`, the selected MiniMax credential source, or
the user's MiniMax login. Choose a `custom_provider:opencodex/<provider/model>`
entry in MCode after connecting it.

Paths honor each client's own environment override where it has one. For OMP,
`OMP_PROFILE` wins over `PI_PROFILE` by presence, even when explicitly empty. A named profile
uses `PI_CONFIG_DIR` as a directory name relative to the user's home and ignores `PI_CODING_AGENT_DIR`; without a named profile,
Expand Down Expand Up @@ -83,8 +90,8 @@ than 1000 levels — which locks the switch instead, so nothing is silently chan
**OMP** is unaffected by sibling edits too, for a different reason: its writer
patches only its own `providers.opencodex` range byte-wise, so the rest of the
file is never rewritten. For the remaining formats that can carry comments
(Hermes, OpenClaw, Kimi Code, Gajae Code — YAML, JSON5 and TOML written as whole
documents), or
(Hermes, OpenClaw, Kimi Code, Gajae Code, MiniMax Code — YAML, JSON5 and TOML
written as whole documents), or
whenever our own entries were edited, the switch locks and disable refuses rather
than guessing which edits were yours.

Expand All @@ -106,8 +113,8 @@ changed value and calling it success. You will see the file named and nothing on
disk will have moved. Editing that file by hand still works; it is only our
automatic rewrite that declines.

**Pi, Kimi Code, Gajae Code and the managed DSH integration only work against a loopback bind.**
The first three have no config field for the `x-opencodex-api-key` header a non-loopback bind
**Pi, Kimi Code, Gajae Code, MiniMax Code and the managed DSH integration only work against a loopback bind.**
The first four have no config field for the `x-opencodex-api-key` header a non-loopback bind
requires. DSH has a generic headers map, but rc.6 does not document that dedicated admission
header as a supported integration contract, so the managed writer fails closed instead of
guessing. Give them loopback access through an SSH tunnel or a local forwarder that adds the header.
Expand Down Expand Up @@ -138,6 +145,29 @@ ocx integration client history --client hermes
ocx integration client restore --op <opId> [--confirm-drift]
```

For MiniMax Code, connect the provider once and launch through the checked wrapper:

```bash
ocx integration client enable --client mcode
ocx mcode
```

The separate MiniMax platform CLI (`mmx`) is not a file-toggle integration. Its text
commands use MiniMax's Anthropic-compatible endpoint, so OpenCodex provides a
credential-isolated, loopback-only launcher:

```bash
ocx mmx text chat --model anthropic/claude-opus-5 --message "Hello"
ocx mmx text repl --model openai/gpt-5.6-sol
```

Only `mmx text chat` and `mmx text repl` are proxied. Run plain `mmx` for
MiniMax-native image, video, speech, music, vision, search, quota, auth, config, file
and update commands. The wrapper uses a temporary config containing only a non-secret
loopback placeholder; it never loads your `~/.mmx` OAuth or API-key credentials, and
it refuses `--api-key`, `--base-url` and `--region` overrides. See
[MiniMax clients](/guides/minimax/) for the complete workflow and limits.

`--confirm-drift` is never assumed. If the file changed after the operation you are
restoring, the command refuses and tells you, because replacing your newer edits is your
decision to make.
Expand Down
110 changes: 110 additions & 0 deletions docs-site/src/content/docs/guides/minimax.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
---
title: MiniMax clients
description: Route MiniMax Code and MiniMax CLI text commands through OpenCodex without exposing MiniMax credentials.
---

MiniMax publishes two different command-line products. OpenCodex integrates each at
the protocol boundary it actually exposes:

- **MiniMax Code** (`mcode`) is a coding agent with custom Anthropic Messages providers.
- **MiniMax CLI** (`mmx`) is a multimodal platform CLI. Only its `text` resource speaks
the Anthropic-compatible API that OpenCodex can route.

## MiniMax Code

Install and sign in to MiniMax Code using MiniMax's instructions first. Then start
OpenCodex and connect the reversible file integration:

```bash
ocx start
ocx integration client enable --client mcode
ocx mcode
```

![MiniMax Code integration shown with isolated example data](/screenshots/minimax-code-integration.png)

The integration merges one block into `~/.minimax/config.yaml`:

```yaml
custom_provider:
opencodex:
name: OpenCodex
kind: custom
enabled: true
api: anthropic-messages
options:
apiKey: opencodex-loopback
baseURL: http://127.0.0.1:10100
authMode: api-key
models:
anthropic/claude-opus-5: {}
```

The real generated model list comes from the running OpenCodex catalog. The block does
not write a real key, does not replace `defaultModel`, and does not change your MiniMax
login. In MCode, choose a model under `custom_provider:opencodex/...`.

`ocx mcode` verifies that this provider points at the currently running proxy before it
launches the client. If the port changed, refresh the managed block by running the enable
command again. Disable or restore it through the same audited integration system:

```bash
ocx integration client disable --client mcode
ocx integration client history --client mcode
ocx integration client restore --op <opId> [--confirm-drift]
```

`MINIMAX_DATA_DIR` and the legacy `MAVIS_DATA_DIR` are honored. Relative overrides are
refused because OpenCodex and MCode may start in different working directories.

## MiniMax CLI (`mmx`)

Install the official CLI separately:

```bash
npm install -g mmx-cli
mmx --version
```

Route a text command through OpenCodex by using the wrapper and an OpenCodex model id:

```bash
ocx mmx text chat \
--model anthropic/claude-opus-5 \
--message "Explain this function"

ocx mmx --output json text chat \
--model openai/gpt-5.6-sol \
--message "Return a JSON summary"
```

MMX hard-codes `/anthropic/v1/messages` below its API base URL. The wrapper starts a
temporary loopback bridge for the lifetime of the child process. It accepts only POST
requests to that Messages path and `/anthropic/v1/messages/count_tokens`, mapping them
to OpenCodex's existing `/v1/messages` and `/v1/messages/count_tokens` data plane while
preserving request bodies and query data. Canonical OpenCodex request translation,
usage accounting and configured downstream provider authentication remain in effect;
providers receive `x-api-key` or bearer transport according to their configuration.
Streaming preserves Anthropic message and content events. Before forwarding, the bridge
removes incoming admission credential headers and pins the public
`opencodex-loopback` placeholder. Arbitrary Anthropic resources are not proxied, and
the bridge is never exposed beyond loopback.

The wrapper also creates a temporary `MMX_CONFIG_DIR` containing only that placeholder,
then deletes it after `mmx` exits. Your `~/.mmx/config.json`, OAuth tokens and MiniMax
API key are never loaded or copied.

The following limits are intentional:

- Only `text chat` and `text repl` are routed through OpenCodex.
- `--api-key`, `--base-url` and `--region` are refused by the wrapper so caller
credentials or destination selectors cannot conflict with the isolated bridge.
- The wrapper is loopback-only because MMX cannot send OpenCodex's dedicated
`x-opencodex-api-key` admission header for a remote bind.
- Run plain `mmx` for `image`, `video`, `speech`, `music`, `vision`, `search`, `quota`,
`auth`, `config`, `file` and `update`; those call MiniMax-specific APIs that OpenCodex
does not emulate.

`mmx` defaults its text model to `MiniMax-M3`. Pass `--model <provider/model>` when you
want a specific OpenCodex route; otherwise normal OpenCodex model routing rules decide
whether the default id is available.
40 changes: 35 additions & 5 deletions docs-site/src/content/docs/tr/guides/integrations.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
title: Entegrasyonlar
description: Kontrol panelinden OpenCode, Pi, OMP, Hermes, OpenClaw, Kimi Code, Gajae Code ve DeepSeek Harness opencodex'e bağlayın — istemci başına tek bir anahtar ve her yazmadan önce alınan bir yedek.
description: Kontrol panelinden OpenCode, Pi, OMP, Hermes, OpenClaw, Kimi Code, Gajae Code, DeepSeek Harness ve MiniMax Code'u opencodex'e bağlayın — istemci başına tek bir anahtar ve her yazmadan önce alınan bir yedek.
---

**Entegrasyonlar** sekmesi, opencodex'in sağlayıcı bloğunu istemcinin kendi
yapılandırma dosyasına yazar ve tekrar kaldırır. Sekiz istemci bu şekilde
yapılandırma dosyasına yazar ve tekrar kaldırır. Dokuz istemci bu şekilde
çalışır, her biri bir anahtarla:

| İstemci | Yapılandırma dosyası | Format | Değişiklik ne zaman geçerli olur? | Kimlik bilgisi |
Expand All @@ -17,6 +17,7 @@ yapılandırma dosyasına yazar ve tekrar kaldırır. Sekiz istemci bu şekilde
| Kimi Code | `~/.kimi-code/config.toml` | TOML | yeniden başlatmada veya `/reload` ile | geri döngü (loopback) yer tutucusu |
| Gajae Code | `~/.gjc/agent/models.yml` | YAML | yeni oturumlarda veya `/model` açtığınızda | `OPENCODEX_GAJAE_API_KEY` |
| DeepSeek Harness (DSH) | `$DSH_HOME/settings.yaml` (varsayılan `~/.dsh/settings.yaml`) | YAML | çalışırken yeniden yükleme | gizli olmayan geri döngü bearer yer tutucusu |
| MiniMax Code | `~/.minimax/config.yaml` | YAML | yeni oturumlarda veya model seçici açıldıktan sonra | geri döngü (loopback) yer tutucusu |

Yönetilen DSH desteğinin en düşük uyumlu sürümü **DSH 0.1.0-rc.6**'dır. OpenCodex yalnızca
`llm-pi-ai.providers.opencodex` bölümünü yönetir: Uygula ve Yenile bu bölümü değiştirir, Devre Dışı
Expand All @@ -25,6 +26,12 @@ sağlayıcı değişikliklerini çalışırken yeniden yükler. Bu işlemler kul
veya yerel `deepseek-official` sağlayıcısını değiştirmez. Yönetilen DSH entegrasyonu şu anda yalnızca
geri döngü içindir ve asla gerçek bir kimlik bilgisi yazmaz.

MiniMax Code önce `MINIMAX_DATA_DIR`, ardından `MAVIS_DATA_DIR` yolunu izler ve
son olarak `~/.minimax` dizinine geri döner. Yönetilen blok yalnızca
`custom_provider.opencodex` alanına sahiptir; `defaultModel` değerini, seçilen
MiniMax kimlik bilgisi kaynağını veya kullanıcının MiniMax oturumunu değiştirmez.
Bağladıktan sonra MCode içinde bir `custom_provider:opencodex/<provider/model>` girdisi seçin.

Yollar, varsa her istemcinin kendi ortam geçersiz kılmalarını dikkate alır. OMP
için `OMP_PROFILE`, açıkça boş olduğunda bile varlığıyla `PI_PROFILE`'a üstün
gelir. Adlandırılmış bir profil, `PI_CONFIG_DIR`'i kullanıcının ev dizinine göre
Expand Down Expand Up @@ -100,7 +107,7 @@ hiçbir şey sessizce değiştirilmez veya düşürülmez. **OMP** de yanındaki
düzenlemelerden etkilenmez, ama başka bir nedenle: writer'ı yalnızca kendi
`providers.opencodex` aralığını bayt bayt yamalar, dosyanın geri kalanı hiçbir
zaman yeniden yazılmaz. Yorum taşıyabilen diğer biçimlerde (Hermes, OpenClaw,
Kimi Code, Gajae Code — bütün belge olarak yazılan YAML, JSON5 ve TOML) veya
Kimi Code, Gajae Code, MiniMax Code — bütün belge olarak yazılan YAML, JSON5 ve TOML) veya
kendi girdilerimiz düzenlenmişse, anahtar kilitlenir ve hangi düzenlemelerin
size ait olduğunu tahmin etmek yerine devre dışı bırakmayı reddeder.

Expand All @@ -124,8 +131,8 @@ değişen bir değer yazıp buna başarı demek yerine durur ve bunu söyler. Do
adlandırıldığını ve diskte hiçbir şeyin taşınmadığını görürsünüz. Bu dosyayı
elle düzenlemek hala çalışır; yalnızca otomatik yeniden yazmamız reddeder.

**Pi, Kimi Code, Gajae Code ve yönetilen DSH entegrasyonu yalnızca geri döngü (loopback) bağlantısına karşı
çalışır.** İlk üçünün yapılandırmasında geri döngü olmayan bir bağlantının gerektirdiği
**Pi, Kimi Code, Gajae Code, MiniMax Code ve yönetilen DSH entegrasyonu yalnızca geri döngü (loopback) bağlantısına karşı
çalışır.** İlk dördünün yapılandırmasında geri döngü olmayan bir bağlantının gerektirdiği
`x-opencodex-api-key` başlığı için alan yoktur. DSH genel bir headers haritası sunar, ancak rc.6
bu özel kabul başlığını desteklenen bir entegrasyon sözleşmesi olarak belgelememektedir; bu nedenle
yönetilen writer tahmin yürütmek yerine kapalı biçimde reddeder. Bunun yerine bir SSH tüneli veya
Expand Down Expand Up @@ -158,6 +165,29 @@ ocx integration client history --client hermes
ocx integration client restore --op <opId> [--confirm-drift]
```

MiniMax Code için sağlayıcıyı bir kez bağlayın ve denetimli başlatıcı üzerinden çalıştırın:

```bash
ocx integration client enable --client mcode
ocx mcode
```

Ayrı MiniMax platform CLI'si (`mmx`) bir dosya anahtarı entegrasyonu değildir.
Metin komutları MiniMax'ın Anthropic uyumlu uç noktasını kullandığı için OpenCodex,
kimlik bilgilerini yalıtan ve yalnızca geri döngüde çalışan bir başlatıcı sağlar:

```bash
ocx mmx text chat --model anthropic/claude-opus-5 --message "Hello"
ocx mmx text repl --model openai/gpt-5.6-sol
```

Yalnızca `mmx text chat` ve `mmx text repl` proxy üzerinden yönlendirilir. MiniMax'a
özgü diğer komutlar için doğrudan `mmx` çalıştırın. Başlatıcı yalnızca gizli olmayan
geri döngü yer tutucusunu içeren geçici bir yapılandırma kullanır; `~/.mmx` OAuth veya
API anahtarı kimlik bilgilerinizi yüklemez ve `--api-key`, `--base-url` ile `--region`
geçersiz kılmalarını reddeder. Tam iş akışı için
[MiniMax istemcileri](/guides/minimax/) sayfasına bakın.

`--confirm-drift` asla varsayılmaz. Geri yüklediğiniz işlemden sonra dosya
değiştiyse, komut reddeder ve size bildirir; çünkü daha yeni düzenlemelerinizin
üzerine yazmak sizin vereceğiniz bir karardır.
Expand Down
Loading
Loading