<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Gemini CLI on KnightLi Blog</title>
        <link>https://knightli.com/es/tags/gemini-cli/</link>
        <description>Recent content in Gemini CLI on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Sun, 24 May 2026 10:03:33 +0800</lastBuildDate><atom:link href="https://knightli.com/es/tags/gemini-cli/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>CLIProxyAPI: envolver Codex, Claude Code y Gemini CLI en una API unificada</title>
        <link>https://knightli.com/es/2026/05/24/cliproxyapi-cli-to-api-gateway/</link>
        <pubDate>Sun, 24 May 2026 10:03:33 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/05/24/cliproxyapi-cli-to-api-gateway/</guid>
        <description>&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/router-for-me/CLIProxyAPI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;CLIProxyAPI&lt;/a&gt; es un proyecto con mucho sabor a ingeniería práctica de comunidad. No es otro gran modelo, ni un simple reenviador de API. Lo que hace es volver a empaquetar un conjunto de herramientas de IA que originalmente son interactivas, orientadas a CLI o basadas en login OAuth, para exponerlas como un servicio API unificado.&lt;/p&gt;
&lt;p&gt;Soporta Gemini CLI, OpenAI Codex, Claude Code, Amp CLI, AI Studio Build y servicios ascendentes compatibles con OpenAI. Dicho de otra forma, intenta resolver esta pregunta:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Tengo herramientas CLI, cuentas de suscripción y sesiones OAuth. ¿Puedo conectar esas capacidades a mi propio cliente, scripts, IDE o servicios internos como si llamara a una API normal?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;La respuesta de CLIProxyAPI es sí: añadir una capa proxy en medio y convertir capacidades CLI de distintas fuentes en interfaces compatibles con OpenAI, Gemini, Claude y Codex.&lt;/p&gt;
&lt;h2 id=&#34;el-problema-real-que-resuelve&#34;&gt;El problema real que resuelve
&lt;/h2&gt;&lt;p&gt;Muchas herramientas de programación con IA son potentes, pero su forma de uso por defecto no encaja bien con la automatización.&lt;/p&gt;
&lt;p&gt;Por ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gemini CLI puede usarse con login de cuenta, pero tu programa probablemente prefiera llamar a una API HTTP.&lt;/li&gt;
&lt;li&gt;Claude Code es muy útil para programación interactiva, pero al integrarlo con otros clientes aparecen diferencias de protocolo.&lt;/li&gt;
&lt;li&gt;Codex CLI soporta login OAuth y capacidades estilo Responses, pero no todas las herramientas superiores saben cómo hablar con él.&lt;/li&gt;
&lt;li&gt;Un equipo puede tener varias cuentas y necesitar rotación, balanceo de carga, exclusión de cuentas anómalas y visibilidad de cuotas.&lt;/li&gt;
&lt;li&gt;Quizá quieras que algunas herramientas solo vean un formato OpenAI, aunque el backend real sea Gemini, Claude o Codex.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CLIProxyAPI se posiciona como una capa de adaptación de protocolo entre esas herramientas y los clientes.&lt;/p&gt;
&lt;p&gt;Oculta el lado complejo detrás: OAuth, login CLI, varias cuentas, diferentes protocolos y distintos providers. En la parte frontal expone interfaces más familiares, como OpenAI Chat Completions, OpenAI Responses, Gemini, Claude Messages y endpoints relacionados con Codex.&lt;/p&gt;
&lt;h2 id=&#34;resumen-de-capacidades&#34;&gt;Resumen de capacidades
&lt;/h2&gt;&lt;p&gt;Según el README y la documentación oficiales, CLIProxyAPI se centra actualmente en:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ofrecer endpoints API compatibles con OpenAI, Gemini, Claude y Codex para modelos CLI.&lt;/li&gt;
&lt;li&gt;Conectar OpenAI Codex y Claude Code mediante login OAuth.&lt;/li&gt;
&lt;li&gt;Soportar respuestas en streaming y sin streaming, además de WebSocket en algunos escenarios.&lt;/li&gt;
&lt;li&gt;Soportar function calling, tool calling y entrada multimodal.&lt;/li&gt;
&lt;li&gt;Soportar rotación de varias cuentas y balanceo de carga para Gemini, OpenAI y Claude.&lt;/li&gt;
&lt;li&gt;Soportar claves API de Gemini AI Studio.&lt;/li&gt;
&lt;li&gt;Soportar pools de cuentas para AI Studio Build, Gemini CLI, Claude Code y OpenAI Codex.&lt;/li&gt;
&lt;li&gt;Conectar upstreams compatibles con OpenAI mediante configuración, por ejemplo OpenRouter.&lt;/li&gt;
&lt;li&gt;Ofrecer un SDK en Go para incrustar la capacidad proxy en tus propios servicios.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;El valor de este tipo de proyecto no está en “soportar unos cuantos nombres de modelo más”, sino en empaquetar login de cuentas, traducción de protocolos y enrutamiento de solicitudes.&lt;/p&gt;
&lt;h2 id=&#34;para-quién-encaja&#34;&gt;Para quién encaja
&lt;/h2&gt;&lt;p&gt;CLIProxyAPI encaja mejor con varios tipos de usuarios.&lt;/p&gt;
&lt;p&gt;El primer grupo son usuarios intensivos de programación con IA. Ya usas Codex, Claude Code y Gemini CLI, pero quieres conectarlos a Cursor, Cline, RooCode, Amp, scripts internos o flujos de trabajo propios.&lt;/p&gt;
&lt;p&gt;El segundo grupo son usuarios con pools de varias cuentas. Por ejemplo, tienes varias sesiones de Gemini, OpenAI o Claude y no quieres cambiar manualmente. Quieres rotación automática, uso equilibrado y diagnóstico rápido cuando una cuenta falla.&lt;/p&gt;
&lt;p&gt;El tercer grupo son quienes construyen gateways internos para equipos. El equipo no quiere que cada cliente adapte por separado Gemini, Claude y Codex, sino exponer una API unificada mediante una capa intermedia.&lt;/p&gt;
&lt;p&gt;El cuarto grupo son quienes disfrutan trabajando con protocolos. Te puede interesar cómo convertir entre Responses, Chat Completions, Claude Messages y Gemini v1beta, o quizá quieras alternar backends desde el mismo cliente.&lt;/p&gt;
&lt;p&gt;Si solo haces preguntas ocasionales a la IA, o solo usas las apps oficiales para chatear, el coste de desplegar y mantener CLIProxyAPI puede parecer excesivo.&lt;/p&gt;
&lt;h2 id=&#34;en-qué-se-diferencia-de-un-proxy-api-normal&#34;&gt;En qué se diferencia de un proxy API normal
&lt;/h2&gt;&lt;p&gt;Un proxy API típico suele ser:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cliente -&amp;gt; API proxy -&amp;gt; API del modelo upstream
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;La cadena de CLIProxyAPI se parece más a:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Cliente -&amp;gt; CLIProxyAPI -&amp;gt; CLI / sesión OAuth / pool de cuentas -&amp;gt; servicio de modelo
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;La diferencia es que no solo reenvía API keys. También maneja herramientas CLI, cuentas OAuth, superficies de protocolo y alias de modelos.&lt;/p&gt;
&lt;p&gt;Herramientas como Codex y Claude Code no siguen exactamente el patrón tradicional de “dame una API key y puedo llamarlo de forma estable”. CLIProxyAPI envuelve esas sesiones de login y la lógica de llamada para que clientes externos puedan acceder a ellas como si fueran APIs normales.&lt;/p&gt;
&lt;p&gt;Eso es lo que lo hace atractivo, y también lo que lo vuelve complejo.&lt;/p&gt;
&lt;h2 id=&#34;malentendidos-comunes-al-usarlo&#34;&gt;Malentendidos comunes al usarlo
&lt;/h2&gt;&lt;p&gt;Primero, no asumas que un &lt;code&gt;/v1/...&lt;/code&gt; unificado elimina todas las diferencias de protocolo.&lt;/p&gt;
&lt;p&gt;La documentación de CLIProxyAPI recuerda que, cuando necesitas la forma de solicitud y respuesta de un tipo concreto de backend, conviene usar rutas provider-specific. Por ejemplo, para estilo messages usa &lt;code&gt;/api/provider/{provider}/v1/messages&lt;/code&gt;; para rutas de modelo Gemini usa &lt;code&gt;/api/provider/{provider}/v1beta/models/...&lt;/code&gt;; para estilo chat-completions usa &lt;code&gt;/api/provider/{provider}/v1/chat/completions&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Una entrada unificada es cómoda, pero la semántica de cada protocolo no desaparece. Tool calling, respuestas en streaming, entrada multimodal y manejo de mensajes de sistema pueden variar según el backend.&lt;/p&gt;
&lt;p&gt;Segundo, el nombre del modelo no identifica de forma única el backend.&lt;/p&gt;
&lt;p&gt;Si varios backends exponen el mismo nombre de modelo visible para el cliente, la ruta por sí sola puede no fijar cuál ejecuta realmente la inferencia. Para fijarlo estrictamente, usa alias únicos, prefijos, o evita que varios backends expongan el mismo nombre de modelo.&lt;/p&gt;
&lt;p&gt;Tercero, la rotación de varias cuentas no significa cuota infinita.&lt;/p&gt;
&lt;p&gt;La rotación solo reparte mejor el uso entre el pool de cuentas. No evita los límites reales del servicio upstream. Cuentas anómalas, cuota agotada, controles de riesgo y sesiones OAuth expiradas necesitan monitoreo separado.&lt;/p&gt;
&lt;p&gt;Cuarto, no es una caja mágica sin mantenimiento.&lt;/p&gt;
&lt;p&gt;Una vez que lo incorporas a tu flujo diario, tendrás que preocuparte por configuración, logs, estado de cuentas upstream, actualizaciones, compatibilidad de clientes y límites de seguridad.&lt;/p&gt;
&lt;h2 id=&#34;gestión-y-monitoreo&#34;&gt;Gestión y monitoreo
&lt;/h2&gt;&lt;p&gt;El README oficial indica que desde v6.10.0, CLIProxyAPI y CPAMC ya no incluyen estadísticas de datos integradas. Si necesitas estadísticas de uso, puedes combinarlo con proyectos independientes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPA Usage Keeper: sincroniza datos de CLIProxyAPI, los guarda en SQLite y ofrece API de agregación y dashboard.&lt;/li&gt;
&lt;li&gt;CLIProxyAPI Usage Dashboard: panel local-first de uso y cuotas, con cuentas, modelos, ventanas de tiempo y cuota restante de Codex.&lt;/li&gt;
&lt;li&gt;CPA-Manager: centro de gestión más completo para monitoreo de solicitudes, estimación de costes, inspección de pools de cuentas, localización de cuentas anómalas y sugerencias de limpieza.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto muestra que el núcleo de CLIProxyAPI está más cerca de una capa de proxy y protocolo que de un backend comercial todo en uno. Si lo usa un equipo, conviene pensar desde el principio en logs, monitoreo y gestión de cuentas.&lt;/p&gt;
&lt;h2 id=&#34;una-forma-razonable-de-probarlo&#34;&gt;Una forma razonable de probarlo
&lt;/h2&gt;&lt;p&gt;Si quieres probarlo, un orden sensato sería:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Levantarlo con el Quick Start de la documentación oficial.&lt;/li&gt;
&lt;li&gt;Conectar solo un provider, por ejemplo Gemini CLI o Codex, y confirmar que las solicitudes básicas funcionan.&lt;/li&gt;
&lt;li&gt;Probar después capacidades de mayor riesgo, como streaming, tool calling y entrada multimodal.&lt;/li&gt;
&lt;li&gt;Confirmar qué endpoint usa realmente el cliente, sin mezclar rutas de protocolo.&lt;/li&gt;
&lt;li&gt;Añadir al final rotación de varias cuentas, paneles de gestión y estadísticas de uso.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;No conectes desde el principio Gemini, Codex, Claude, OpenRouter, varias cuentas y todos los clientes a la vez. Cuando algo falle, será difícil saber si el problema es autenticación, protocolo, nombre de modelo o cuenta upstream.&lt;/p&gt;
&lt;h2 id=&#34;también-hay-que-pensar-en-el-límite-de-seguridad&#34;&gt;También hay que pensar en el límite de seguridad
&lt;/h2&gt;&lt;p&gt;CLIProxyAPI puede tocar sesiones de login de cuentas, API keys, credenciales OAuth y contenido de solicitudes. Si solo corre en tu propia máquina, el riesgo es relativamente controlable. Si lo expones a internet o a una intranet de equipo, debes tratar en serio la autenticación, el control de acceso, el enmascaramiento de logs y el aislamiento de red.&lt;/p&gt;
&lt;p&gt;Los endpoints de administración, en especial, deberían limitarse a localhost o a una red interna confiable. No expongas interfaces de administración directamente solo por ahorrar tiempo.&lt;/p&gt;
&lt;h2 id=&#34;conclusión&#34;&gt;Conclusión
&lt;/h2&gt;&lt;p&gt;El valor de CLIProxyAPI está en reunir capacidades de IA dispersas entre múltiples CLI, cuentas y protocolos en una capa API programable.&lt;/p&gt;
&lt;p&gt;Encaja con usuarios intensivos de programación con IA, usuarios con varias cuentas y escenarios de gateway interno para equipos. Encaja menos con usuarios ligeros que solo quieren algo de “abrir y usar” sin mantenimiento.&lt;/p&gt;
&lt;p&gt;Si estás experimentando con Codex, Claude Code y Gemini CLI, y quieres conectarlos a tu propio cliente o flujo de automatización, CLIProxyAPI merece una mirada seria. Pero conviene tratarlo como infraestructura, no como una pequeña herramienta desechable.&lt;/p&gt;
&lt;p&gt;Referencias:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/router-for-me/CLIProxyAPI&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Repositorio GitHub de router-for-me/CLIProxyAPI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/router-for-me/CLIProxyAPI/blob/main/README_CN.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;README chino de CLIProxyAPI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://help.router-for.me/cn/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Documentación oficial de CLIProxyAPI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
