LM Warden

El Anthropic SDK en tus propias GPU.

Tu clave de API de Anthropic se queda en api_key; la clave del warden va en su propio encabezado.

Adónde va una solicitud del Anthropic SDK El Anthropic SDK envía sus solicitudes a LM Warden, con base_url configurada con la dirección del warden y una clave del warden en X-LMWarden-Key. LM Warden comprueba la clave, recibe la solicitud por la API Anthropic Messages, la pone en cola según la prioridad de la clave y se la pasa al enrutador de réplicas, que mantiene cada sesión en la réplica que ya tiene su caché, con una copia del modelo por GPU. Hay una ruta aparte hacia api.anthropic.com: las reglas envían por ella los demás modelos de Claude, con tu propia clave de API. Anthropic SDK base_url points at the warden X-LMWarden-Key vw_…, in default headers POST /v1/messages LM Warden checks the key: one per app speaks Anthropic Messages 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 rules send other Claude models here, on your own API key
Adónde va una solicitud del Anthropic SDK El Anthropic SDK envía sus solicitudes a LM Warden, con base_url configurada con la dirección del warden y una clave del warden en X-LMWarden-Key. LM Warden comprueba la clave, recibe la solicitud por la API Anthropic Messages, la pone en cola según la prioridad de la clave y se la pasa al enrutador de réplicas, que mantiene cada sesión en la réplica que ya tiene su caché, con una copia del modelo por GPU. Hay una ruta aparte hacia api.anthropic.com: las reglas envían por ella los demás modelos de Claude, con tu propia clave de API. Anthropic SDK base_url points at the warden X-LMWarden-Key vw_…, in default headers POST /v1/messages LM Warden checks the key: one per app speaks Anthropic Messages 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 rules send other Claude models here, on your own API key
Adónde va una solicitud del Anthropic SDK: las dos opciones que configura Connect, el warden en medio y, después, una copia del modelo por GPU.

Descripción: El Anthropic SDK envía sus solicitudes a LM Warden, con base_url configurada con la dirección del warden y una clave del warden en X-LMWarden-Key. LM Warden comprueba la clave, recibe la solicitud por la API Anthropic Messages, la pone en cola según la prioridad de la clave y se la pasa al enrutador de réplicas, que mantiene cada sesión en la réplica que ya tiene su caché, con una copia del modelo por GPU. Hay una ruta aparte hacia api.anthropic.com: las reglas envían por ella los demás modelos de Claude, con tu propia clave de API.

Protocolo
Anthropic Messages
Compatibilidad
Completa

Los modelos de Claude indicados en tus reglas se ejecutan aquí; todos los demás modelos y rutas /v1 van a Anthropic con tu propia clave de API. El modo Solo local no necesita cuenta de Anthropic: la clave del warden es la api_key y el modelo es uno de los nombres servidos.

Requisitos

  • El enrutamiento debe estar activado, con al menos una regla habilitada.
  • La clave debe tener permiso para reenviar a Anthropic (May relay).

Configuración

En la consola, Connect genera estos archivos con la dirección de tu warden, tu clave y el modelo que hayas elegido. Aquí aparecen con marcadores de posición.

Router: sigue usando tu clave de Anthropic

base_url es este warden; tu clave de API de Anthropic se queda en api_key y la clave del warden va en los encabezados predeterminados.

Python
import anthropic

# api_key is your own Anthropic key (ANTHROPIC_API_KEY), used for pass-through.
client = anthropic.Anthropic(
    base_url="https://your-warden",
    default_headers={"X-LMWarden-Key": "vw_YOUR_KEY"},
)
message = client.messages.create(
    model="claude-haiku-4-5",  # a model your rules serve here; others go to Anthropic
    max_tokens=256,
    messages=[{"role": "user", "content": "Reply with the single word OK."}],
)
print(message.content[0].text)
TypeScript
import Anthropic from "@anthropic-ai/sdk";

// apiKey is your own Anthropic key (ANTHROPIC_API_KEY), used for pass-through.
const client = new Anthropic({
  baseURL: "https://your-warden",
  defaultHeaders: { "X-LMWarden-Key": "vw_YOUR_KEY" },
});
const message = await client.messages.create({
  model: "claude-haiku-4-5", // a model your rules serve here; others go to Anthropic
  max_tokens: 256,
  messages: [{ role: "user", content: "Reply with the single word OK." }],
});
console.log(message.content);
curl
curl https://your-warden/v1/messages \
  -H "X-LMWarden-Key: vw_YOUR_KEY" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "claude-haiku-4-5", "max_tokens": 256, "messages": [{"role": "user", "content": "Reply with the single word OK."}]}'

Solo local

La clave del warden es la api_key y el modelo es uno de los nombres servidos.

Python
import anthropic

client = anthropic.Anthropic(base_url="https://your-warden", api_key="vw_YOUR_KEY")
message = client.messages.create(
    model="your-served-model-name",
    max_tokens=256,
    messages=[{"role": "user", "content": "Reply with the single word OK."}],
)
print(message.content[0].text)
TypeScript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({ baseURL: "https://your-warden", apiKey: "vw_YOUR_KEY" });
const message = await client.messages.create({
  model: "your-served-model-name",
  max_tokens: 256,
  messages: [{ role: "user", content: "Reply with the single word OK." }],
});
console.log(message.content);
curl
curl https://your-warden/v1/messages \
  -H "x-api-key: vw_YOUR_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "your-served-model-name", "max_tokens": 256, "messages": [{"role": "user", "content": "Reply with the single word OK."}]}'

Documentación oficial: https://platform.claude.com/docs/en/api/sdks/python (consultada el 2026-10-04).