LM Warden

OpenCode nas suas próprias GPUs.

O LM Warden como provedor compatível com OpenAI para o OpenCode, um modelo servido.

Para onde vai uma solicitação do OpenCode O OpenCode envia as solicitações ao LM Warden com baseURL apontando para o warden e apiKey contendo uma chave do warden. O LM Warden verifica a chave, implementa o protocolo OpenAI Chat Completions, coloca a solicitação na fila pela prioridade da chave e a entrega ao roteador de réplicas, que mantém cada sessão na réplica que já tem o cache dela, uma cópia do modelo por GPU. OpenCode baseURL the warden, at /v1 apiKey vw_…, the warden key POST /v1/chat/completions LM Warden checks the key: one per app speaks OpenAI Chat Completions scheduler, key priority usage, latency and live stats per key Replica router a session goes back to the replica that holds its cache one model copy per GPU your GPUs: vLLM or llama.cpp replica 0, GPU 0 replica 1, GPU 1 replica 2, GPU 2 a conversation stays on its replica
Para onde vai uma solicitação do OpenCode O OpenCode envia as solicitações ao LM Warden com baseURL apontando para o warden e apiKey contendo uma chave do warden. O LM Warden verifica a chave, implementa o protocolo OpenAI Chat Completions, coloca a solicitação na fila pela prioridade da chave e a entrega ao roteador de réplicas, que mantém cada sessão na réplica que já tem o cache dela, uma cópia do modelo por GPU. OpenCode baseURL the warden, at /v1 apiKey vw_…, the warden key POST /v1/chat/completions LM Warden checks the key: one per app speaks OpenAI Chat Completions scheduler, key priority usage, latency, live stats per key Replica router a session goes back to the replica that holds its cache replica 0 GPU 0 replica 1 GPU 1 replica 2 GPU 2 your GPUs: vLLM or llama.cpp a conversation stays on its replica
Para onde vai uma solicitação do OpenCode: as duas configurações que o Connect grava, o warden no meio e depois uma cópia do modelo por GPU.

Em texto: O OpenCode envia as solicitações ao LM Warden com baseURL apontando para o warden e apiKey contendo uma chave do warden. O LM Warden verifica a chave, implementa o protocolo OpenAI Chat Completions, coloca a solicitação na fila pela prioridade da chave e a entrega ao roteador de réplicas, que mantém cada sessão na réplica que já tem o cache dela, uma cópia do modelo por GPU.

Protocolo
OpenAI Chat Completions
Suporte
Só modelos locais

Só modelos locais, via Chat Completions (@ai-sdk/openai-compatible; @ai-sdk/openai usaria a Responses API, que este warden só traduz para o Codex CLI). O id do modelo precisa ser o nome de um modelo servido, conforme /v1/models. Para um arquivo versionado, use {env:LMWARDEN_KEY} em vez da chave. O modo Router pelo provedor Anthropic do OpenCode ainda não é suportado.

Requisitos

  • Precisa de um modelo com chamada de ferramentas (edições agênticas).
  • Funciona melhor com pelo menos 32.768 tokens de contexto.

Configuração

No console, o Connect grava estes arquivos com o endereço do seu warden, a sua chave e o modelo que você escolheu. Aqui eles aparecem com espaços reservados.

Modelos locais

Adicione o LM Warden como provedor em opencode.json e torne-o o padrão.

opencode.json (opencode.json)
{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "lmwarden": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "LM Warden",
      "options": { "baseURL": "https://your-warden/v1", "apiKey": "vw_YOUR_KEY" },
      "models": {
        "your-served-model-name": { "name": "your-served-model-name", "limit": { "context": 32768, "output": 8192 } }
      }
    }
  },
  "model": "lmwarden/your-served-model-name"
}
Shell
opencode run "Reply with the single word OK."

Documentação oficial: https://opencode.ai/docs/providers/ (lida em 2026-10-04).