clauderipple 0.8.3 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.8.5 — 2026-10-07
4
+
5
+ ### Fixed
6
+
7
+ - **The ChatGPT provider no longer says Plus/Pro only.** Any ChatGPT plan that includes Codex
8
+ (Plus, Pro, Business, and Enterprise/Edu with Codex on) signs in the same way; the dashboard
9
+ now says so in every language.
10
+
11
+ ## 0.8.4 — 2026-10-06
12
+
13
+ ### Added
14
+
15
+ - **Four more languages.** The dashboard, the tray and the README now come in Simplified
16
+ Chinese, Japanese, Spanish and Brazilian Portuguese as well as English and Korean. The
17
+ dashboard follows your browser or OS language; pick another from the selector at the bottom
18
+ of the sidebar.
19
+
20
+ ### Changed
21
+
22
+ - **Releases publish themselves.** A version tag now publishes to npm from GitHub Actions, with
23
+ a signed provenance statement, so fixes reach `clauderipple update` without waiting on anyone.
24
+
3
25
  ## 0.8.3 — 2026-10-06
4
26
 
5
27
  ### Fixed
package/README.es.md ADDED
@@ -0,0 +1,623 @@
1
+ <p align="center">
2
+ <img src="docs/media/icon.png" width="128" alt="ClaudeRipple">
3
+ </p>
4
+
5
+ <h1 align="center">ClaudeRipple</h1>
6
+
7
+ <p align="center"><a href="README.md">English</a> · <a href="README.ko.md">한국어</a> · <a href="README.zh-CN.md">简体中文</a> · <a href="README.ja.md">日本語</a> · <b>Español</b> · <a href="README.pt-BR.md">Português (BR)</a></p>
8
+
9
+ <p align="center">
10
+ <b>El chat sigue siendo Claude. Solo Code pasa a GPT.</b><br>
11
+ El ajuste propio de Claude Desktop para usar otros modelos cambia <b>toda la app</b>, y con ella se van el chat,
12
+ Remote Control desde el teléfono y los conectores.<br>ClaudeRipple no desactiva nada: mantienes la sesión iniciada en tu
13
+ suscripción de Claude mientras GPT, DeepSeek, Kimi, Grok<br>o cualquiera de más de 400 modelos responden en la
14
+ <b>pestaña Code</b>. Y también Claude dentro de la <b>app de Codex</b> y de <b>Codex CLI</b>.
15
+ </p>
16
+
17
+ <p align="center">
18
+ <a href="https://www.npmjs.com/package/clauderipple"><img alt="npm" src="https://img.shields.io/npm/v/clauderipple?label=npm"></a>
19
+ <img alt="Alpha" src="https://img.shields.io/badge/status-alpha-orange">
20
+ <a href="LICENSE"><img alt="GPL-3.0" src="https://img.shields.io/badge/license-GPL--3.0-blue"></a>
21
+ <img alt="macOS" src="https://img.shields.io/badge/macOS-arm64%20%7C%20x64-black">
22
+ <img alt="Windows" src="https://img.shields.io/badge/Windows-arm64%20%7C%20x64-0078D4">
23
+ <img alt="Linux" src="https://img.shields.io/badge/Linux-x64%20(systemd)-FCC624">
24
+ <img alt="Node" src="https://img.shields.io/badge/node-24%2B-success">
25
+ <a href="README.md"><img alt="English" src="https://img.shields.io/badge/docs-English-blue"></a>
26
+ </p>
27
+
28
+ <p align="center">
29
+ <img src="docs/media/tour.png" width="880" alt="Recorrido por la configuración de ClaudeRipple: estado, asignación de modelos, proveedores, clientes, registro de solicitudes">
30
+ </p>
31
+
32
+ <table align="center">
33
+ <tr>
34
+ <td align="center" width="34%"><img src="docs/media/picker-zoom.png" width="300" alt="Nombres reales en el selector de Claude Desktop"><br><sub>Modelos GPT con su nombre real en el selector de Claude Desktop</sub></td>
35
+ <td align="center" width="66%"><img src="docs/media/luna-answer.png" alt="GPT-5.6 Luna respondiendo en la pestaña Code de Claude Desktop"><br><sub>GPT-5.6 Luna respondiendo en la pestaña Code, con el esfuerzo que elegiste</sub></td>
36
+ </tr>
37
+ <tr>
38
+ <td colspan="2" align="center"><img src="docs/media/subagents.png" alt="Subagentes con GPT-5.6 Terra y Sol, identificados en el panel de tareas en segundo plano"><br><sub>Subagentes con GPT-5.6 Terra y Sol, identificados en el panel de tareas en segundo plano</sub></td>
39
+ </tr>
40
+ </table>
41
+
42
+ ---
43
+
44
+ ## 1P, no 3P: la diferencia por la que existe este proyecto
45
+
46
+ Claude Desktop ya incluye una forma oficial de usar otros modelos: el ajuste de **gateway
47
+ de inferencia**, lo que la app llama modo de terceros o **3P**. Activarlo no es una
48
+ elección por sesión. Al arrancar, cambia **toda la app** a otro modo de despliegue, y
49
+ ese modo es otro producto:
50
+
51
+ - La ventana deja de cargar `claude.ai` y carga en su lugar un paquete local. Las
52
+ llamadas a `/api/` y `/v1/` de claude.ai responden `custom_3p_not_available` 503.
53
+ - El "chat" ya no es el chat de claude.ai. Es una sesión de agente local de Claude Code.
54
+ - Remote Control y las sesiones laterales se desactivan por completo
55
+ (`shouldEnableSessionsBridge()` devuelve false).
56
+ - Los conectores de claude.ai de la propia Anthropic, Claude Design, la continuidad en
57
+ dispositivos móviles y la búsqueda en el chat desaparecen con él.
58
+
59
+ No hay término medio. "El chat en Claude y Code en el gateway" es imposible para
60
+ cualquiera, porque el modo 1P no enruta absolutamente nada a través del gateway. (Todo
61
+ esto se ha extraído del propio paquete de la app; consulta [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) §2).
62
+
63
+ **ClaudeRipple nunca toca ese ajuste.** La app mantiene la sesión iniciada en tu
64
+ suscripción de Claude en modo 1P, y otro modelo responde en la pestaña Code y en sus
65
+ subagentes, con su nombre real en el selector de modelos y con el esfuerzo de
66
+ razonamiento que elegiste. No cambias tu cuenta de Claude por una de GPT. Conservas
67
+ las dos, en una sola app.
68
+
69
+ Quedarse en 1P tiene tres consecuencias, y ninguna herramienta basada en el gateway puede ofrecer ninguna de ellas:
70
+
71
+ - **Programa desde el teléfono, con GPT.** Remote Control está desactivado en 3P. Aquí
72
+ está activado, así que puedes elegir un modelo, enviar una tarea desde el teléfono y
73
+ ver cómo llegan los commits.
74
+ - **Conectores activos mientras trabaja otro modelo.** 3P sustituye las llamadas a
75
+ claude.ai por stubs, y con ellas caen los conectores de la propia Anthropic. Lee un
76
+ documento de Google Drive y deja que GPT escriba el código.
77
+ - **Sesiones en la nube y laterales.** Desaparecen en 3P. Aquí siguen intactas.
78
+
79
+ Si pagas Claude, 3P no es una opción: tira a la basura la mitad de la suscripción
80
+ que estás pagando. Esta es la única forma de conservarla y, aun así, elegir el
81
+ modelo.
82
+
83
+ ## Preguntas frecuentes
84
+
85
+ ### ¿Puedo usar GPT en la app Claude Desktop?
86
+
87
+ Sí, en la **pestaña Code** y sus subagentes. Instala ClaudeRipple, inicia sesión con una
88
+ suscripción ChatGPT Plus o Pro, y GPT (GPT-6 Sol, Luna, Astra, GPT-5.6 Terra y el resto)
89
+ aparece con su nombre real en el selector de modelos, con el esfuerzo de razonamiento
90
+ que elijas. La app en sí no se modifica ni se cambia a ningún otro modo. La pestaña
91
+ general de **chat** sigue siendo Claude: ninguna herramienta puede redirigirla sin pasar
92
+ toda la app al modo gateway (consulta [1P, no 3P](#1p-no-3p-la-diferencia-por-la-que-existe-este-proyecto)).
93
+
94
+ ### ¿Cómo uso GPT en Claude Code?
95
+
96
+ La misma instalación sirve para la CLI `claude` en la terminal. ClaudeRipple es un proxy local
97
+ que Claude Code usa mediante dos líneas en `~/.claude/settings.json`, así que tus
98
+ skills, hooks, servidores MCP, `CLAUDE.md` y subagentes siguen funcionando mientras
99
+ responde otro modelo.
100
+
101
+ ### ¿Tengo que activar el ajuste de "inferencia de terceros" (gateway) de Claude Desktop?
102
+
103
+ No, y no deberías. Ese ajuste pasa toda la app al modo 3P, que deja de cargar
104
+ claude.ai, sustituye el chat por una sesión de agente local y desactiva Remote Control.
105
+ ClaudeRipple nunca lo toca.
106
+
107
+ ### ¿Perderé el chat de claude.ai, Remote Control o mis conectores?
108
+
109
+ No. La app mantiene la sesión iniciada en tu suscripción de Claude, así que el chat,
110
+ Remote Control desde el teléfono, las sesiones en la nube y los conectores de la propia
111
+ Anthropic siguen funcionando. Ese es precisamente el sentido de quedarse en 1P.
112
+
113
+ ### ¿Puedo seguir usando el propio Claude?
114
+
115
+ Sí. La asignación de modelos funciona por nombre de modelo: deja un nombre asignado a
116
+ Claude y responderá Claude. La mayoría de la gente asigna uno o dos nombres a GPT y deja
117
+ el resto como está.
118
+
119
+ ### ¿Necesito una clave de API de OpenAI?
120
+
121
+ No. Sirve cualquier plan de ChatGPT que incluya Codex: Plus, Pro y Business, y Enterprise o
122
+ Edu si el administrador del espacio de trabajo ha activado Codex. Inicias sesión desde la
123
+ app y no interviene ninguna clave de API. Se aplican los límites de uso del plan; cuando se
124
+ agotan, se siguen usando los créditos de Codex que hayas comprado. Las claves de API son
125
+ para los demás proveedores (DeepSeek, Kimi, GLM, OpenRouter y cualquier otro con un
126
+ endpoint compatible con Anthropic u OpenAI).
127
+
128
+ ### ¿Qué modelos puedo usar?
129
+
130
+ GPT con una suscripción de ChatGPT, y DeepSeek, Kimi, GLM, Grok, Qwen y más de 400
131
+ modelos más a través de OpenRouter o de una clave de API directa. Los modelos de Claude
132
+ siguen funcionando como siempre.
133
+
134
+ ### ¿Funciona en Windows?
135
+
136
+ Sí, en Windows y macOS, arm64 y x64. La instalación, el panel, el reinicio y la
137
+ desinstalación se han medido en Windows 11 arm64; el runtime x64 se ha medido con
138
+ emulación. Linux también funciona donde haya una sesión de usuario de systemd: la
139
+ instalación, una solicitud de la pestaña Code a través del router, un reinicio en mitad
140
+ de una respuesta en streaming y la desinstalación se han medido en Ubuntu 24.04 x64 con
141
+ Claude Desktop 2.2553.13, igual que el modo selector: los modelos de `cli.extraModels`
142
+ aparecen en el selector de la pestaña Code junto a los de Claude.
143
+
144
+ ### ¿Se envía mi código a algún otro sitio?
145
+
146
+ No. El proxy se ejecuta en tu propio equipo. Las solicitudes van al proveedor que
147
+ configuraste y a ningún otro sitio, y las credenciales se quedan en tu directorio
148
+ personal. Consulta [Privacidad](#privacidad).
149
+
150
+ ### ¿Me suspenderán la cuenta de Claude? ¿Va en contra de los términos de Anthropic?
151
+
152
+ Lo que ClaudeRipple hace con Claude es poco y verificable: una solicitud que se queda en
153
+ Claude sale de tu equipo byte a byte tal como la envió Claude Code, y una solicitud
154
+ redirigida a GPT o a otro proveedor nunca llega a Anthropic. Funciona mediante los ajustes
155
+ de proxy y certificados que Claude Code documenta para redes corporativas (`HTTPS_PROXY`,
156
+ `NODE_EXTRA_CA_CERTS` — [Enterprise network configuration](https://code.claude.com/docs/en/corporate-proxy)),
157
+ no parcheando la app. Los casos de cuentas suspendidas que se han reportado se refieren a
158
+ la dirección contraria: el inicio de sesión de una suscripción de Claude usado desde
159
+ **otro** programa. ClaudeRipple tiene una función opcional de ese tipo: Claude dentro de
160
+ Codex usando el inicio de sesión de tu suscripción. Ese uso está sujeto a los términos de
161
+ Anthropic; con una clave de API de Anthropic, la cuestión no se plantea. Rotar varias
162
+ suscripciones de Claude también es decisión tuya conforme a esos términos. Solo Anthropic
163
+ puede decir cómo trata una cuenta, así que nada de lo que se dice aquí es una promesa.
164
+
165
+ ### ¿Y Gemini con una cuenta de Google?
166
+
167
+ Una clave de API de AI Studio es la vía que Google admite, y la segura. El inicio de
168
+ sesión con cuenta de Google (Antigravity) es distinto: los [términos de Antigravity](https://antigravity.google/terms)
169
+ de Google (sección 6) y las [preguntas frecuentes de Gemini CLI](https://geminicli.com/docs/resources/faq/)
170
+ califican de incumplimiento usar esas credenciales desde otro programa. En febrero de 2026,
171
+ Google suspendió cuentas usadas de esta forma (la suspensión también les cortó el acceso a
172
+ Gemini CLI y a Code Assist) y [afirmó](https://github.com/google-gemini/gemini-cli/discussions/20632)
173
+ que, ante una segunda infracción, la suspensión es permanente. ClaudeRipple ofrece este
174
+ inicio de sesión porque otros lo hacen y hubo quien lo pidió, muestra esta advertencia
175
+ antes de empezar y no hace nada para ocultar el tráfico. Si decides usarlo, hazlo con una
176
+ cuenta secundaria.
177
+
178
+ ### ¿Puedo usar varias cuentas de ChatGPT?
179
+
180
+ Sí. Cada `clauderipple login` (o **+ Añadir cuenta de ChatGPT** en el panel) añade una.
181
+ Cuando una cuenta alcanza su límite de uso, la misma solicitud pasa a la siguiente cuenta y
182
+ la agotada descansa hasta que se restablece su ventana; una conversación se mantiene en la
183
+ cuenta que respondió, para conservar su caché de prompts. Esto se aplica a la pestaña Code
184
+ de Claude Desktop, a Claude Code y a GPT en la app y la CLI de Codex.
185
+
186
+ ### ¿Puedo usar Claude dentro de Codex?
187
+
188
+ Sí. `clauderipple codex on` añade ClaudeRipple como proveedor, y los modelos de Claude
189
+ aparecen con su propio nombre en la lista de modelos de la app y la CLI de Codex.
190
+ Responden a través de tu inicio de sesión de Claude Code o de una clave de API de
191
+ Anthropic. Consulta [App de Codex y Codex CLI](#app-de-codex-y-codex-cli).
192
+
193
+ ### ¿Puede generar imágenes?
194
+
195
+ Sí, con una suscripción de ChatGPT y sin clave de API:
196
+ `clauderipple image "a red paper boat" -o boat.png --aspect square`. `--ref FILE` añade
197
+ una imagen de referencia y `--transparent`, un fondo transparente. Cada imagen tarda unos
198
+ 30 segundos, y la suscripción elige la resolución y la calidad. A los subagentes que
199
+ genera ClaudeRipple se les indica esa misma llamada, así que también pueden crear
200
+ imágenes. Consulta [Claude Code](#claude-code-terminal-remote-control-subagentes).
201
+
202
+ ### ¿GPT rinde peor dentro de Claude Code?
203
+
204
+ El prompt del sistema y las descripciones de herramientas de Claude Code están escritos
205
+ para Claude, así que otro modelo lee instrucciones pensadas para otro, y puede comportarse
206
+ de forma algo distinta que en su propio cliente. ClaudeRipple le dice a cada modelo su
207
+ propio nombre y esfuerzo, adapta los esquemas de herramientas que un proveedor rechazaría
208
+ y te permite añadir instrucciones por proveedor. Una configuración habitual es Claude
209
+ como modelo principal con GPT o DeepSeek como subagentes.
210
+
211
+ ### ¿En qué se diferencia de CC Switch, opencodex o claude-code-router?
212
+
213
+ Consulta la [tabla comparativa](#una-herramienta-en-lugar-de-cuatro). En resumen:
214
+ ClaudeRipple llega a la pestaña Code de Claude **Desktop** mientras la app mantiene la
215
+ sesión iniciada en Claude, y muestra otros modelos en su selector con su nombre real.
216
+ CC Switch también llega a la app de escritorio, pero activando su modo gateway (3P).
217
+
218
+ ### ¿Es gratis?
219
+
220
+ Sí. ClaudeRipple es de código abierto con licencia GPL-3.0. Solo pagas las suscripciones o
221
+ claves de API que ya usas.
222
+
223
+ ## Una herramienta en lugar de cuatro
224
+
225
+ Hay herramientas similares que permiten que la CLI de Claude Code o Codex CLI usen otros
226
+ modelos, pero o bien no pueden llegar a la **app de escritorio** de Claude, o solo llegan
227
+ a través de su modo gateway (3P), y en cuanto cambias de modelo pierdes la parte de la
228
+ suscripción de Claude (chat de claude.ai, Remote Control, sesiones en la nube).
229
+ ClaudeRipple cubre la app de escritorio, la terminal y Codex desde una sola app de la
230
+ barra de menús, usa ambas suscripciones a la vez y mantiene intacto el harness de
231
+ Claude Code: tus skills, hooks, servidores MCP, `CLAUDE.md`, subagentes y conectores de
232
+ claude.ai siguen funcionando mientras otro modelo hace el trabajo de pensar.
233
+
234
+ | | ClaudeRipple | CC Switch (revisado el 2026-09-24) | opencodex / openclaude (revisado el 2026-09-16) | claude-code-router | Modo gateway (3P) de Claude Desktop |
235
+ |---|---|---|---|---|---|
236
+ | Pestaña Code de Claude **Desktop** **sin** modo gateway (3P) | ✅ | ❌ ² | ❌ ¹ | ❌ | ❌ por definición |
237
+ | Conserva el chat de claude.ai, Remote Control, las sesiones en la nube y los conectores | ✅ | ❌ | ❌ | ❌ | ❌ |
238
+ | Suscripciones de Claude y GPT a la vez | ✅ | ❌ un proveedor cada vez | ❌ todo o nada | ❌ | ❌ |
239
+ | Nombres reales de los modelos en el selector de Desktop | ✅ | ❌ nombres de rol `claude-*` ² | ❌ | ❌ | parcial |
240
+ | Varias cuentas de ChatGPT, con cambio cuando una se agota (Desktop y Codex) | ✅ | ❌ cambio manual ³ | ✅ | ❌ | ❌ |
241
+ | CLI `claude` en la terminal | ✅ | ✅ | ✅ | ✅ | ✅ |
242
+ | **App** de Codex y Codex CLI → Claude | ✅ | ✅ | ✅ | ❌ | ❌ |
243
+ | Caché de prompts en proveedores con traducción de protocolo | **94–99 %** medido | sin medir | sin medir | variable | no aplica |
244
+ | Subagentes identificados por su modelo real en el panel de tareas | ✅ | ❌ | ❌ | ❌ | ❌ |
245
+ | Interfaz gráfica de configuración, sin necesidad de terminal | ✅ | ✅ | ❌ | ❌ | ❌ |
246
+ | App firmada y notarizada con su propio runtime | ✅ | ✅ | ❌ | ❌ | – |
247
+
248
+ ¹ El README de opencodex mostraba Claude Desktop en una demo, pero no publicaba pasos de
249
+ configuración para ello, ni en el repositorio ni en su sitio de documentación (revisado el
250
+ 2026-09-16). En ese momento, la única vía pública para llegar a la app de escritorio era el
251
+ ajuste oficial del gateway: la última columna.
252
+
253
+ ² CC Switch llega a Claude Desktop escribiendo el perfil de terceros de la app
254
+ (`Claude-3p/claude_desktop_config.json`, `"inferenceProvider": "gateway"`), que es la
255
+ última columna. A través de su gateway local, el selector solo muestra los nombres de rol
256
+ `claude-sonnet-*`, `claude-opus-*` y `claude-haiku-*` ([su manual](https://github.com/farion1231/cc-switch/blob/main/docs/user-manual/en/2-providers/2.6-claude-desktop.md)).
257
+ CC Switch gestiona más herramientas de las que cubre esta tabla (Gemini CLI, OpenCode y
258
+ otras) y sincroniza los servidores MCP y las skills entre ellas.
259
+
260
+ ³ Cada cuenta de ChatGPT está vinculada a su propia tarjeta de proveedor, y las tarjetas
261
+ oficiales de ChatGPT quedan fuera de la cola de failover (notas de la versión v3.20.0).
262
+
263
+ El propio ajuste de "inferencia de terceros" de la app de escritorio cambia toda la app a
264
+ otro modo: pierdes el chat de claude.ai, Remote Control y las sesiones en la nube. Las
265
+ herramientas que sustituyen `ANTHROPIC_BASE_URL` nunca llegan a la app de escritorio, y
266
+ las que sí llegan escriben ese mismo ajuste. ClaudeRipple, en cambio, es un
267
+ pequeño proxy HTTPS en el que solo confía el proceso de Claude Code: las solicitudes de
268
+ los modelos que asignas van a tu proveedor, y todo lo demás va a Anthropic byte a byte.
269
+
270
+ ## Qué obtienes
271
+
272
+ - **Cualquier modelo en Claude Desktop y Claude Code.** GPT-6 Sol / Luna / Astra y
273
+ GPT-5.6 Terra / Sol / Luna con tu suscripción ChatGPT Plus/Pro (los modelos nuevos
274
+ aparecen el mismo día en que OpenAI los ofrece), Google Gemini, o DeepSeek, Kimi, GLM,
275
+ MiniMax, Qwen, Grok, Mistral, Groq, Together, Fireworks, OpenRouter (más de 400
276
+ modelos) y Ollama / LM Studio en local. Con su nombre real en el selector, o asignados
277
+ a un nombre de Claude.
278
+ - **Claude en la app de Codex y en Codex CLI.** Un endpoint local compatible con OpenAI
279
+ que Codex trata como un proveedor; los modelos de Claude aparecen en la propia lista de
280
+ modelos de Codex. Usa tu inicio de sesión actual de Claude Code o una clave de API de
281
+ Anthropic.
282
+ - **Varias cuentas de Claude sin romper la caché de prompts.** Activa la rotación de
283
+ cuentas en un proveedor nativo de Claude, añade suscripciones desde el panel y cada
284
+ conversación se mantiene en la cuenta que respondió. Antes de que empiece la respuesta,
285
+ un rechazo por cuota o por autenticación pasa ese turno a la siguiente cuenta. Esta ruta
286
+ nativa de Claude Desktop/Code es independiente de la entrada traducida de Codex, que
287
+ elige un inicio de sesión disponible y no rota cuentas.
288
+ - **Varias cuentas de ChatGPT.** Cada `clauderipple login` (o **+ Añadir cuenta de ChatGPT**
289
+ en el panel) añade una. Cuando una cuenta alcanza su límite, la siguiente toma el relevo
290
+ en la misma solicitud y la agotada descansa hasta que se restablece su ventana; una
291
+ conversación se mantiene en la cuenta que respondió, para conservar su caché. Esto
292
+ cubre la pestaña Code de Claude Desktop y los subagentes **y GPT en la app y la CLI de
293
+ Codex**: Codex conserva su propio inicio de sesión y pasa a la siguiente cuenta sin
294
+ cerrar sesión.
295
+ - **El harness completo de Claude Code, intacto.** Skills, hooks, MCP, `CLAUDE.md`,
296
+ subagentes, modo plan, Remote Control en tu teléfono: no se desactiva nada.
297
+ - **Correcto por construcción.** Se conserva la caché de prompts (puntos de corte de caché de
298
+ Anthropic y prefijos estables de OpenAI), se gestionan los hilos del lado del servidor
299
+ de Claude Code, las llamadas a herramientas y las imágenes se transmiten en ambos
300
+ sentidos, el esfuerzo de razonamiento se limita a los niveles que admite cada modelo y
301
+ se eliminan los campos exclusivos de Anthropic para los proveedores compatibles.
302
+ - **Un registro de solicitudes de verdad.** Quién preguntó, qué modelo respondió, tokens
303
+ de entrada / en caché / de salida, latencia y estado, por solicitud, con un resumen de
304
+ la última hora.
305
+ - **Etiquetas de subagentes.** El panel de tareas en segundo plano muestra
306
+ `Terra·high · Review` en lugar de un genérico "Agent".
307
+ - **La ruta, donde escribes.** Un mod de Claude Code añade una línea encima del prompt:
308
+ adónde fue tu última solicitud, su esfuerzo, el acierto de caché y el tiempo. `Log` (o
309
+ `/ripple-log`) abre el registro de solicitudes en un panel lateral, con colores según el
310
+ proveedor y el resultado; `×` (o `/ripple-bar`) oculta la línea. El mismo mod mantiene a
311
+ un worker en su propio modelo cuando la llamada a Agent indica otro, y lee su marcador
312
+ `[[ripple: name@level]]` esté donde esté en el prompt. Un solo interruptor en la
313
+ pantalla Clientes, o `clauderipple mod on`.
314
+ - **Imágenes con tu suscripción de ChatGPT.** `clauderipple image "<prompt>"`, con
315
+ imágenes de referencia y fondos transparentes. A los subagentes se les explica cómo
316
+ hacerlo, así que un worker de GPT o DeepSeek puede crear una imagen y verla sin una
317
+ herramienta de imágenes.
318
+ - **Workers ligeros, si los quieres.** Un solo interruptor da a los subagentes generados
319
+ solo las herramientas que usa un worker, en lugar de todos los servidores MCP y plugins
320
+ de la sesión: la primera solicitud de un worker bajó de 33k a 9k tokens.
321
+ - **Hecho para quien no quiere usar la terminal.** Ajustes predefinidos de proveedores con
322
+ prueba de conexión y descubrimiento de modelos en un clic, asignación de modelos con
323
+ menús desplegables, guardado automático e interfaz en coreano e inglés. Una app de la
324
+ barra de menús que trae su propio runtime y se configura sola en el primer arranque.
325
+ Firmada y notarizada.
326
+
327
+ <p align="center">
328
+ <img src="docs/media/mapping.png" width="880" alt="Asignación de modelos: qué modelo responde por cada nombre de Claude, con esfuerzo de razonamiento por modelo">
329
+ </p>
330
+
331
+ ## Instalación
332
+
333
+ **macOS**
334
+
335
+ ```sh
336
+ curl -fsSL https://raw.githubusercontent.com/PBJ-2/clauderipple/main/scripts/install.sh | sh
337
+ ```
338
+
339
+ **Windows** (PowerShell)
340
+
341
+ ```powershell
342
+ irm https://raw.githubusercontent.com/PBJ-2/clauderipple/main/scripts/install.ps1 | iex
343
+ ```
344
+
345
+ **Linux** (una sesión de escritorio con systemd)
346
+
347
+ ```sh
348
+ curl -fsSL https://raw.githubusercontent.com/PBJ-2/clauderipple/main/scripts/install.sh | sh
349
+ ```
350
+
351
+ El router se ejecuta como servicio de systemd por usuario: `systemctl --user status clauderipple`,
352
+ y `journalctl --user -u clauderipple` para ver lo que ha registrado. El modo selector confía en
353
+ la CA local a través de la base de datos NSS que lee Chromium (`~/.pki/nssdb`, solo para tu
354
+ usuario, sin sudo), para lo que hace falta `certutil`: ejecuta `sudo apt install libnss3-tools`
355
+ (Fedora: `sudo dnf install nss-tools`) antes de `clauderipple picker on`.
356
+
357
+ Esos son todos los requisitos previos. El script usa el Node 24+ que ya tengas y, si no
358
+ tienes ninguno, descarga la compilación oficial en `~/.clauderipple/runtime` y la verifica
359
+ con la suma de comprobación que publica nodejs.org. Después configura ClaudeRipple: un
360
+ certificado local, dos líneas en `~/.claude/settings.json` y un router en segundo plano
361
+ que se inicia con tu equipo. Sin permisos de administrador y sin contraseña.
362
+
363
+ Si ya tienes Node instalado, puedes saltarte el script:
364
+
365
+ ```sh
366
+ npm install -g clauderipple
367
+ clauderipple install
368
+ ```
369
+
370
+ Luego abre el panel y añade un proveedor:
371
+
372
+ ```sh
373
+ clauderipple ui
374
+ ```
375
+
376
+ **Proveedores** → añade ChatGPT o pega una clave de API → **Asignación de modelos**.
377
+
378
+ **La app de la barra de menús / bandeja** es opcional. Muestra el estado del router y abre
379
+ el panel con un clic:
380
+
381
+ ```sh
382
+ clauderipple tray
383
+ ```
384
+
385
+ Funciona con Electron, que ocupa unos 270 MB y por eso no se instala por defecto.
386
+ `clauderipple tray --install` lo descarga una sola vez; todo lo demás funciona sin él.
387
+
388
+ **Actualización.** La bandeja ofrece la nueva versión cuando la hay (**Buscar actualizaciones…**), o bien:
389
+
390
+ ```sh
391
+ clauderipple update
392
+ ```
393
+
394
+ Actualiza de la misma forma en que instalaste (otra vez con el script de instalación, o con
395
+ npm) y reinicia el router con la nueva versión. El Electron de la bandeja se conserva entre
396
+ actualizaciones.
397
+
398
+ Opcional, para ver los nombres reales en el selector de Desktop:
399
+ **Clientes → Claude Desktop → Selector de modelos → Activar el selector**, y después cierra
400
+ Claude Desktop por completo y vuelve a abrirlo. Para confiar en el certificado local solo
401
+ para tu usuario, macOS te pide tu contraseña de inicio de sesión y
402
+ Windows muestra un cuadro de confirmación con la huella digital; Linux lo añade a tu base de
403
+ datos NSS sin preguntar. ClaudeRipple nunca ve ninguna contraseña, y ninguna plataforma
404
+ necesita permisos de administrador.
405
+
406
+ > **Cerrar la ventana de Claude Desktop no basta.** La app sigue en ejecución y, al volver
407
+ > a abrirla, se reutiliza sin leer el nuevo ajuste. Sal de ella por completo (macOS: ⌘Q;
408
+ > Windows: el icono de la bandeja o el Administrador de tareas; Linux: Ctrl+Q o el icono de
409
+ > la bandeja, hasta que `pgrep -f claude-desktop` no imprima nada) o el selector no cambiará,
410
+ > sin ningún aviso.
411
+
412
+ <details>
413
+ <summary>Desde el código fuente (Node 24)</summary>
414
+
415
+ ```bash
416
+ git clone https://github.com/PBJ-2/clauderipple && cd clauderipple && npm install
417
+ node packages/cli/src/index.ts install # certs, settings.json env, supervisor (launchd / Task Scheduler), end-to-end probe
418
+ node packages/cli/src/index.ts ui # open the local GUI in your browser
419
+ ```
420
+
421
+ `uninstall` lo revierte todo y restaura `~/.claude/settings.json` desde una copia de seguridad.
422
+ Otros comandos: `status`, `start`, `stop`, `restart`, `logs -f`, `login`, `logout`,
423
+ `claude-login`, `claude-logout`, `picker on|off`, `agent-title on|off`, `mod on|off`,
424
+ `codex on|off`, `update`, `image "<prompt>"`.
425
+ </details>
426
+
427
+ ## Clientes
428
+
429
+ ### Claude Desktop
430
+
431
+ Funciona nada más instalarlo. Asigna modelos en **Asignación de modelos** (se guarda
432
+ automáticamente) o activa el **modo selector** para ver los modelos de los proveedores por
433
+ su nombre en el propio selector de la app. El esfuerzo elegido en la app se transmite; los
434
+ niveles no admitidos se ajustan al más cercano.
435
+
436
+ ### Claude Code (terminal, Remote Control, subagentes)
437
+
438
+ El mismo router, la misma asignación. `/model gpt-5.6-terra` lista los modelos que añadiste.
439
+ Los subagentes siguen el enrutamiento; un marcador `[[gpt: sol@xhigh]]` en el prompt de un
440
+ subagente sustituye el modelo para esa llamada, y el panel de tareas muestra el nombre real
441
+ del modelo.
442
+
443
+ **No tienes que construir un harness de agentes para esto.** Asigna un modelo redirigido al
444
+ slot de subagentes y todos los subagentes se ejecutarán en él, sin archivo de agente ni
445
+ nada más:
446
+
447
+ ```jsonc
448
+ // Settings → CLI models, or "cli": { "models": { … } } in the config
449
+ { "subagent": "gpt-5.6-terra" } // → CLAUDE_CODE_SUBAGENT_MODEL
450
+ ```
451
+
452
+ **Cada modelo que marques es también un subagente con nombre.** El router escribe
453
+ `~/.claude/agents/<name>.md` para cada modelo que ofrece exactamente un proveedor
454
+ (`gpt-5.6-terra` → `gpt-5-6-terra`, `deepseek-v4.1-flash` → `deepseek-v4-1-flash`),
455
+ así que para "que lo haga DeepSeek" basta con marcar el modelo: la herramienta Agent
456
+ lo lista, `subagent_type: "deepseek-v4-1-flash"` lo ejecuta y el panel de tareas
457
+ muestra su nombre. Desmarca el modelo y su archivo desaparece. El router solo toca
458
+ los archivos que escribió él (registrados en `generated-agents.json`); un archivo de
459
+ agente que hayas escrito tú con el mismo nombre tiene prioridad y no se toca, así que
460
+ unas instrucciones personalizadas siguen siendo simplemente el archivo de agente de
461
+ Claude Code, con un `model:` que el router conozca:
462
+
463
+ ```markdown
464
+ ---
465
+ name: reviewer
466
+ description: Independent review on GPT-5.6 Sol.
467
+ model: gpt-5.6-sol@medium
468
+ ---
469
+ You are the reviewer for this session. Verify the change yourself and report
470
+ the conclusion only.
471
+ ```
472
+
473
+ El esfuerzo por llamada va en la **primera línea** del prompt del subagente:
474
+ `[[ripple: gpt-5-6-terra@high]]`; ahí sirve cualquier nombre de agente o ID de modelo. Un
475
+ marcador en cualquier otro lugar es texto normal y se ignora (un resumen de compactación
476
+ que cite uno no debe redirigir la sesión). Un modelo que el router no sabe ubicar se
477
+ rechaza indicando su nombre (`400 ClaudeRipple: no provider declares "…"`) en lugar de
478
+ enviarse para que falle en algún sitio donde el error se entienda peor; los modelos
479
+ nativos de Claude siempre pasan. Configura `"cli": { "agentFiles": false }` para
480
+ desactivar la generación.
481
+
482
+ Por defecto, un worker generado hereda todas las herramientas de la sesión, así que cada
483
+ servidor MCP y cada plugin acompañan cada solicitud del worker. `"cli": {
484
+ "limitWorkerTools": true }` (o **Herramientas de los workers** en el panel) le da solo
485
+ las herramientas de lectura, edición, ejecución, búsqueda y skills, lo que redujo la
486
+ primera solicitud de un worker de unos 33k a 9k tokens. Un worker así no tiene
487
+ herramientas de navegador ni de simulador. Un worker que las necesite debe ir en un
488
+ archivo de agente propio, que nunca se toca.
489
+
490
+ Con un proveedor de ChatGPT configurado, las imágenes salen de la misma suscripción:
491
+
492
+ ```bash
493
+ clauderipple image "a red paper boat, flat illustration" -o boat.png --aspect square
494
+ ```
495
+
496
+ `--transparent`, `--format png|jpeg|webp` y `--ref FILE` (una imagen de referencia; se
497
+ puede repetir) son opcionales. Cada imagen tarda unos 30 segundos. El backend de la
498
+ suscripción elige por sí mismo la resolución y la calidad, así que la forma se pide con
499
+ palabras (`--aspect`). El comando es un cliente de `POST /api/image` en el puerto de
500
+ administración, que responde con los bytes de la imagen. A los workers generados se les
501
+ indica la forma `curl` de esa llamada, así que un worker que solo tenga Bash puede crear
502
+ una imagen y volver a leerla.
503
+
504
+ Claude Code ejecuta `WebSearch` como una solicitud aparte a un modelo pequeño. Para que
505
+ una configuración redirigida a ChatGPT no gaste cuota de Anthropic en esa solicitud,
506
+ elige el mismo proveedor de ChatGPT como backend de búsqueda en `config.json`:
507
+
508
+ ```jsonc
509
+ { "webSearch": { "provider": "chatgpt", "model": "gpt-5.6-terra" } }
510
+ ```
511
+
512
+ Es opcional. Sin el ajuste `webSearch`, la ruta de búsqueda actual de Claude Code no
513
+ cambia.
514
+
515
+ ### App de Codex y Codex CLI
516
+
517
+ ```bash
518
+ clauderipple codex on # adds a "clauderipple" provider to ~/.codex/config.toml (backup first)
519
+ codex --profile clauderipple -m claude-sonnet-5
520
+ ```
521
+
522
+ `codex on` también apunta el proveedor OpenAI integrado de Codex a ClaudeRipple (`openai_base_url`).
523
+ Codex conserva su inicio de sesión de ChatGPT; sus solicitudes GPT siguen llegando a ChatGPT sin
524
+ cambios, salvo que la cuenta se elige entre las añadidas a ClaudeRipple, así que, con varias
525
+ añadidas, Codex también pasa de una cuenta agotada a la siguiente. Si no hay ninguna añadida, o
526
+ todas están en su límite, se usa el inicio de sesión propio de Codex. Un `openai_base_url` que
527
+ hayas configurado tú no se toca. `clauderipple codex off` lo deshace.
528
+
529
+ Los modelos de Claude aparecen con su nombre en la lista de modelos de Codex (ClaudeRipple
530
+ escribe un catálogo de modelos junto al de Codex). Se accede a Claude mediante tu inicio de
531
+ sesión de Claude Code (detectado en la sesión de Desktop en ejecución, en el inicio de sesión
532
+ de la terminal o en un inicio de sesión propio de ClaudeRipple:
533
+ **Proveedores → Claude (Anthropic) → + Añadir cuenta de Claude** abre el navegador, sin
534
+ necesidad de terminal; equivale a
535
+ `clauderipple claude-login`) o mediante una clave de API de Anthropic. Reutilizar el inicio
536
+ de sesión de una suscripción está sujeto a los términos de Anthropic. Cualquier proveedor
537
+ compatible con Anthropic que hayas configurado está disponible de la misma forma.
538
+
539
+ <p align="center">
540
+ <img src="docs/media/add-provider.png" width="880" alt="Añadir proveedor: suscripción de ChatGPT, ajustes predefinidos, proveedores compatibles con OpenAI">
541
+ </p>
542
+
543
+ ## Proveedores
544
+
545
+ | Proveedor | Tipo | Autenticación | Lista de modelos | Notas |
546
+ |---|---|---|---|---|
547
+ | Suscripción de ChatGPT | Backend de Codex | varios inicios de sesión, con cambio cuando uno se agota (también reutiliza el de Codex) | leída de tu suscripción (GPT-6 Sol, Luna, Astra, GPT-5.6 …) | esfuerzo low…max (Luna: ultra), caché de prompts 94–99 % |
548
+ | Google Gemini | API de Gemini | clave de API de AI Studio o inicio de sesión con cuenta de Google (Antigravity, consulta las preguntas frecuentes) | descubierta | traducido (Messages ⇄ generateContent), las firmas de pensamiento se conservan entre turnos |
549
+ | OpenRouter | Compatible con Anthropic | clave de API | más de 400, descubierta | compatibilidad de esfuerzo por modelo leída de la API |
550
+ | DeepSeek, Kimi, Z.ai GLM, MiniMax, Qwen (intl / cn) | Compatible con Anthropic | clave de API | predefinida | verificado con la documentación del proveedor |
551
+ | xAI Grok, Mistral, Groq, Together, Fireworks | Compatible con OpenAI | clave de API | descubierta | traducido (Chat Completions / Responses) |
552
+ | Ollama, LM Studio | Compatible con OpenAI, local | ninguna | descubierta | |
553
+ | Anthropic | nativo | inicio(s) de sesión de Claude o clave de API | modelos de Claude | rotación opcional de cuentas con afinidad por conversación para Claude Desktop/Code; Codex elige un inicio de sesión |
554
+ | Cualquier otro | personalizado | a tu elección | descubierta | cualquier endpoint compatible con Anthropic u OpenAI |
555
+
556
+ Se eliminan de las solicitudes a proveedores compatibles los campos exclusivos de Anthropic
557
+ (hilos del lado del servidor, herramientas diferidas, gestión del contexto, vinculaciones de
558
+ pensamiento) y el esfuerzo se limita a los niveles que admite cada modelo, para que los
559
+ proveedores no rechacen con un error 400 el formato de las solicitudes de Claude Code.
560
+
561
+ ## Cómo funciona
562
+
563
+ ```
564
+ Claude Desktop / claude CLI ──HTTPS_PROXY──▶ ClaudeRipple ──▶ api.anthropic.com (unchanged)
565
+ │
566
+ mapped model ──────────┼──▶ chatgpt.com/backend-api (Responses ⇄ Messages)
567
+ ├──▶ Anthropic-compatible vendors (+ compat layer)
568
+ ├──▶ OpenAI-compatible vendors (Messages ⇄ Chat/Responses)
569
+ └──▶ Google Gemini (Messages ⇄ generateContent)
570
+ Codex app / CLI ──/v1/responses──▶ ClaudeRipple ingress ──▶ Claude (your login or API key) / vendors
571
+ ```
572
+
573
+ - La CLI de Claude Code lee `HTTPS_PROXY` y `NODE_EXTRA_CA_CERTS` de
574
+ `~/.claude/settings.json` (la vía de proxy corporativo que documenta Anthropic). Solo ese
575
+ proceso confía en la CA local de ClaudeRipple; el llavero del sistema operativo no se toca
576
+ salvo que actives el modo selector.
577
+ - El modo selector enruta a través del proxy el propio tráfico de claude.ai de la app y
578
+ añade tus modelos a la lista del selector que la app obtiene al arrancar. Se vuelve a
579
+ desactivar con un clic.
580
+ - Al reiniciarse, el router deja terminar las llamadas en curso; ante fallos repetidos del
581
+ upstream se cierra solo para que launchd lo reinicie; rota los registros y nunca descarta una
582
+ solicitud en silencio.
583
+
584
+ Detalles con fuentes: [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md).
585
+
586
+ ## Privacidad
587
+
588
+ Todo se ejecuta en 127.0.0.1. Las claves de API se guardan en `~/.clauderipple/config.json`
589
+ y las autorizaciones OAuth de Claude añadidas, en `~/.clauderipple/claude-accounts.json`
590
+ (ambos con permisos 0600). Las API de administración y los registros no exponen ni tokens ni
591
+ ID de cuentas upstream. Los únicos destinos de red son los proveedores que configures. No hay
592
+ telemetría.
593
+
594
+ ## Estado: alfa
595
+
596
+ El autor lo usa a diario, pero es un proyecto joven. Cuenta con algunas asperezas:
597
+
598
+ - **La compatibilidad con Windows es nueva (2026-09-14).** La instalación, la configuración,
599
+ el router, el inicio de sesión, el selector y una llamada real a GPT están verificados en
600
+ hardware x64; la recuperación tras fallos, en arm64. La ventana todavía tiene la barra de
601
+ título estándar de Windows. Las compilaciones para Windows no están firmadas; consulta la
602
+ nota en Instalación.
603
+ - **La compatibilidad con Linux es nueva (2026-09-24)**, aportada con mediciones en Ubuntu
604
+ 24.04 x64 (instalación, una solicitud de la pestaña Code, reinicio en mitad del streaming,
605
+ modo selector, desinstalación). Requiere una sesión de usuario de systemd; otras
606
+ distribuciones y arm64 no se han probado.
607
+ - ChatGPT, OpenRouter y Claude en Codex están verificados con cuentas reales; los demás
608
+ ajustes predefinidos siguen la documentación oficial de los proveedores.
609
+ - Un modelo añadido al selector se puede usar a partir de la siguiente sesión.
610
+ - Claude Code y Codex cambian a menudo sus protocolos de comunicación; una actualización del
611
+ cliente puede romper una traducción hasta que ClaudeRipple se ponga al día. Se agradecen
612
+ los informes de errores y los registros.
613
+
614
+ ## Sin afiliación
615
+
616
+ ClaudeRipple es un proyecto independiente de código abierto. No está afiliado a Anthropic ni
617
+ a OpenAI, ni cuenta con su respaldo ni con su patrocinio. Claude y Claude Code son marcas
618
+ comerciales de Anthropic, PBC. ChatGPT y Codex son marcas comerciales de OpenAI.
619
+
620
+ ## Licencia
621
+
622
+ Copyright (c) 2026 pbj. GPL-3.0: consulta [LICENSE](LICENSE). Úsalo libremente; si distribuyes
623
+ una versión modificada, incluye su código fuente con la misma licencia.