LM Warden

OpenCode на ваших собственных GPU.

LM Warden как OpenAI-совместимый провайдер для OpenCode с одной обслуживаемой моделью.

Куда идет запрос от OpenCode OpenCode отправляет запросы в LM Warden: в baseURL указан адрес сервера LM Warden, а в apiKey — ключ LM Warden. LM Warden проверяет ключ, принимает запросы в формате OpenAI Chat Completions, ставит их в очередь по приоритету ключа и передает маршрутизатору реплик. Маршрутизатор закрепляет каждую сессию за репликой, на которой уже лежит ее кэш; на каждом 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
Куда идет запрос от OpenCode OpenCode отправляет запросы в LM Warden: в baseURL указан адрес сервера LM Warden, а в apiKey — ключ LM Warden. LM Warden проверяет ключ, принимает запросы в формате OpenAI Chat Completions, ставит их в очередь по приоритету ключа и передает маршрутизатору реплик. Маршрутизатор закрепляет каждую сессию за репликой, на которой уже лежит ее кэш; на каждом 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
Путь запроса от OpenCode: две настройки, которые создает Connect, затем сервер LM Warden и по копии модели на каждом GPU.

Иначе говоря: OpenCode отправляет запросы в LM Warden: в baseURL указан адрес сервера LM Warden, а в apiKey — ключ LM Warden. LM Warden проверяет ключ, принимает запросы в формате OpenAI Chat Completions, ставит их в очередь по приоритету ключа и передает маршрутизатору реплик. Маршрутизатор закрепляет каждую сессию за репликой, на которой уже лежит ее кэш; на каждом GPU работает своя копия модели.

Протокол
OpenAI Chat Completions
Поддержка
Только локально

Только локальные модели через Chat Completions (@ai-sdk/openai-compatible; @ai-sdk/openai работал бы через Responses API, а этот сервер LM Warden преобразует его только для Codex CLI). Идентификатор модели должен совпадать с именем модели из /v1/models. Если файл попадет в репозиторий, укажите вместо ключа {env:LMWARDEN_KEY}. Режим Router через провайдер Anthropic в OpenCode пока не поддерживается.

Требования

  • Нужна модель с вызовом инструментов (агентное редактирование).
  • Лучше всего работает с контекстом не меньше 32 768 токенов.

Настройка

В консоли раздел Connect создает эти файлы с адресом вашего сервера LM Warden, вашим ключом и выбранной моделью. Здесь они показаны с заполнителями.

Локальные модели

Добавьте LM Warden как провайдер в opencode.json и сделайте его провайдером по умолчанию.

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"
}
Оболочка
opencode run "Reply with the single word OK."

Официальная документация: https://opencode.ai/docs/providers/ (дата обращения: 2026-10-04).