@koreanhole/opencodex 2.95.2 → 2.95.4

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.
@@ -0,0 +1,510 @@
1
+ <p align="center">
2
+ <img src="../assets/banner.png" alt="opencodex — une passerelle locale pour Codex, Claude Code, Claude Desktop, Grok Build et plus" width="100%">
3
+ </p>
4
+
5
+ <h3 align="center">Une passerelle locale pour vos outils de programmation IA et vos modèles.</h3>
6
+ <p align="center"><b>Utilisez les modèles de votre choix avec Codex, Claude Code, Claude Desktop et Grok Build,<br>et connectez OpenCode, Pi, Qoder, WorkBuddy, Kilo, Cline, T3 Code et d’autres outils grâce aux configurations gérées.</b><br>
7
+ <a href="https://opencodex.me/fr/reference/client-support/">Voir tous les outils pris en charge →</a></p>
8
+
9
+ <p align="center">
10
+ <a href="https://x.com/claudeebum"><img src="https://img.shields.io/badge/%40claudeebum-000000?logo=x&logoColor=white" alt="Suivre @claudeebum sur X"></a>
11
+ <a href="https://www.npmjs.com/package/@koreanhole/opencodex"><img src="https://img.shields.io/npm/v/@koreanhole/opencodex?color=cb3837&label=npm&logo=npm" alt="version npm"></a>
12
+ <a href="https://github.com/koreanhole/opencodex-cli/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/@koreanhole/opencodex?color=blue" alt="licence"></a>
13
+ <img src="https://img.shields.io/node/v/@koreanhole/opencodex?logo=node.js&label=node" alt="version de Node">
14
+ </p>
15
+
16
+ ```bash
17
+ npm install -g @koreanhole/opencodex
18
+ ocx start
19
+ ```
20
+
21
+ <p align="center">
22
+ <a href="https://github.com/lidge-jun/opencodex/releases/latest"><img src="https://img.shields.io/badge/macOS-.dmg-24292f?logo=apple&logoColor=white" alt="Télécharger pour macOS (.dmg)"></a>
23
+ <a href="https://github.com/lidge-jun/opencodex/releases/latest"><img src="https://img.shields.io/badge/Windows-.msi-24292f?logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0zIDNoOC41djguNUgzem05LjUgMEgyMXY4LjVoLTguNXpNMyAxMi41aDguNVYyMUgzem05LjUgMEgyMVYyMWgtOC41eiIvPjwvc3ZnPg==" alt="Télécharger pour Windows (.msi)"></a>
24
+ <a href="https://github.com/lidge-jun/opencodex/releases/latest"><img src="https://img.shields.io/badge/Linux-.AppImage-24292f?logo=linux&logoColor=white" alt="Télécharger pour Linux (.AppImage)"></a>
25
+ <a href="https://github.com/lidge-jun/opencodex/releases/latest"><img src="https://img.shields.io/badge/Linux-.deb-24292f?logo=debian&logoColor=white" alt="Télécharger pour Linux (.deb)"></a>
26
+ </p>
27
+
28
+ <table>
29
+ <tr>
30
+ <td width="50%" valign="middle">
31
+
32
+ ### Claude Code, exécutant n'importe quel modèle
33
+
34
+ Le sélecteur est celui d'origine de Claude Code. Le moteur derrière, non.
35
+
36
+ </td>
37
+ <td width="50%">
38
+ <img src="../assets/claude-code-models.gif" alt="Claude Code exécutant un modèle routé par opencodex — la barre d'état affiche gpt-5.6-luna-medium comme modèle actif" width="100%">
39
+ </td>
40
+ </tr>
41
+ <tr>
42
+ <td width="50%" valign="middle">
43
+
44
+ ### Codex, exécutant n'importe quel modèle
45
+
46
+ Choisissez un fournisseur et lancez-vous — même flux de travail, autre moteur.
47
+
48
+ </td>
49
+ <td width="50%">
50
+ <img src="../assets/demo.gif" alt="démonstration d'opencodex — exécution d'une tâche dans l'application Codex avec un modèle routé non-OpenAI" width="100%">
51
+ </td>
52
+ </tr>
53
+ <tr>
54
+ <td width="50%" valign="middle">
55
+
56
+ ### Claude Desktop, exécutant n'importe quel modèle
57
+
58
+ Opus répond, puis confie la tâche à un sous-agent GPT-5.6 Sol.
59
+
60
+ </td>
61
+ <td width="50%">
62
+ <img src="../assets/claude-desktop-subagent.gif" alt="Claude Desktop répondant avec Claude Opus 4.8, puis déléguant un sous-agent GPT-5.6 Sol par l'intermédiaire d'opencodex" width="100%">
63
+ </td>
64
+ </tr>
65
+ <tr>
66
+ <td width="50%" valign="middle">
67
+
68
+ ### Grok Build, exécutant n'importe quel modèle
69
+
70
+ Sol pilote la session et appelle un sous-agent Kimi K3.
71
+
72
+ </td>
73
+ <td width="50%">
74
+ <img src="../assets/grok-build-subagent.gif" alt="Grok Build exécutant GPT-5.6 Sol par l'intermédiaire d'opencodex et appelant un sous-agent Kimi K3" width="100%">
75
+ </td>
76
+ </tr>
77
+ </table>
78
+
79
+ <p align="center">
80
+ <a href="../README.md">English</a> · <b>Français</b> · <a href="README.ko.md">한국어</a> · <a href="README.zh-CN.md">简体中文</a> · <a href="README.zh-TW.md">繁體中文</a> · <a href="README.ru.md">Русский</a> · <a href="README.ja.md">日本語</a> · <a href="README.tr.md">Türkçe</a> · 📖 <a href="https://opencodex.me/fr/"><b>Documentation complète →</b></a>
81
+ </p>
82
+
83
+ opencodex est une passerelle locale légère entre vos outils de programmation et vos fournisseurs de modèles. Elle accepte les API Responses, Chat Completions et Anthropic Messages et traduit chaque requête pour votre fournisseur, en prenant en charge le streaming, les appels d’outils, le raisonnement et les images lorsque le client, le modèle et le fournisseur le permettent. Utilisez Claude, Gemini, Grok, GLM, DeepSeek, Kimi, Qwen, Ollama et d’autres fournisseurs avec Codex, Claude Code, Claude Desktop, Grok Build et les outils de la [page des clients pris en charge](https://opencodex.me/fr/reference/client-support/). Elle peut aussi gérer un **pool de comptes ChatGPT** pour l’authentification Codex : ajoutez des comptes et actualisez leurs quotas dans le tableau de bord ; les nouvelles sessions sont dirigées vers le compte sain le moins utilisé, tandis que les conversations existantes restent liées à leur compte initial.
84
+
85
+ ## Démarrage rapide
86
+
87
+ ### Installation personnelle (CLI)
88
+
89
+ ```bash
90
+ npm install -g @koreanhole/opencodex # Node 18+ ; le runtime Bun est inclus automatiquement
91
+ ocx start # proxy + tableau de bord sur localhost:10100
92
+ ```
93
+
94
+ Utilisez `ocx service` pour l'exécuter en arrière-plan.
95
+
96
+ Ouvrez **http://localhost:10100** et configurez tout dans le tableau de bord web — ajoutez des
97
+ fournisseurs (plus de 40 intégrés, ou n'importe quel point de terminaison compatible OpenAI),
98
+ choisissez les modèles, gérez les comptes. `ocx gui`
99
+ rouvre le tableau de bord à tout moment.
100
+
101
+ ### Connectez votre outil
102
+
103
+ Connectez l’outil que vous utilisez déjà :
104
+
105
+ | Outil | Connexion |
106
+ |---|---|
107
+ | Codex | Activez le commutateur Codex sur la page **Connect** du tableau de bord, puis exécutez `codex` comme d’habitude. Sur une écoute locale, cela dirige le fournisseur intégré de Codex vers le proxy. Depuis le terminal, exécutez `ocx init` avant d’ajouter des fournisseurs dans le tableau de bord et acceptez son invite Codex. |
108
+ | Claude Code | Avec le CLI `claude` installé, exécutez `ocx claude`. Il démarre le proxy si nécessaire et lance Claude Code à travers celui-ci. |
109
+ | Claude Desktop | Exécutez `ocx claude desktop`. Lors d’une nouvelle installation, cette commande configure le profil de passerelle pour toute l’application ; une configuration first-party existante est conservée et `ocx claude desktop apply --gateway` permet de changer explicitement. Consultez le [guide Claude Code](https://opencodex.me/fr/guides/claude-code/). Quittez complètement puis rouvrez Claude Desktop après un changement. |
110
+ | Grok Build | Sur une écoute locale avec l’intégration Grok activée, `ocx start` enregistre les modèles lorsque `~/.grok` existe ; choisissez un modèle `ocx-*` dans Grok Build. Pour une configuration distante, consultez le [guide Grok Build](https://opencodex.me/fr/guides/grok-build/). Après avoir ajouté des fournisseurs, redémarrez le proxy (ou lancez `ocx ensure` lorsque le démarrage automatique de Codex est activé) pour actualiser la liste. |
111
+ | Outils avec intégration gérée | Utilisez la page **Connect** du tableau de bord ou `ocx integration client enable --client <id>`. |
112
+ | Tout autre outil | Définissez l’URL de base compatible OpenAI `http://localhost:10100/v1` ou l’URL de base Anthropic `http://localhost:10100`. |
113
+
114
+ La [page des clients pris en charge](https://opencodex.me/fr/reference/client-support/) indique la méthode de connexion et le protocole de chaque outil.
115
+
116
+ <details>
117
+ <summary><b>Application de bureau (bêta)</b></summary>
118
+
119
+ L'application de bureau reprend le même proxy et le même tableau de bord dans une fenêtre native, avec une icône dans la barre d'état et le binaire `ocx` inclus.
120
+ Elle se rattache à un proxy déjà en cours d'exécution ou démarre celui qui est fourni, et le tableau de bord reste
121
+ sur le port du proxy (**http://localhost:10100** sauf si vous en avez configuré un autre). Choisissez le fichier
122
+ correspondant à votre plateforme sur la page de la [dernière version publiée](https://github.com/lidge-jun/opencodex/releases/latest) :
123
+
124
+ | Plateforme | Fichier | Remarques |
125
+ |---|---|---|
126
+ | macOS 13+ (Apple Silicon et Intel) | `OpenCodex-<version>-macos.dmg` | Compilation universelle, signée avec un identifiant Developer ID et notariée |
127
+ | Windows (x64) | `OpenCodex-<version>-windows-x64.msi` | Signature du code via SignPath Foundation en cours de déploiement ([politique de signature du code](https://opencodex.me/fr/reference/code-signing/)) ; tant qu’une version n’est pas signée, SmartScreen demande une confirmation : choisissez **Informations complémentaires → Exécuter quand même** |
128
+ | Linux (x86_64) | `OpenCodex-<version>-linux-x86_64.AppImage` ou `-linux-amd64.deb` | La barre d'état nécessite un environnement de bureau compatible AppIndicator |
129
+
130
+ Chaque fichier est accompagné d'un `.sha256` sur la page de la version. Sous macOS 14+, l'application embarque
131
+ également une extension WidgetKit qui affiche l'état du proxy, l'utilisation du jour et les quotas des
132
+ fournisseurs ; le modèle de données des instantanés qu'elle affiche se trouve dans [`app/`](../app)
133
+ (`MenuBarCore`). Pour compiler l'application vous-même, exécutez
134
+ `bun install && bun run build:gui` à la racine du dépôt, puis, dans `desktop/`,
135
+ `bun install && bun run prepare-sidecar && bun run prepare-widget && bun run build:local` sous macOS,
136
+ ou `bun install && bun run prepare-sidecar && bun run build:local` sous Windows et Linux (l'étape du widget
137
+ exige macOS). Le [guide de l'application de bureau](https://opencodex.me/fr/guides/desktop-app/) et le
138
+ [guide de l'application macOS dans la barre des menus](https://opencodex.me/fr/guides/macos-menu-bar/) détaillent le premier lancement, et
139
+ [`AGENTS_INSTALL.md`](../AGENTS_INSTALL.md#where-things-are-installed) répertorie tout ce qui est écrit sur le disque.
140
+
141
+ </details>
142
+
143
+ ### Groupe de comptes ChatGPT
144
+
145
+ opencodex peut également gérer un **groupe de comptes ChatGPT** pour l'authentification Codex. Ajoutez plusieurs
146
+ comptes ChatGPT / Codex et actualisez leurs quotas 5 h / hebdomadaires / 30 j dans le tableau de bord.
147
+ Avec le routage par quota, les nouvelles sessions peuvent utiliser le compte opérationnel le moins sollicité ;
148
+ les modes round-robin et fill-first appliquent leurs propres politiques. Les fils Codex existants restent
149
+ normalement associés au compte qui les a démarrés, afin que les longues sessions SSH, tmux ou connectées
150
+ depuis un appareil mobile ne changent pas de compte en cours de conversation — mais la réévaluation des
151
+ quotas, le basculement, l'exclusion d'un compte, l'expiration de l'association ou la récupération après
152
+ une erreur 401/403 ou 429 peuvent les réassocier. Attribuez un ordre de sélection aux comptes lorsque
153
+ l'un d'eux — généralement votre connexion Codex Desktop — ne doit être utilisé qu'une fois les autres épuisés.
154
+
155
+ ### Sponsors
156
+
157
+ Les sponsors permettent de maintenir opencodex à chaque changement de protocole en amont. Intéressé ?
158
+ Voir [SPONSORS.md](../SPONSORS.md).
159
+
160
+ <!-- sponsors:main — one banner, model developers only; empty until a Main sponsor signs -->
161
+
162
+ <!-- sponsors:standard — one row per sponsor, in order of signing -->
163
+ <table>
164
+ <tbody>
165
+ <tr>
166
+ <td width="180"><a href="https://www.orcarouter.ai/?utm_source=opencodex&utm_medium=readme"><img src="../assets/sponsors/orcarouter.png" alt="OrcaRouter" width="150"></a></td>
167
+ <td>Merci à <a href="https://www.orcarouter.ai/?utm_source=opencodex&utm_medium=readme">OrcaRouter</a> pour son soutien à ce projet ! OrcaRouter est une passerelle d'IA compatible OpenAI pour la production : un routage adaptatif qui évalue chaque prompt et l'envoie au modèle qui atteint votre seuil, un basculement automatique, des règles de routage sous forme de code, une tarification fournisseur sans marge avec mise en cache des prompts, ainsi que des garde-fous, un pare-feu d'agents et des journaux de requêtes sur chaque appel, parmi plus de 200 modèles. Choisissez <code>OrcaRouter</code> dans le sélecteur Add provider ou exécutez <code>ocx provider add orcarouter</code> ; <code>orcarouter/auto</code> est le routeur adaptatif.</td>
168
+ </tr>
169
+ <tr>
170
+ <td width="180"><a href="https://tokenlab.sh/r/OPENCODEX"><picture><source media="(prefers-color-scheme: dark)" srcset="../assets/sponsors/tokenlab-dark.png"><img src="../assets/sponsors/tokenlab-light.png" alt="TokenLab" width="150"></picture></a></td>
171
+ <td>Merci à <a href="https://tokenlab.sh/r/OPENCODEX">TokenLab</a> pour son soutien à ce projet ! TokenLab donne aux agents de code une seule clé API pour les principaux modèles, avec les formats OpenAI Responses et Chat Completions, Anthropic Messages et l'API native de Gemini, streaming et appel d'outils compris. Il fournit aussi un serveur MCP et des Skills pour agents afin de faciliter l'intégration. Choisissez votre mode de livraison et payez à l'usage. Choisissez <code>TokenLab</code> dans le sélecteur Add provider ou exécutez <code>ocx provider add tokenlab</code>.<br><sub>TokenLab 为编程智能体提供统一的多模型 API,一枚 API Key 即可接入主流模型,支持 OpenAI Responses、Chat Completions、Anthropic Messages 和 Gemini 原生 API 格式,以及流式输出和工具调用。同时提供 MCP 服务器和 Agent Skills,方便接入现有工作流;交付模式可选,按量付费。</sub></td>
172
+ </tr>
173
+ </tbody>
174
+ </table>
175
+
176
+ ---
177
+
178
+ <details>
179
+ <summary>Docker Compose</summary>
180
+
181
+ Le dépôt fournit une construction Compose épinglée par digest, exécutée hors root. La construction génère et
182
+ vérifie elle-même le manifeste de compatibilité canonique à partir de l'instantané Git sélectionné. Un clone local
183
+ nécessite Git et Docker Compose ; un contexte Git distant ne nécessite que Docker Compose. Aucun des deux chemins
184
+ ne requiert Bun sur l'hôte ni d'étape de préparation. Initialisez une seule fois le jeton du plan de données via
185
+ stdin et démarrez le hub :
186
+
187
+ ```bash
188
+ git clone https://github.com/lidge-jun/opencodex.git
189
+ cd opencodex
190
+ docker compose build
191
+ openssl rand -hex 32 | docker compose run --rm -T hub bun run docker/bootstrap-token.ts
192
+ docker compose up -d
193
+ curl --fail --silent http://127.0.0.1:10100/healthz
194
+ curl --fail --silent http://127.0.0.1:10100/readyz
195
+ ```
196
+
197
+ La liaison hôte par défaut est `127.0.0.1:10100`. Une exposition distante exige explicitement
198
+ `OPENCODEX_BIND_ADDRESS=<LAN-or-Tailscale-IP> docker compose up -d` ; `0.0.0.0` active
199
+ toutes les interfaces de l'hôte. Restreignez l'accès avec un pare-feu et une façade TLS/tailnet authentifiée.
200
+ Le JSON généré reste non suivi. Le contexte de construction n'admet que `.git/index` et `.git/HEAD` — l'inventaire
201
+ lu par `git ls-files`, soit environ 1 Mo au lieu du magasin d'objets complet — et ils ne sont visibles que par l'étape
202
+ de manifeste réservée à la construction, via un montage en lecture seule ; aucun `COPY` n'inclut donc `.git`. Un manifeste
203
+ déjà généré sur l'hôte n'est accepté qu'après validation ; sinon, la construction le génère elle-même. La construction
204
+ rejette les manifestes obsolètes, les fichiers manquants ou non concordants, les fichiers sources en trop et les liens symboliques.
205
+ Elle vérifie chaque SHA-256 enregistré par rapport au contexte de construction et aux fichiers d'exécution copiés, y compris
206
+ `package.json`, `bun.lock` et le fichier spécifiquement inclus `scripts/model-metadata.source.json`.
207
+
208
+ Un contexte Git distant exige que BuildKit conserve les métadonnées Git. Cet extrait de configuration Compose
209
+ sélectionne l'instantané distant et transmet l'argument intégré requis :
210
+
211
+ ```yaml
212
+ services:
213
+ hub:
214
+ pull_policy: build
215
+ build:
216
+ context: https://github.com/lidge-jun/opencodex.git#main
217
+ dockerfile: Dockerfile
218
+ target: runtime
219
+ args:
220
+ BUILDKIT_CONTEXT_KEEP_GIT_DIR: "1"
221
+ ```
222
+
223
+ Le jeton et l'état mutable restent dans le volume nommé `ocx-state` ; aucun secret n'est placé dans
224
+ l'image, le fichier Compose, l'environnement ou les arguments du shell. Consultez le
225
+ [guide de déploiement Remote Hub](https://opencodex.me/fr/guides/remote-hub/) pour la configuration
226
+ des fournisseurs, les contrôles d'acceptation authentifiés, la gestion distante et le rollback.
227
+
228
+ </details>
229
+
230
+ <details>
231
+ <summary>Installer depuis les sources (dernière version de développement)</summary>
232
+
233
+ **macOS / Linux :**
234
+
235
+ ```bash
236
+ curl -fsSL https://bun.sh/install | bash
237
+ git clone -b dev https://github.com/lidge-jun/opencodex.git
238
+ cd opencodex && ~/.bun/bin/bun install
239
+ ~/.bun/bin/bun run build:gui
240
+ ~/.bun/bin/bun run src/cli/index.ts start
241
+ ```
242
+
243
+ **Windows (PowerShell) :**
244
+
245
+ ```powershell
246
+ irm bun.sh/install.ps1 | iex
247
+ git clone -b dev https://github.com/lidge-jun/opencodex.git
248
+ cd opencodex; bun install
249
+ bun run build:gui
250
+ bun run src/cli/index.ts start
251
+ ```
252
+
253
+ L'installation depuis les sources exécute la dernière version de la branche `dev`. Les correctifs de
254
+ gestion de la mémoire, les améliorations du ramasse-miettes de l'environnement
255
+ d'exécution et les correctifs non publiés y sont disponibles avant
256
+ leur arrivée dans le paquet npm.
257
+
258
+ </details>
259
+
260
+ <details>
261
+ <summary>Pour les agents</summary>
262
+
263
+ ```bash
264
+ npm install -g @koreanhole/opencodex
265
+ ocx start # ou `ocx service`
266
+ ocx init # configuration interactive : écrit ~/.opencodex/config.json et relie Codex
267
+ ```
268
+
269
+ `ocx init` ne démarre jamais le proxy ; démarrez-le d'abord (ou après — les deux ordres fonctionnent, mais les commandes
270
+ sans interface comme `ocx provider add` et `ocx combo set` communiquent avec le proxy **actif** et se terminent avec un code différent de zéro
271
+ s'il est inaccessible). `ocx status` / `ocx doctor` / `ocx health` indiquent l'état d'exécution.
272
+
273
+ > **Agents qui installent ou exécutent opencodex :** lisez
274
+ > [`AGENTS_INSTALL.md`](../AGENTS_INSTALL.md). Une exécution interactive de `ocx start` peut demander une
275
+ > fois s'il faut ajouter une étoile à ce dépôt — cette décision appartient à l'utilisateur, jamais à un agent. La CLI masque
276
+ > l'invite lors des exécutions pilotées par un agent et l'API les refuse avec `403 agent_consent_required`.
277
+
278
+ </details>
279
+
280
+ ## Plateformes prises en charge
281
+
282
+ | Système d'exploitation | État | Gestionnaire de services | Application de bureau (bêta) |
283
+ |---|---|---|---|
284
+ | macOS (arm64 / x64) | Entièrement pris en charge | launchd | `.dmg` universel |
285
+ | Linux (x64 / arm64) | Entièrement pris en charge | systemd (unité utilisateur) | x86_64 `.AppImage` / `.deb` |
286
+ | Windows (x64) | Entièrement pris en charge | Planificateur de tâches (masqué) / service natif en option (`--native`, WinSW) | x64 `.msi` |
287
+
288
+ L'installation de la CLI nécessite [Node](https://nodejs.org) 18+ ; l'application de bureau n'a besoin ni de Node ni de Bun. L'environnement d'exécution Bun est inclus lors de `npm install` — aucune installation
289
+ séparée de Bun n'est nécessaire, ni WSL sous Windows. Si npm a bloqué les scripts d'installation de l'environnement inclus,
290
+ consultez la [documentation d'installation](https://opencodex.me/fr/getting-started/installation/).
291
+
292
+ ## Points forts
293
+
294
+ - **Utilisez n'importe quel LLM avec Codex, Claude Code, Claude Desktop et Grok Build** — plus de 40 fournisseurs prêts à
295
+ l'emploi, chacun conservant sa propre interface native.
296
+ - **Réutilisez une connexion CLI locale** — `cline-cli/default` et `gemini-cli/default` délèguent à la CLI installée et connectée, tandis que Codex conserve l'approbation et l'exécution des outils.
297
+ - **Regroupez les comptes ChatGPT** — association aux fils, basculement automatique tenant compte des quotas, période de récupération et
298
+ gestion de l'authentification en mode fail-closed.
299
+
300
+ > **Note sur la politique des fournisseurs :** le regroupement de comptes sert uniquement au routage et à la résilience opérationnelle ; il ne
301
+ > garantit aucune protection contre les limites de débit, les mesures d'application, les suspensions ou d'autres actions
302
+ > sur les comptes. OpenCodex n'encourage pas l'utilisation de comptes supplémentaires pour contourner les limites d'un fournisseur, ni le
303
+ > partage d'identifiants de compte entre personnes. Vous êtes responsable du respect des conditions actuelles de chaque
304
+ > fournisseur. Consultez le
305
+ > [guide des groupes de comptes Codex Auth](https://opencodex.me/fr/guides/web-dashboard/)
306
+ > et les [Conditions d'utilisation actuelles d'OpenAI](https://openai.com/policies/terms-of-use/).
307
+ - **Combos** — un identifiant de modèle virtuel avec basculement ou round-robin pondéré entre fournisseurs. Consultez
308
+ le [guide des combos](https://opencodex.me/fr/guides/combos/).
309
+ - **Des sous-agents sur n'importe quel modèle** — affichez les modèles routés dans le sélecteur de sous-agents de Codex, avec contrôle des surfaces v1/v2 et chaînes de repli. Consultez le
310
+ [guide des sous-agents](https://opencodex.me/fr/guides/sub-agent-surface/).
311
+ <!-- sponsors:main-first-mention -->
312
+ - **Connectez-vous une fois, oubliez la clé API** — OAuth pour xAI, Anthropic et Kimi ; ou transmettez
313
+ `codex login`, collez une clé ou utilisez des références `${ENV_VAR}`.
314
+ - **Modules complémentaires de recherche web et de vision** — les modèles non-OpenAI bénéficient d'une véritable recherche web et de la compréhension d'images
315
+ grâce à un module complémentaire utilisant votre connexion ChatGPT.
316
+ - **Voyez ce qui se passe** — le tableau de bord affiche les fournisseurs, l'état OAuth, la sélection des modèles et un
317
+ journal des requêtes en direct avec le nombre de jetons de cache.
318
+ - **Arrêt propre, aucun résidu** — `ocx stop` restaure la configuration d'origine de Codex.
319
+ - **Gestion bornée de la mémoire** — chaque cache, tampon circulaire et stockage de traduction de protocole
320
+ à longue durée de vie possède une limite finie, un budget en octets ou une réconciliation active. Aucun `Map` ou `Set`
321
+ non borné ne subsiste après le rechargement de la configuration.
322
+
323
+ <details>
324
+ <summary>Détails de la gestion de la mémoire</summary>
325
+
326
+ OpenCodex suit l'état conservé par le processus dans les catégories ci-dessous. Chacune possède une limite documentée :
327
+
328
+ - **14 stockages conservés** (journal des requêtes, tampons circulaires de débogage, cache d'images, cache de
329
+ modèles, descriptions visuelles, blobs de curseurs, continuation des réponses, etc.) sont comptabilisés en octets et
330
+ évincés selon le budget mémoire géré par l'application (256 Mio par défaut), sauf le stockage de
331
+ rejeu des contrôles natifs, épinglé et jamais évincé.
332
+ - **4 tampons observés** (accumulateurs de traduction, segments finaux d'images/OAuth/Grok) sont
333
+ surveillés pour détecter la pression des octets en cours de traitement, sans éviction.
334
+ - **31 enregistrements de stockages d'état** gèrent les balayages d'expiration (intervalle de 60 s) et la
335
+ réconciliation des générations de configuration afin de supprimer les clés obsolètes des fournisseurs et des comptes.
336
+ - **Les mémos de chemins et d'empreintes** (métadonnées de l'espace de travail, identités renforcées, sels
337
+ d'installation, capacités indiquées par le mode) utilisent des limites LRU selon l'ordre d'insertion (8 à 128 entrées).
338
+ - **Les marqueurs de suppression des générations du cache de modèles** sont supprimés après réconciliation ; une incrémentation globale
339
+ de la génération empêche les découvertes obsolètes en cours de repeupler les fournisseurs
340
+ supprimés.
341
+ - **La déduplication des identifiants d'événements du Lab** s'exécute sous un verrou de registre sur disque, sans
342
+ index en mémoire vive au niveau du processus.
343
+
344
+ Exécutez `GET /api/system/memory` (avec le jeton d'administration) pour consulter en direct les octets
345
+ conservés, les compteurs d'éviction et les échantillons du watchdog.
346
+
347
+ </details>
348
+
349
+ ## Routage des modèles
350
+
351
+ Ciblez n'importe quel fournisseur et modèle configuré avec la syntaxe `provider/model` :
352
+
353
+ ```bash
354
+ codex -m "anthropic/claude-opus-5" "Explique cette stack trace"
355
+ codex -m "google/gemini-3-pro" "Écris des tests unitaires pour auth.ts"
356
+ codex -m "ollama/llama3" "Refactorise cette fonction"
357
+ ```
358
+
359
+ Omettez le préfixe `provider/` pour utiliser le fournisseur par défaut ou établir automatiquement la
360
+ correspondance selon le motif du nom du modèle. Les identifiants de modèles du fournisseur contenant `/`
361
+ sont présentés avec leurs barres obliques internes remplacées par `-` ; la forme brute comportant toutes
362
+ les barres obliques continue également de fonctionner. Détails : [documentation sur le routage des modèles](https://opencodex.me/fr/guides/model-routing/).
363
+
364
+ ### Routage JEV Auto (optionnel)
365
+
366
+ TypeSafe JEV peut choisir le premier modèle et l'effort de raisonnement d'un Combo activé explicitement,
367
+ sans rien changer au sélecteur de modèles ni aux routes directes. Ajoutez l'identifiant avec
368
+ `ocx login jev`, depuis **Providers → TypeSafe JEV → Add API key**, ou via `TYPESAFE_API_KEY`/`JEV_API_KEY`.
369
+ Ouvrez ensuite **Models → Combos → Create JEV Auto**, choisissez les modèles cibles autorisés et cochez
370
+ les efforts exacts que JEV peut sélectionner pour chaque cible. Sans réglage d'effort, une cible autorise
371
+ tous les efforts que le modèle annonce actuellement.
372
+
373
+ JEV n'est consulté que pour `jev-auto`, et une seule fois par appel logique au modèle. Un identifiant
374
+ manquant, une erreur réseau ou une décision invalide retombent sur la première cible éligible ;
375
+ l'annulation par l'appelant annule toujours la requête. Les tests automatisés utilisent un point de
376
+ terminaison TypeSafe simulé et ne valident pas un compte JEV réel.
377
+
378
+ Un Combo JEV peut aussi interroger un modèle de décision auto-hébergé, comme `tev1` d'Ollama, sans
379
+ clé : ajoutez un fournisseur `jev-decision` dont la `baseUrl` est le point de terminaison complet
380
+ `/v1/systemone`, puis indiquez-le dans le `decisionProvider` du Combo. Les identifiants TypeSafe n'y
381
+ sont jamais envoyés. Détails : [modèle de décision auto-hébergé](https://opencodex.me/fr/guides/combos/).
382
+
383
+ ## Fournisseurs et adaptateurs
384
+
385
+ <!-- sponsors:main-first-mention -->
386
+ OpenAI (connexion ChatGPT ou clé API), Anthropic, Google Gemini, xAI, Kimi, Azure OpenAI, Ollama
387
+ (local + Cloud), Cursor (expérimental) et tous les points de terminaison compatibles OpenAI — ainsi que DeepSeek,
388
+ Groq, OpenRouter, OpenGateway, Together, Fireworks, Cerebras, Mistral, Hugging Face, NVIDIA NIM, MiniMax,
389
+ Qwen Cloud, Qoder Global et CN (PAT officiel + CLI), SiliconFlow, et d'autres. Liste complète : `ocx init` ou la
390
+ [documentation des fournisseurs](https://opencodex.me/fr/guides/providers/).
391
+
392
+ ## CLI
393
+
394
+ ```bash
395
+ ocx init # configuration interactive (écrit la configuration, relie Codex, propose le shim)
396
+ ocx start [--port 10100] [--socks5 [host:port] | --socks5-off] # SOCKS5 par défaut : socks5://127.0.0.1:10808
397
+ ocx stop # arrête le proxy et restaure Codex natif
398
+ ocx service [install|repair|restart|start|stop|status|uninstall|remove] # service en arrière-plan
399
+ ocx codex-shim install # démarre le proxy à la demande dès que `codex` se lance
400
+ ocx health [--json] # vérifie immédiatement que le proxy répond
401
+ ocx ready [--json] [--wait [--timeout <seconds>]] # vérifie l'état après synchronisation
402
+ ocx status # le proxy est-il actif ?
403
+ ocx gui # ouvre le tableau de bord web
404
+ ocx provider <...> # gère les fournisseurs (list/add/edit/test/remove)
405
+ ocx account <...> # gère les comptes ChatGPT et les groupes de clés API
406
+ ocx combo <...> # gère les combos de basculement / round-robin
407
+ ocx v2 <...> # contrôle les surfaces multi-agents v1/v2
408
+ ocx update [--tag preview] # met à jour opencodex
409
+ ```
410
+
411
+ Si le port préféré est occupé, le démarrage s'arrête et indique le processus qui l'occupe au lieu de passer à un autre port,
412
+ afin de ne jamais laisser un second proxy fonctionner aux côtés du premier. Libérez le port ou indiquez-en un autre avec
413
+ `--port`. Référence complète : [documentation de la CLI](https://opencodex.me/fr/reference/cli/).
414
+
415
+ ### État de fonctionnement et disponibilité
416
+
417
+ `GET /healthz` indique immédiatement l'état de fonctionnement du proxy. Le point de terminaison non authentifié `GET /readyz` indique
418
+ la disponibilité après synchronisation avec l'identité JSON assainie `{service, version, uptime, pid, port, status}`.
419
+ Il renvoie `200` lorsque `status` vaut `ready` ; les états `pending` et l'état terminal `failed` renvoient `503` avec
420
+ `Retry-After: 1`.
421
+
422
+ `ocx ready [--json] [--wait [--timeout <seconds>]]` effectue une seule sonde par défaut. `--wait` interroge
423
+ pendant 45 secondes au maximum par défaut, mais s'arrête immédiatement s'il observe l'état terminal `failed` ;
424
+ `--timeout <seconds>` définit une limite de 1 à 300 secondes, nécessite `--wait` et n'accepte que les entiers positifs. La sortie `--json` de la CLI est
425
+ `{ready, status, pid, port}`, où `status` vaut `ready`, `pending`, `failed` ou `unreachable`.
426
+
427
+ | Sortie | Résultat |
428
+ | --- | --- |
429
+ | `0` | Prêt |
430
+ | `1` | Non prêt : en attente, échec, expiration du délai ou inaccessible |
431
+ | `64` | Arguments non valides |
432
+
433
+ Un proxy plus ancien dépourvu de `/readyz` échoue de façon fail-closed en `unreachable` avec le code de sortie 1, tandis que `ocx health`
434
+ reste compatible.
435
+
436
+ ### Démarrage automatique : service ou shim
437
+
438
+ Utilisez le **service** (`ocx service`) pour un proxy toujours actif qui redémarre après un plantage. Utilisez le
439
+ **shim** (`ocx codex-shim install`) pour un démarrage léger à la demande sans démon en arrière-plan.
440
+ Supprimez-les avec `ocx service uninstall` / `ocx codex-shim uninstall`.
441
+
442
+ ### Désinstallation
443
+
444
+ ```bash
445
+ ocx uninstall # arrête, supprime le service/shim, restaure Codex natif et nettoie l'état
446
+ npm uninstall -g @koreanhole/opencodex
447
+ ```
448
+
449
+ ## Accès distant
450
+
451
+ Par défaut, opencodex se lie à `127.0.0.1` et ne nécessite aucune authentification supplémentaire. Une liaison au-delà
452
+ de l'adresse de bouclage (`"hostname": "0.0.0.0"`) **nécessite** un jeton bearer — le proxy refuse de démarrer
453
+ sans `OPENCODEX_API_AUTH_TOKEN`, et chaque requête cliente doit le fournir dans
454
+ `x-opencodex-api-key`. Détails : [référence de configuration](https://opencodex.me/fr/reference/configuration/).
455
+
456
+ ## Documentation
457
+
458
+ La documentation publique — installation, fournisseurs, routage, combos, sous-agents, modules complémentaires, intégrations et
459
+ les références de la CLI, de la configuration et de l'API de gestion — est générée depuis [`docs-site/`](../docs-site) et
460
+ publiée sur **[opencodex.me](https://opencodex.me/fr/)**.
461
+
462
+ Les notes de référence des mainteneurs se trouvent dans [`structure/`](../structure), la configuration pour
463
+ les contributeurs dans [`CONTRIBUTING.md`](../CONTRIBUTING.md), et le signalement de problèmes de sécurité dans [`SECURITY.md`](../SECURITY.md).
464
+ Signalez les vulnérabilités non divulguées en privé grâce au
465
+ [signalement privé de vulnérabilités de GitHub](https://github.com/lidge-jun/opencodex/security/advisories/new),
466
+ et non dans une issue publique.
467
+ Ce formulaire est le seul canal technique : il n'existe pas d'adresse e-mail de sécurité. Les
468
+ échanges ultérieurs restent dans le signalement privé ; une issue publique peut servir à la
469
+ coordination, jamais aux détails de la vulnérabilité. Accuser réception d'un signalement n'est pas
470
+ le trier, et aucun délai de première réponse n'est promis.
471
+
472
+ ## Développement
473
+
474
+ Le développement depuis les sources nécessite la CLI `bun` dans votre `PATH`. Le paquet npm publié inclut
475
+ son propre environnement d'exécution Bun pour les commandes `ocx` installées ; les scripts du paquet peuvent
476
+ également résoudre Bun via cette dépendance incluse.
477
+
478
+ ```bash
479
+ git clone https://github.com/lidge-jun/opencodex.git
480
+ cd opencodex
481
+ bun install
482
+ bun run typecheck
483
+ bun run test
484
+ ```
485
+
486
+ Consultez le guide **[Contribuer](../CONTRIBUTING.md)**.
487
+
488
+ Les contributions de contributeurs intégrées par un report ou une réimplémentation d'un mainteneur,
489
+ lorsque le commit ne nomme pas l'auteur d'origine, sont consignées dans
490
+ **[CREDITS.md](../CREDITS.md)**.
491
+
492
+ ## Politique de signature du code (Code signing policy)
493
+
494
+ Les binaires Windows passent à la signature Authenticode ([#7207](https://github.com/lidge-jun/opencodex/issues/7207)). Le [guide de signature du code Windows](https://opencodex.me/fr/reference/code-signing/) décrit le déploiement, la vérification d’une signature et la politique complète.
495
+
496
+ Free code signing provided by [SignPath.io](https://about.signpath.io/), certificate by [SignPath Foundation](https://signpath.org/).
497
+
498
+ - Committers and reviewers: [lidge-jun](https://github.com/lidge-jun)
499
+ - Approvers: [lidge-jun](https://github.com/lidge-jun)
500
+ - Privacy: This program will not transfer any information to other networked systems unless specifically requested by the user or the person installing or operating it.
501
+
502
+ ## Avis de non-responsabilité
503
+
504
+ opencodex est un projet indépendant maintenu par la communauté et **n'est affilié ni à OpenAI, ni à Anthropic, ni à aucun autre fournisseur, et n'est approuvé par aucun d'eux**.
505
+
506
+ Certains fournisseurs — notamment Anthropic (Claude) — peuvent suspendre ou restreindre les comptes qui acheminent le trafic API par des proxys tiers. **Utilisation à vos propres risques (UAYOR).** Avant de connecter un fournisseur, consultez ses conditions d'utilisation pour vérifier que l'accès par proxy est autorisé. Les mainteneurs d'opencodex ne sont pas responsables des mesures prises sur les comptes par les fournisseurs en amont.
507
+
508
+ ## Licence
509
+
510
+ MIT