# Agentes de programación con IA y harness - GateLLM

> Conecte Claude Code, Codex CLI, OpenClaw, Cline, Cursor, Zed, Goose, Aider y más de 25 agentes de programación a GateLLM: la URL base, el destino de configuración y la particularidad de cada harness en un solo lugar.

Canonical: https://www.gatellm.io/es/coding-agents/

## Agentes de programación con IA y harness
Apunte Claude Code, Codex CLI, OpenClaw, Cline, Cursor y más de 25 agentes de programación al gateway con los mismos tres pasos, cada uno con su destino de configuración exacto y los nombres de sus claves.
Todos los agentes de programación con IA leen una URL base y una clave de API de algún sitio: una variable de entorno, un archivo de configuración o un panel de ajustes. Esta página indica de dónde lee cada harness, qué protocolo habla y la particularidad que realmente hace tropezar a la gente. Las configuraciones completas listas para copiar están en la documentación.
## Cómo nombrar el modelo del gateway
Algunos harness fijan su propio ID de modelo y lo envían tal cual. Si su modelo del gateway tiene otro nombre, la primera llamada devuelve 404. Dos formas de alinearlos:
Asigne al modelo del gateway exactamente el nombre que solicita el harness: sin configuración adicional.
O modifique el harness para que use el nombre de su gateway mediante su variable de entorno de modelo (por ejemplo, ANTHROPIC_MODEL).
## Apunte cualquier agente de programación con IA al gateway
```
# Every agent is one base_url + one access key away
export ANTHROPIC_BASE_URL="https://your-gateway.gatellm.io"   # Anthropic agents: root (no /v1)
export ANTHROPIC_API_KEY="<gateway access key>"

export OPENAI_API_BASE="https://your-gateway.gatellm.io/v1"   # OpenAI-compatible agents: /v1
export OPENAI_API_KEY="<gateway access key>"

# Codex CLI (~/.codex/config.toml) speaks the Responses protocol
# [model_providers.gatellm]
# base_url = "https://your-gateway.gatellm.io/v1"
# wire_api = "responses"
```
### `Authorization: Bearer <key>`
- SDK / framework: OpenAI · DashScope · genérico
- El prefijo Bearer no distingue mayúsculas de minúsculas

### `x-api-key: <key>`
- SDK / framework: SDK de Anthropic
- También se acepta Authorization

### `x-goog-api-key: <key>`
- SDK / framework: SDK de Gemini
- También se acepta Authorization

## Matriz de compatibilidad de harness

### Agentes de terminal
Claude Code, Codex CLI, Gemini CLI, OpenClaw, opencode, Crush, Droid, Goose, Aider, Qwen Code, OpenHands, Kimi Code, Plandex, SWE-agent, Grok Build, Mistral Vibe, MiMo Code, ForgeCode, Codebuff
| Harness | Protocolo | Soporte | Destino de configuración | Nombres de claves / ajustes | Documentación |
| --- | --- | --- | --- | --- | --- |
| Claude Code | Anthropic | Nativo | env vars | ANTHROPIC_BASE_URL, ANTHROPIC_API_KEY, ANTHROPIC_MODEL | https://docs.gatellm.io/en/quickstart/claude-code-via-gateway |
| Codex CLI | OpenAI Responses | Nativo | ~/.codex/config.toml | base_url, env_key, wire_api | https://docs.gatellm.io/en/reference/clients-and-gateway-diffs |
| Gemini CLI | Gemini | Nativo | env vars | GOOGLE_GEMINI_BASE_URL, GEMINI_API_KEY | https://docs.gatellm.io/en/reference/clients-and-gateway-diffs |
| OpenClaw | OpenAI / Anthropic-compatible | Compatible con OpenAI | openclaw.json | models.providers.<id>.baseUrl, models.providers.<id>.apiKey | https://docs.gatellm.io/en/quickstart/anthropic-interop |
| opencode | OpenAI-compatible | Compatible con OpenAI | opencode.json | provider.<id>.options.baseURL | https://docs.gatellm.io/en/quickstart/openai-compatible |
| Crush | OpenAI / Anthropic-compatible | Compatible con OpenAI | crush.json | providers.<id>.base_url, providers.<id>.type | https://docs.gatellm.io/en/quickstart/openai-compatible |
| Factory Droid | OpenAI / Anthropic-compatible | Compatible con OpenAI | ~/.factory/settings.json | customModels[].baseUrl, customModels[].provider | https://docs.gatellm.io/en/quickstart/openai-compatible |
| Goose | OpenAI-compatible | Compatible con OpenAI | env vars | OPENAI_HOST, OPENAI_BASE_PATH, OPENAI_API_KEY | https://docs.gatellm.io/en/quickstart/openai-compatible |
| Aider | OpenAI-compatible (LiteLLM) | Compatible con OpenAI | env vars | OPENAI_API_BASE | https://docs.gatellm.io/en/quickstart/openai-compatible |
| Qwen Code | OpenAI-compatible | Compatible con OpenAI | env vars | OPENAI_BASE_URL, OPENAI_API_KEY, OPENAI_MODEL | https://docs.gatellm.io/en/quickstart/openai-compatible |
| OpenHands | OpenAI-compatible (LiteLLM) | Compatible con OpenAI | ~/.openhands/settings.json | base_url, model openai/ prefix | https://docs.gatellm.io/en/quickstart/openai-compatible |
| Kimi Code CLI | OpenAI / Anthropic | Compatible con OpenAI | config.toml | providers | https://docs.gatellm.io/en/quickstart/openai-compatible |
| Plandex | OpenAI-compatible | Compatible con OpenAI | custom models JSON | baseUrl | https://docs.gatellm.io/en/quickstart/openai-compatible |
| SWE-agent | OpenAI-compatible (LiteLLM) | Compatible con OpenAI | env vars | OPENAI_BASE_URL | https://docs.gatellm.io/en/quickstart/openai-compatible |
| Grok Build | OpenAI-compatible | Compatible con OpenAI | config.toml | custom models | https://docs.gatellm.io/en/quickstart/openai-compatible |
| Mistral Vibe | OpenAI-compatible | Compatible con OpenAI | ~/.vibe/config.toml | providers | https://docs.gatellm.io/en/quickstart/openai-compatible |
| MiMo Code | OpenAI-compatible | Compatible con OpenAI | /connect custom provider | base URL, API key | https://docs.gatellm.io/en/quickstart/openai-compatible |
| ForgeCode | OpenAI / Anthropic | Compatible con OpenAI | setup wizard | base URL | https://docs.gatellm.io/en/quickstart/openai-compatible |
| Codebuff | OpenAI-compatible | Compatible con OpenAI | settings | base URL, API key | https://docs.gatellm.io/en/quickstart/openai-compatible |

### IDE y extensiones
Cline, Roo Code, Kilo Code, Continue, Zed, Cursor, Windsurf, GitHub Copilot (BYOK)
| Harness | Protocolo | Soporte | Destino de configuración | Nombres de claves / ajustes | Documentación |
| --- | --- | --- | --- | --- | --- |
| Cline | OpenAI-compatible | Compatible con OpenAI | Settings → OpenAI Compatible | Base URL, API Key, Model ID | https://docs.gatellm.io/en/quickstart/openai-compatible |
| Roo Code | OpenAI-compatible | Compatible con OpenAI | Settings → OpenAI Compatible | Base URL, API Key, Model ID | https://docs.gatellm.io/en/quickstart/openai-compatible |
| Kilo Code | OpenAI-compatible | Compatible con OpenAI | Settings → OpenAI Compatible | Base URL, API Key, Model ID | https://docs.gatellm.io/en/quickstart/openai-compatible |
| Continue | OpenAI-compatible | Compatible con OpenAI | config.yaml | models[].apiBase | https://docs.gatellm.io/en/quickstart/openai-compatible |
| Zed | OpenAI-compatible | Compatible con OpenAI | settings.json | language_models.openai_compatible.<id>.api_url | https://docs.gatellm.io/en/quickstart/openai-compatible |
| Cursor | OpenAI | Parcial | Settings → Models → Override OpenAI Base URL | Override OpenAI Base URL | https://docs.gatellm.io/en/quickstart/openai-compatible |
| Windsurf | OpenAI-compatible | Compatible con OpenAI | Settings → Models → BYOK / custom | Base URL, API Key | https://docs.gatellm.io/en/quickstart/openai-compatible |
| GitHub Copilot (BYOK) | OpenAI-compatible | Compatible con OpenAI | Manage Models → OpenAI-compatible | Base URL, API Key | https://docs.gatellm.io/en/quickstart/openai-compatible |

### Plataformas gestionadas
Warp (solo claves BYOK), Amazon Q Developer CLI, Devin: endpoint fijo o no reemplazable
| Harness | Protocolo | Soporte | Destino de configuración | Nombres de claves / ajustes | Documentación |
| --- | --- | --- | --- | --- | --- |
| Warp | OpenAI / Anthropic / Gemini (BYOK) | Parcial | Settings → BYOK | BYOK API keys | https://docs.gatellm.io/en/reference/supported-models-and-sdks |
| Amazon Q Developer CLI | MCP | Sin endpoint personalizado | MCP server | — | https://docs.gatellm.io/en/reference/supported-models-and-sdks |
| Devin | — | Sin endpoint personalizado | — | — | https://docs.gatellm.io/en/reference/supported-models-and-sdks |

## Particularidades
### El harness fija su propio ID de modelo
Claude Code envía el valor predeterminado que tenga configurado (por ejemplo, claude-opus-5 o claude-sonnet-5), no el nombre de su gateway. O asigne al modelo del gateway exactamente el nombre que solicita el harness, o configure la variable de entorno del modelo del harness (por ejemplo, ANTHROPIC_MODEL) con el nombre de su gateway. Una discrepancia produce 404 model_not_found en el primer mensaje.

### Los harness de protocolo Anthropic usan la raíz, no /v1
La URL base para clientes de estilo Anthropic apunta a la raíz del gateway (sin /v1); el cliente añade /v1/messages por su cuenta. Añadir /v1 aquí duplica el segmento de ruta.

### Los proveedores personalizados de Codex requieren wire_api="responses"
Codex CLI exige wire_api = "responses" para un bloque personalizado [model_providers.*]. El gateway implementa /v1/responses de forma nativa: apunte allí base_url y asigne env_key a una clave de acceso del gateway.

### Los harness basados en LiteLLM quieren el prefijo openai/ en el modelo
Aider, OpenHands y SWE-agent se apoyan en LiteLLM: configure OPENAI_API_BASE con el gateway y dé al modelo un prefijo openai/ (por ejemplo, openai/nombre-del-modelo-del-gateway) para que LiteLLM lo enrute como un endpoint compatible con OpenAI.

### De forma predeterminada usan OAuth de suscripción, no su clave
Codex, Gemini CLI y Qwen Code usan por defecto el inicio de sesión OAuth o de suscripción del proveedor. Para pasar por el gateway debe cambiar a autenticación con clave de API (configurar la clave y la URL base explícitamente); de lo contrario, el agente omite el gateway por completo.

### Los IDE deducen el soporte de herramientas y visión del ID del modelo
Cline / Roo / Kilo y otros deciden la capacidad de llamada a herramientas y de visión a partir del nombre del modelo. Un nombre personalizado del gateway puede desactivar el function calling; si fallan las llamadas a herramientas, revise las reglas de detección de capacidades del cliente o asigne al modelo un nombre que coincida con una familia conocida.

### La inferencia larga añade :keep-alive y _gateway_warning
Durante una inferencia upstream larga, el gateway emite líneas de comentario SSE :keep-alive (inofensivas: omita las líneas que empiezan por :) y, si la transmisión se corta a mitad, inserta un campo _gateway_warning en lugar de devolver un error, para que harness como Claude Code no aborten toda la conversación.

### Modo automático de Claude Code: decida quién responde al veredicto de seguridad
En modo automático, Claude Code espera un veredicto del lado del servidor (un campo safeguards en la solicitud) antes de una acción potencialmente peligrosa. Cuando el upstream es Anthropic oficial, el veredicto se produce dentro de esa misma solicitud y el gateway lo deja pasar sin tocarlo. Cuando el upstream es un tercero que ignora el campo, el gateway responde en su lugar, y el valor predeterminado de fábrica (allow_all) libera todas las acciones, lo cual es más permisivo que no intervenir en la llamada. Devuelva una ruta a su upstream escribiendo "anthropic_server_safeguards": "upstream" en el extra_config de ese upstream; la opción de la consola es solo para administradores.

## Preguntas frecuentes
### ¿Puedo usar Claude Code a través de GateLLM?
Sí: configure ANTHROPIC_BASE_URL con la raíz del gateway (sin /v1) y ANTHROPIC_API_KEY con una clave de acceso del gateway. Asigne al modelo del gateway exactamente el ID que solicita Claude Code (por ejemplo, claude-opus-5 o claude-sonnet-5), o alinéelo con ANTHROPIC_MODEL.
### ¿Cómo apunto Codex CLI al gateway?
En ~/.codex/config.toml, añada un bloque [model_providers.<id>] con base_url = "https://your-gateway.gatellm.io/v1", env_key apuntando a la variable de entorno de su clave de acceso y wire_api = "responses"; el gateway implementa /v1/responses de forma nativa.
### ¿Qué agentes de programación no pueden usar un endpoint personalizado?
Las plataformas alojadas como Devin y Amazon Q Developer CLI no exponen una URL base personalizada, así que no se pueden enrutar por el gateway. Warp admite claves BYOK, pero fija el endpoint a los proveedores oficiales. Todos los demás de esta página aceptan una URL base alternativa.
### ¿Funcionan las extensiones de IDE (Cline / Roo / Kilo)?
Sí: elija el proveedor "OpenAI Compatible" en los ajustes y pegue la URL /v1 del gateway, la clave de acceso y el nombre del modelo. Ojo con la detección de capacidades: algunas deducen el soporte de llamadas a herramientas del ID del modelo.
### ¿Por qué importa tanto el nombre del modelo?
Los harness envían un ID de modelo fijo, ya sea su propio valor predeterminado o su nombre configurado. El gateway enruta por esa cadena exacta, así que una discrepancia es un 404 model_not_found, no una errata que pueda ignorar.
### ¿Qué pasa con los agentes basados en LiteLLM (Aider / OpenHands / SWE-agent)?
Leen OPENAI_API_BASE y quieren un prefijo openai/ en el nombre del modelo para que LiteLLM trate el gateway como un endpoint compatible con OpenAI.

## Relacionado
- [Inicio](https://www.gatellm.io/es/index.md)
- [Precios](https://www.gatellm.io/es/pricing.md)
- [Calculadora de costos](https://www.gatellm.io/es/calculator.md)
- [Acerca de](https://www.gatellm.io/es/about.md)
- [Reservar una demo](https://www.gatellm.io/es/demo.md)
- [FAQ](https://www.gatellm.io/es/faq.md)
- [Comparar gateways de IA](https://www.gatellm.io/es/compare.md)
- [Comparar LiteLLM](https://www.gatellm.io/es/compare/litellm.md)
- [Comparar OpenRouter](https://www.gatellm.io/es/compare/openrouter.md)
- [Comparar Alibaba Cloud AI Gateway](https://www.gatellm.io/es/compare/alibaba-cloud.md)
- [Comparar Azure API Management](https://www.gatellm.io/es/compare/azure-apim.md)
- [Comparar Apigee](https://www.gatellm.io/es/compare/apigee.md)
- [Comparar Cloudflare AI Gateway](https://www.gatellm.io/es/compare/cloudflare.md)
- [Comparar Kong AI Gateway](https://www.gatellm.io/es/compare/kong.md)
- [Comparar Portkey](https://www.gatellm.io/es/compare/portkey.md)
- [LiteLLM vs Kong AI Gateway](https://www.gatellm.io/es/compare/litellm-vs-kong.md)
- [LiteLLM vs OpenRouter](https://www.gatellm.io/es/compare/litellm-vs-openrouter.md)
- [LiteLLM vs Portkey](https://www.gatellm.io/es/compare/litellm-vs-portkey.md)
- [Casos de uso](https://www.gatellm.io/es/use-cases.md)
- [Reducir el costo de LLM](https://www.gatellm.io/es/use-cases/reduce-cost.md)
- [Alta disponibilidad](https://www.gatellm.io/es/use-cases/high-availability.md)
- [Aislamiento multiusuario](https://www.gatellm.io/es/use-cases/multi-tenant.md)
- [Cumplimiento y auditoría](https://www.gatellm.io/es/use-cases/compliance-audit.md)
- [Solución de problemas por síntoma](https://www.gatellm.io/es/use-cases/troubleshooting.md)
- [Stack de modelos multivendor](https://www.gatellm.io/es/use-cases/mixed-model-stack.md)
- [IA autoalojada dentro de Office](https://www.gatellm.io/es/use-cases/self-hosted-office-ai.md)
- [Visibilidad y atribución del uso de tokens](https://www.gatellm.io/es/use-cases/token-ops.md)
- [Token FinOps: asignación y control del costo de IA](https://www.gatellm.io/es/use-cases/token-finops.md)
- [Gobernanza de herramientas MCP](https://www.gatellm.io/es/use-cases/mcp-tool-governance.md)
- [Búsqueda web para todos los modelos](https://www.gatellm.io/es/use-cases/web-search-grounding.md)
- [Rotación y respaldo multi-clave](https://www.gatellm.io/es/use-cases/multi-key-pooling.md)
- [Control de admisión de clientes](https://www.gatellm.io/es/use-cases/client-admission-control.md)
- [Aplicar la política de uso de modelos](https://www.gatellm.io/es/use-cases/enforce-model-policy.md)
- [Sin elección de modelo en el cliente](https://www.gatellm.io/es/use-cases/automatic-model-tiering.md)
- [Un protocolo, cualquier modelo](https://www.gatellm.io/es/use-cases/one-protocol-any-model.md)
- [Complemento para Office / Microsoft 365](https://www.gatellm.io/es/office-addin.md)
- [Glosario](https://www.gatellm.io/es/glossary.md)
- [Catálogo de modelos](https://www.gatellm.io/es/models.md)
- [Integraciones de SDK y frameworks](https://www.gatellm.io/es/integrations.md)
- [Seguridad y cumplimiento](https://www.gatellm.io/es/security.md)
