CLIProxyAPI: Proxy Unificado Gemini, Claude & Codex
CLIProxyAPI: Un Proxy Único, Libre y Unificado para Gemini, Claude, Codex y Más
OpenAI, Gemini de Google, Claude de Anthropic y Qwen de Baidu vienen con sus propias APIs, SDKs y modelos de autenticación. Para los desarrolladores que crean una herramienta CLI o web de un solo clic, gestionar prefijos de clave, flujos OAuth y dialectos JSON puede sentirse más como un proyecto full‑stack que un simple ejercicio de "llamar a una API".
Presentamos CLIProxyAPI – un servidor ligero en Go que envuelve todas esas APIs en un solo punto final compatible con OpenAI. Se ejecuta localmente, expone una interfaz estándar compatible con OpenAI y, opcionalmente, reenvía llamadas al proveedor elegido. ¿El resultado? Un solo comando curl, un único SDK, un solo flujo de autenticación y no hay claves codificadas de forma permanente.
¿Por qué CLIProxyAPI? Los puntos de dolor que resuelve
| Punto de dolor | Solución CLIProxyAPI |
|---|---|
| Múltiples claves – Gemini, Claude, Codex cada uno requiere una clave API o token OAuth separado. | Almacene todos los tokens en un almacén local seguro (JSON o basado en Git) y cambie de proveedor con un solo encabezado. |
| Esquemas de solicitud/respuesta inconsistentes | El proxy normaliza los payloads al esquema OpenAI v1 y los traduce de nuevo a la versión del proveedor. |
| Lógica de proveedor codificada de forma rígida en cada CLI | Centraliza la lógica del proveedor en el proxy; las herramientas CLI permanecen agnósticas al proveedor. |
| Balanceo de carga entre varias cuentas | Rotación round‑robin entre cuentas por cada proveedor; puede configurar peso o cadenas de respaldo. |
| Autenticación OAuth | Soporta OAuth para Anthropic o Codex – no hay necesidad de que los usuarios gestionen tokens manualmente. |
| Casos de uso avanzados | Streaming, llamadas a funciones, entrada multimodal (texto+imagen) y respaldo de modelo todo integrado. |
Inicio rápido
1. Instalación
Puede ejecutar CLIProxyAPI como binario precompilado o mediante Docker.
De Homebrew (macOS/Linux)
brew install router-for-me/cli/cli-proxy-api
cli-proxy-api --help
De Docker
docker pull ghcr.io/router-for-me/cliproxyapi:latest
docker run \
--rm -it \
-p 8080:8080 \
-e CONFIG_PATH=/etc/cliproxyapi/config.yaml \
-v $(pwd)/config.yaml:/etc/cliproxyapi/config.yaml \
ghcr.io/router-for-me/cliproxyapi:latest
De la fuente
go install github.com/router-for-me/CLIProxyAPI/cmd/server@latest
# o
go run main.go
Tip – El repositorio incluye un Dockerfile y un ejemplo de Docker‑compose que configura el proxy y un cliente front‑end.
2. Configurando el Proxy
Cree config.yaml (en la carpeta de ejemplo del repositorio). Ejemplo mínimo:
# config.yaml
# Lista de proveedores que desea exponer
providers:
- name: gemini # Google Gemini
type: gemini
key: <YOUR_GEMINI_KEY>
- name: claude # Anthropic Claude
type: claude
key: <YOUR_CLAUDE_KEY>
- name: codex # OpenAI Codex
type: codex
key: <YOUR_OPENAI_KEY>
oauth: true
# Opcional: cadena de respaldo de enrutamiento
fallback:
- gemini
- claude
- codex
# Opcional: HTTPS (auto firmada o certs a través de cert‑manager o Let's Encrypt)
# https:
# cert: /path/to/cert.pem
# key: /path/to/key.pem
Ejecute el proxy y expondrá estos endpoints:
GET /v1/models
POST /v1/chat/completions
GET /v1/models/<model>/functions
Todas las peticiones van a /v1/* como un cliente OpenAI.
3. Usando el Proxy
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-d '{
"model": "gemini-2.5-pro",
"messages": [{"role":"user", "content":"Hello"}]
}'
El campo
modelpuede ser cualquiera de los nombres de proveedor (gemini-2.5-pro,claude-3-opus-20240229,codex-gpt-35-turbo), o un alias definido por el proxy comogemini-pro. El servidor se encarga de la traducción.
4. Integración con SDK
Un SDK ligero en Go se incluye bajo la carpeta sdk/. Usarlo es tan sencillo como:
import "github.com/router-for-me/CLIProxyAPI/sdk"
client, err := sdk.NewClient("http://localhost:8080", &sdk.Config{BearerToken: "<TOKEN>"})
if err != nil { log.Fatal(err) }
resp, _ := client.ChatCompletion(context.Background(), &sdk.ChatRequest{
Model: "gemini-2.5-pro",
Messages: []sdk.Message{{Role: "user", Content: "Hi!"}},
})
fmt.Println(resp.Choices[0].Message.Content)
El SDK gestiona HTTP, streaming y llamadas a funciones bajo el capó. Consulte docs/sdk-usage.md para detalles completos.
Funcionalidades Avanzadas
Balanceo de Carga Multi‑Cuenta
Si posee varias cuentas de Gemini o Claude, agréguelas todas en la configuración con nombres únicos. Active la bandera round_robin en el proveedor para habilitar la rotación:
providers:
- name: gemini-acc1
type: gemini
key: <KEY1>
round_robin: true
- name: gemini-acc2
type: gemini
key: <KEY2>
round_robin: true
Las peticiones a gemini elegirá alternadamente entre gemini-acc1 y gemini-acc2.
Respaldo Automático de Modelos
Si un proveedor no soporta un modelo particular, establezca una cadena de respaldo en la configuración. Por ejemplo, si Claude‑Opus no está disponible, vuelva a claude-sonnet:
fallback:
- 'claude-sonnet-2'
- 'claude-3-haiku-20240307'
El proxy intercepta un 404 de su destino y vuelve a intentarlo con el siguiente modelo hasta el éxito o agotar las opciones.
Llamadas a Funciones y Streaming
Todas las llamadas a funciones al estilo OpenAI funcionan de inmediato. Solo pídalas a través del proxy; el servidor añaden los campos tools y tool_choice necesarios en la solicitud traducida.
El streaming se maneja a través del endpoint /v1/chat/completions con stream=true. La respuesta se envía fragmentada en el formato de flujo de eventos de OpenAI y se reenvía al cliente.
Comunidad y Ecosistema
CLIProxyAPI es el centro de un ecosistema creciente de herramientas: - vibemacro – aplicación en la barra de menús de macOS que convierte su suscripción en un proxy listo para CLI. - ProxyPal – GUI para gestionar proxies. - ProxyPilot – TUI nativo de Windows. - Claude Proxy VSCode – extensión para cambiar modelos con un backend de proxy.
Consulte la sección
projectsdel repositorio para una lista completa y contribuya añadiendo el suyo.
El repositorio fomenta las contribuciones. Se aceptan issues para errores o solicitudes de características, y la comunidad mantiene activamente la documentación y ejemplos.
Preguntas Frecuentes
Q: ¿Necesito pagar por cada proveedor objetivo?
A: El proxy en sí es gratuito y bajo licencia MIT. Solo paga por el uso del proveedor subyacente. En los planes gratuitos, Gemini 2.5 Pro, GPT‑5 y Claude‑sonnet están disponibles sin costo.
Q: ¿Puedo exponer el proxy a través de un reverse‑proxy como Nginx?
A: Absolutamente. Ejecute CLIProxyAPI detrás de HTTPS, use un reverse‑proxy compatible CORS e incluso añada autenticación básica si lo desea.
Q: ¿Qué otros proveedores están soportados?
A: Actualmente Gemini, Claude, Codex (OpenAI), Qwen, iFlow y cualquier API compatible con OpenRouter a través de un proveedor personalizado.
Empezar
Visite el repositorio oficial en https://github.com/router-for-me/CLIProxyAPI para código, ejemplos y la comunidad.
# Clonar y ejecutar
git clone https://github.com/router-for-me/CLIProxyAPI.git
cd CLIProxyAPI
make run
Ahora está un paso más cerca de una experiencia de CLI de IA unificada y sin esfuerzo. ¡Feliz codificación!
Lecturas Complementarias
- Gestionar múltiples proveedores de IA en Go – Publicación técnica completa sobre enrutamiento de proveedores.
- OAuth en herramientas CLI – Cómo CLIProxyAPI implementa almacenes de tokens seguros.
- Llamada a funciones con APIs OpenAI – Guía rápida.
Si tiene comentarios o una solicitud de característica, abra un issue o envíe un pull request – el proyecto prospera gracias a la participación de la comunidad.