Como usar o OpenCode com LiteLLM para conectar vários modelos de IA

O OpenCode fala o formato da API da OpenAI e o LiteLLM expõe mais de 100 provedores nesse mesmo formato, por isso a combinação OpenCode LiteLLM dá liberdade de trocar de modelo sem trocar de ferramenta. Você sobe o proxy do LiteLLM (litellm --config config.yaml, na porta 4000), declara um provider no opencode.json apontando pra http://localhost:4000/v1 e autentica com a API key do proxy. Dá pra automatizar tudo com o opencode-plugin-litellm, que descobre os modelos sozinho, e até rodar vários LiteLLM ao mesmo tempo
Trocar de modelo sem trocar de ferramenta: é isso que essa dupla resolve
O OpenCode fala o formato da API da OpenAI
o LiteLLM pega mais de 100 modelos diferentes e traduz todos pra esse mesmo formato
por isso os dois vivem aparecendo juntos quando o papo é ter liberdade de modelo direto no terminal
O que o LiteLLM resolve e por que ele aparece junto do OpenCode
Antes do como, o porquê
O LiteLLM é um projeto open source (da BerriAI) que oferece uma interface única pra chamar mais de 100 modelos de linguagem
OpenAI, Anthropic, Vertex AI, Bedrock e por aí vai, todos usando o formato da API da OpenAI
Ele vem em dois pedaços: um SDK Python, pra chamar de dentro do seu app, e um servidor proxy standalone, o tal AI Gateway, que sobe sozinho e expõe uma API REST compatível com OpenAI
É esse proxy que interessa aqui
Do outro lado tem o OpenCode, um agente de código de IA open source pra rodar no terminal, feito pela equipe por trás do SST
Ele suporta 75+ provedores de fábrica
E aqui mora o encaixe: o OpenCode conversa em formato OpenAI-compatible, e o proxy do LiteLLM expõe QUALQUER provedor exatamente nesse formato
Ou seja, pro OpenCode o LiteLLM parece só mais um endpoint da OpenAI
e por trás desse endpoint você pluga o que quiser
O que você precisa antes de começar
Nada de PC da Nasa, é setup de configuração mesmo
- OpenCode instalado na máquina
- LiteLLM instalado, com o servidor proxy disponível
- Um
config.yamldo LiteLLM listando os modelos e provedores que você quer usar, cada um com a respectiva chave de API do provedor - A API key do proxy do LiteLLM, que pode ser a master key ou uma virtual key
O config.yaml é o coração da coisa
é nele que você diz ao LiteLLM quais modelos existem e com qual chave cada um fala
Com esses quatro itens na mão, bora conectar
Passo a passo: conectar o LiteLLM ao OpenCode
- Suba o proxy do LiteLLM apontando pro seu arquivo de configuração:
litellm --config config.yamlSe deu tudo certo, ele responde com a mensagem Proxy running on http://0.0.0.0:4000
O proxy roda por padrão na porta 4000
O erro comum deste passo: seguir em frente sem confirmar essa mensagem de "proxy running" e a porta
se a porta não for a 4000, o resto da configuração não vai bater
- Declare o provider no
opencode.json
Aqui você registra o LiteLLM como um provider compatível com OpenAI, apontando pra baseURL do proxy:
{
"provider": {
"LiteLLM": {
"npm": "@ai-sdk/openai-compatible",
"name": "LiteLLM",
"options": {
"baseURL": "http://localhost:4000/v1"
},
"models": {
"seu-modelo": {}
}
}
}
}O pacote npm é o @ai-sdk/openai-compatible, o name é o nome do provider e o objeto models lista os modelos que você quer expor no OpenCode
Esse opencode.json pode ficar global em ~/.config/opencode/opencode.json, por projeto na raiz, ou via variável de ambiente OPENCODE_CONFIG
O erro comum deste passo: esquecer o /v1 no fim da baseURL
tem que ser http://localhost:4000/v1, senão o OpenCode não acha os endpoints
- Autentique no OpenCode
Na hora de autenticar, informe o nome do provider IGUAL ao campo name do config (ou seja, LiteLLM) e cole a API key do LiteLLM, que é a master key ou uma virtual key do proxy
O erro comum deste passo: usar um nome de provider diferente do que está no name do config
se os dois divergirem, o OpenCode não casa a autenticação com o provider e não conecta
Atalho: o plugin que descobre os modelos sozinho
Se você não quiser ficar listando modelo por modelo no models, tem um caminho mais preguiçoso (e isso é bom!)
Existe o opencode-plugin-litellm
Ele auto-detecta o proxy do LiteLLM rodando, puxa os modelos direto de /v1/models e registra tudo no OpenCode sozinho
Pra ligar, é só adicionar no opencode.json:
{
"plugin": ["opencode-plugin-litellm@latest"]
}Aí o plugin faz a descoberta na hora, sem você precisar declarar modelo a modelo
O erro comum aqui: o proxy não estar rodando no momento da detecção
se o LiteLLM estiver desligado, não tem /v1/models pra ler e o plugin não acha nada
sobe o proxy primeiro, sempre
Vários LiteLLM e mistura com outros provedores
Agora a parte massa
O OpenCode não te prende a um único LiteLLM
Dá pra configurar mais de um provider LiteLLM ao mesmo tempo, cada um apontando pra uma baseURL diferente
por exemplo, um litellm-prod e um litellm-dev, cada um com seu próprio proxy
E não para aí: você pode misturar isso com provedores diretos, sem passar pelo LiteLLM
Na prática, é alternar o modelo conforme o contexto de trabalho
um setup pra brincar, outro pra produção, e ainda um provedor direto pra alguma tarefa específica
tudo no mesmo OpenCode, sem reescrever nada do zero a cada troca
Modelos gratuitos no OpenCode: um vídeo pra começar
Pra começar do zero com uso de modelos no OpenCode, este vídeo do canal mostra como colocar modelos gratuitos pra rodar dentro do agente
no teste de API que aparece por lá, os modelos gratuitos não descontaram nada
quem gerou custo foi o Gemini 3.5 flash
e teve um momento bem real de desenvolvimento: bateu rate limit no Sonnet e o próprio agente alternou pro GLM 4.6, seguindo o trabalho sem travar
Conclusão
O valor da combinação OpenCode LiteLLM é um só: flexibilidade de modelo sem reescrever o setup
você monta o proxy uma vez, declara o provider e passa a trocar de modelo como quem troca de aba
O próximo passo é montar o seu config.yaml com os provedores e chaves que você quer, subir o proxy e testar a troca de modelos direto no OpenCode
se quiser pular a parte manual, joga o opencode-plugin-litellm no meio e deixa ele descobrir os modelos por você
bora testar?
Perguntas frequentes
Preciso deixar o proxy do LiteLLM rodando enquanto uso o OpenCode?
Sim, o proxy precisa estar ativo durante todo o uso. Toda chamada de modelo passa pelo endpoint http://localhost:4000/v1, e se o proxy cair o OpenCode para de alcançar os modelos na hora. O fluxo é sempre subir o proxy com litellm --config config.yaml antes de abrir o OpenCode
Dá pra mudar a porta padrão 4000 do proxy do LiteLLM?
Dá sim, a porta é customizável com --port na linha de comando ao subir o proxy. Se você mudar, é só ajustar a baseURL no opencode.json pra bater com a nova porta. O 4000 é o padrão, não uma obrigação
O LiteLLM cobra alguma coisa pelo uso do proxy ou pelo SDK?
Não, o LiteLLM é open source e o proxy em si não tem cobrança nenhuma. O custo que aparece vem dos provedores de modelo que você conecta: cada chamada vai pro provedor (Anthropic, Google, OpenAI…) e quem cobra é ele, não o LiteLLM. O proxy só faz o meio de campo
Como eu sei qual nome usar na autenticação do OpenCode pra apontar pro LiteLLM?
O nome que você informa na autenticação tem que ser IDÊNTICO ao campo name dentro do bloco do provider no opencode.json. Se declarou "name": "LiteLLM", é exatamente esse valor que vai na autenticação. Se os dois divergirem, o OpenCode não casa a autenticação com o provider e a conexão não fecha
O opencode.json por projeto e o arquivo global de configuração podem existir ao mesmo tempo?
Sim, o OpenCode aceita a configuração em três lugares: global em ~/.config/opencode/opencode.json, por projeto na raiz do repositório, ou via variável de ambiente OPENCODE_CONFIG. Assim você mantém um setup global pra uso geral e um opencode.json por projeto com os modelos específicos de cada contexto, sem conflito
O plugin opencode-plugin-litellm precisa que eu liste os modelos manualmente no opencode.json?
Não, essa é exatamente a vantagem dele: o plugin puxa os modelos direto de /v1/models do proxy e registra tudo sozinho no OpenCode, sem você precisar listar um por um. A única condição é o proxy do LiteLLM estar rodando no momento da detecção, senão não tem endpoint pra ler e o plugin não acha nada
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 473 aulas
- 20 projetos
- 39h 26min
Blog | Mais populares

As diferenças de var, let e const

Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]

Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]
