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 model puede 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 como gemini-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 projects del 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.

Artículo original: Ver original

Compartir este artículo