Agentes e harnesses de código com IA
Aponte Claude Code, Codex CLI, OpenClaw, Cline, Cursor e mais de 25 outros agentes de código para o gateway com os mesmos três passos — cada um com seu destino exato de configuração e nomes de chave.
Todo agente de código de IA lê uma base URL e uma chave de API de algum lugar — uma variável de ambiente, um arquivo de configuração ou um painel de configurações. Esta página lista de onde cada harness as lê, qual protocolo ele fala e a armadilha que realmente pega as pessoas. As configurações completas para copiar e colar estão na documentação.
Aponte o base_url para o gateway
Padrão https://your-gateway.gatellm.io — incluir ou não /v1 depende do SDK (cada exemplo traz o valor exato).
Troque por uma chave de acesso do gateway
Não é uma chave upstream sk-… — a mesma chave de acesso é montada no cabeçalho que o seu SDK espera.
Use o nome de modelo do gateway
Aquele que você configurou no console — não o nome oficial do fornecedor.
Authorization: Bearer <key>x-api-key: <key>x-goog-api-key: <key>Matriz de compatibilidade de harnesses
| Harness | Protocolo | Suporte | Destino da configuração | Nomes de chave / configurações | Documentação |
|---|---|---|---|---|---|
| Agentes de terminal | |||||
| Claude Code | Anthropic | Nativo | env vars | ANTHROPIC_BASE_URL, ANTHROPIC_API_KEY, ANTHROPIC_MODEL | Configuração no GitHub ↗ · Documentação |
| Codex CLI | OpenAI Responses | Nativo | ~/.codex/config.toml | base_url, env_key, wire_api | Configuração no GitHub ↗ · Documentação |
| Gemini CLI | Gemini | Nativo | env vars | GOOGLE_GEMINI_BASE_URL, GEMINI_API_KEY | Configuração no GitHub ↗ · Documentação |
| OpenClaw | OpenAI / Anthropic-compatible | Compatível com OpenAI | openclaw.json | models.providers.<id>.baseUrl, models.providers.<id>.apiKey | Documentação |
| opencode | OpenAI-compatible | Compatível com OpenAI | opencode.json | provider.<id>.options.baseURL | Documentação |
| Crush | OpenAI / Anthropic-compatible | Compatível com OpenAI | crush.json | providers.<id>.base_url, providers.<id>.type | Documentação |
| Factory Droid | OpenAI / Anthropic-compatible | Compatível com OpenAI | ~/.factory/settings.json | customModels[].baseUrl, customModels[].provider | Documentação |
| Goose | OpenAI-compatible | Compatível com OpenAI | env vars | OPENAI_HOST, OPENAI_BASE_PATH, OPENAI_API_KEY | Documentação |
| Aider | OpenAI-compatible (LiteLLM) | Compatível com OpenAI | env vars | OPENAI_API_BASE | Documentação |
| Qwen Code | OpenAI-compatible | Compatível com OpenAI | env vars | OPENAI_BASE_URL, OPENAI_API_KEY, OPENAI_MODEL | Documentação |
| OpenHands | OpenAI-compatible (LiteLLM) | Compatível com OpenAI | ~/.openhands/settings.json | base_url, model openai/ prefix | Documentação |
| Kimi Code CLI | OpenAI / Anthropic | Compatível com OpenAI | config.toml | providers | Documentação |
| Plandex | OpenAI-compatible | Compatível com OpenAI | custom models JSON | baseUrl | Documentação |
| SWE-agent | OpenAI-compatible (LiteLLM) | Compatível com OpenAI | env vars | OPENAI_BASE_URL | Documentação |
| Grok Build | OpenAI-compatible | Compatível com OpenAI | config.toml | custom models | Documentação |
| Mistral Vibe | OpenAI-compatible | Compatível com OpenAI | ~/.vibe/config.toml | providers | Documentação |
| MiMo Code | OpenAI-compatible | Compatível com OpenAI | /connect custom provider | base URL, API key | Documentação |
| ForgeCode | OpenAI / Anthropic | Compatível com OpenAI | setup wizard | base URL | Documentação |
| Codebuff | OpenAI-compatible | Compatível com OpenAI | settings | base URL, API key | Documentação |
| IDEs e extensões | |||||
| Cline | OpenAI-compatible | Compatível com OpenAI | Settings → OpenAI Compatible | Base URL, API Key, Model ID | Documentação |
| Roo Code | OpenAI-compatible | Compatível com OpenAI | Settings → OpenAI Compatible | Base URL, API Key, Model ID | Documentação |
| Kilo Code | OpenAI-compatible | Compatível com OpenAI | Settings → OpenAI Compatible | Base URL, API Key, Model ID | Documentação |
| Continue | OpenAI-compatible | Compatível com OpenAI | config.yaml | models[].apiBase | Documentação |
| Zed | OpenAI-compatible | Compatível com OpenAI | settings.json | language_models.openai_compatible.<id>.api_url | Documentação |
| Cursor | OpenAI | Parcial | Settings → Models → Override OpenAI Base URL | Override OpenAI Base URL | Documentação |
| Windsurf | OpenAI-compatible | Compatível com OpenAI | Settings → Models → BYOK / custom | Base URL, API Key | Documentação |
| GitHub Copilot (BYOK) | OpenAI-compatible | Compatível com OpenAI | Manage Models → OpenAI-compatible | Base URL, API Key | Documentação |
| Plataformas gerenciadas | |||||
| Warp | OpenAI / Anthropic / Gemini (BYOK) | Parcial | Settings → BYOK | BYOK API keys | Documentação |
| Amazon Q Developer CLI | MCP | Sem endpoint personalizado | MCP server | — | Documentação |
| Devin | — | Sem endpoint personalizado | — | — | Documentação |
Como nomear o modelo no gateway
Alguns harnesses fixam o próprio ID de modelo e o enviam literalmente. Se o modelo do seu gateway tiver outro nome, a primeira chamada retorna 404. Duas formas de alinhar:
Dê ao modelo do gateway exatamente o nome que o harness solicita — zero configuração extra.
Ou sobrescreva o harness para usar o nome do seu gateway pela variável de ambiente de modelo dele (por exemplo, ANTHROPIC_MODEL).
Armadilhas
O Claude Code envia o padrão configurado nele (por exemplo, claude-opus-5 ou claude-sonnet-5) — não o nome do seu gateway. Ou dê ao modelo do gateway exatamente o nome que o harness pede, ou defina a variável de ambiente de modelo dele (por exemplo, ANTHROPIC_MODEL) com o nome do seu gateway. Incompatibilidade → 404 model_not_found na primeira mensagem.
A base URL de clientes no estilo Anthropic aponta para a raiz do gateway (sem /v1) — o próprio cliente acrescenta /v1/messages. Adicionar /v1 aqui duplica o segmento de caminho.
O Codex CLI requer wire_api = "responses" para um bloco personalizado [model_providers.*]. O gateway implementa /v1/responses nativamente — aponte o base_url para ele e defina env_key com uma chave de acesso do gateway.
Aider, OpenHands e SWE-agent rodam sobre o LiteLLM: defina OPENAI_API_BASE com o gateway e dê ao modelo um prefixo openai/ (por exemplo, openai/gateway-model-name) para que o LiteLLM o roteie como endpoint compatível com OpenAI.
Codex, Gemini CLI e Qwen Code usam por padrão o login OAuth / assinatura do fornecedor. Para rotear pelo gateway você precisa mudar para autenticação por chave de API (definir a chave + a base URL explicitamente) — caso contrário o agente contorna o gateway por completo.
Cline / Roo / Kilo e outros decidem a capacidade de chamada de ferramentas e de visão pelo nome do modelo. Um nome personalizado do gateway pode desativar a chamada de funções — se as chamadas de ferramenta falharem, verifique as regras de detecção de capacidade do cliente ou dê ao modelo um nome que corresponda a uma família conhecida.
Durante inferências upstream longas, o gateway emite linhas de comentário SSE :keep-alive (inofensivas — ignore linhas que começam com :), e em uma quebra no meio do stream insere um campo _gateway_warning em vez de gerar erro, para que harnesses como o Claude Code não abortem toda a conversa.
No modo automático, o Claude Code aguarda um veredito do servidor (um campo safeguards na requisição) antes de uma ação potencialmente perigosa. Quando o upstream é o Anthropic oficial, o veredito é produzido dentro da mesma requisição e o gateway o repassa intacto. Quando o upstream é um terceiro que ignora o campo, o gateway responde em seu lugar — e o padrão de fábrica (allow_all) libera toda ação, o que é mais permissivo do que deixar a chamada seguir. Devolva uma rota ao próprio upstream escrevendo "anthropic_server_safeguards": "upstream" no extra_config desse upstream; a configuração no console é exclusiva de admin.
# 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"