LM Warden

Your coding agent, on your own GPUs.

LM Warden speaks the three protocols coding agents use: OpenAI Chat Completions, the Anthropic Messages API and the OpenAI Responses API. So Claude Code, the Anthropic and OpenAI SDKs, OpenCode, Aider, Grok CLI, Continue, Cline, Cursor and Codex CLI connect with a base URL and a key, and their requests show up per key, per session, with the phase each one is in.

Where a request from Your coding agent goes Your coding agent sends its requests to LM Warden with base URL set to the warden and API key holding a warden key. LM Warden checks the key, speaks the OpenAI and Anthropic APIs, queues the request by key priority and hands it to the replica router, which keeps each session on the replica that already holds its cache, one model copy per GPU. A separate path goes to api.anthropic.com: Claude Code only: other Claude models go here, on your own login. Your coding agent base URL the warden, at /v1 API key vw_…, one key per app POST /v1/… LM Warden checks the key: one per app speaks the OpenAI and Anthropic APIs 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 api.anthropic.com Claude Code only: other Claude models go here, on your own login
Where a request from Your coding agent goes Your coding agent sends its requests to LM Warden with base URL set to the warden and API key holding a warden key. LM Warden checks the key, speaks the OpenAI and Anthropic APIs, queues the request by key priority and hands it to the replica router, which keeps each session on the replica that already holds its cache, one model copy per GPU. A separate path goes to api.anthropic.com: Claude Code only: other Claude models go here, on your own login. Your coding agent base URL the warden, at /v1 API key vw_…, one key per app POST /v1/… LM Warden checks the key: one per app speaks the OpenAI and Anthropic APIs 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 api.anthropic.com Claude Code only: other Claude models go here, on your own login
Where a request from a coding agent goes. Every agent sets the same two things, a base URL and a key; the warden checks the key, queues the request and sends it to the replica that already holds the session’s cache. Each agent’s page draws its own settings.

In words: Your coding agent sends its requests to LM Warden with base URL set to the warden and API key holding a warden key. LM Warden checks the key, speaks the OpenAI and Anthropic APIs, queues the request by key priority and hands it to the replica router, which keeps each session on the replica that already holds its cache, one model copy per GPU. A separate path goes to api.anthropic.com: Claude Code only: other Claude models go here, on your own login.

You don’t write the config by hand. In the console, Connect picks your client, your model and your key and writes the files to paste. Each page below shows the same files with placeholders and what works.

ClientProtocolSupport
Claude CodeAnthropic MessagesFull support
Anthropic SDKAnthropic MessagesFull support
OpenCodeOpenAI Chat CompletionsLocal models only
AiderOpenAI Chat CompletionsLocal models only
Grok CLIOpenAI Chat CompletionsLocal models only
OpenAI SDKOpenAI Chat CompletionsLocal models only
ContinueOpenAI Chat CompletionsLocal models only
ClineOpenAI Chat CompletionsLocal models only
CursorOpenAI Chat CompletionsLocal models only
Codex CLIOpenAI ResponsesLocal models only

Missing a client? Ask in GitHub Discussions.