Claude Code en tus propias GPU.
Sigue usando tu cuenta de Claude y ejecuta aquí los modelos indicados en tus reglas, o ejecútalo todo en local.
Una sola ANTHROPIC_BASE_URL y dos posibles orígenes para cada respuesta.
Cada solicitud que Claude Code envía a Anthropic cuenta para los límites de uso de tu plan, o se factura por token con una clave de API, y saca de tu máquina su prompt, incluido tu código. Muchas de esas solicitudes son pequeñas. Si las respondes con tarjetas que ya tienes, solo cuestan electricidad, no cuentan para tus límites y sus prompts no salen de tu host.
Claude en sí nunca se ejecuta aquí. Una regla indica en lugar de qué modelos de Claude responde esta máquina, por ejemplo claude-haiku*, y un modelo que hayas cargado responde en su lugar, con el nombre que pidió Claude Code. Todo lo demás, Opus incluido, se reenvía a Anthropic byte a byte con tu propia cuenta, streaming incluido. Tu clave del warden va en su propio encabezado, así que tus credenciales de Claude nunca se tocan, y no se reenvía nada para una clave que no tenga activada la opción «May relay to Anthropic».
¿Basta con un modelo pequeño? No hemos medido la calidad de las respuestas, así que esto es una valoración, no un benchmark. Claude Code usa su modelo de clase Haiku para el trabajo en segundo plano más ligero, y ahí, igual que para ediciones sencillas y bien definidas, un modelo local pequeño es un sustituto razonable. Para cambios en muchos archivos, depuración y planes largos, deja Sonnet y Opus en Anthropic, que es lo que hace la regla general si no añades otra. Con un modelo más grande en tarjetas más grandes, ese límite se desplaza; nuestras mediciones de Claude Code y de réplicas que verás más abajo usaron un modelo 4B.
Dimensiona el contexto para Claude Code, no para un chat: su primer turno en nuestra sesión tuvo 38.167 tokens, así que el modelo local necesita bastante más de 40 mil tokens de contexto.
Descripción: Claude Code envía la solicitud al warden con sus propias credenciales de Anthropic en Authorization y la clave del warden en X-LMWarden-Key. El warden prueba sus reglas en orden. Una solicitud para un modelo indicado en una regla se traduce, el planificador la pone en cola y el enrutador de réplicas la envía a una réplica de vLLM. Cualquier otra solicitud, como las de Opus, se reenvía a api.anthropic.com con las credenciales intactas y sin la clave del warden. Si la parte local falla antes de su primer byte, la solicitud va a Anthropic o la regla la rechaza con un 529 que Claude Code reintenta.
export ANTHROPIC_BASE_URL=https:// warden.example export ANTHROPIC_CUSTOM_HEADERS= "X-LMWarden-Key: vw_…" claude
Claude Code 2.1.227 o posterior. Sigue iniciando sesión en claude como siempre; la clave va en su propio encabezado, no en ANTHROPIC_API_KEY.
Se aplica la primera regla que coincide; todos los demás modelos van a Anthropic
Se accede a Anthropic con la cuenta del propio usuario
claude-haiku* a un modelo local y la regla general reenvía todo lo demás a Anthropic; las reglas se numeran en el orden en que se prueban. El panel Traffic cuenta 107 locales, 2 reenviadas, 0 desviadas por fallo y 2 rechazadas. Desplaza la imagen lateralmente para ver toda la página.Ten en cuenta que el primer turno es el lento. En una sesión anterior, el primer turno de Claude Code tuvo 38.167 tokens y el modelo local estaba cargado con un contexto de 32.768 tokens, así que el motor lo rechazó (status_400) y la solicitud se envió a Anthropic. Con el contexto ampliado a 65.536 tokens y una caché KV fp8 (la caché de atención guardada en 8 bits, con la mitad de memoria), el modelo 4B en tarjetas de 16 GiB respondió ese mismo turno en local en 28 s, leyendo en frío el prompt completo de 38 mil tokens, sin nada todavía en la caché. Los turnos siguientes de una conversación encuentran la mayor parte de su prompt ya en la caché del motor: la mediana del tiempo hasta el primer byte para la regla claude-haiku* de la fig. 4 es de 290 ms.
El disyuntor de este modelo: cerrado
Por qué una regla envió la solicitud a Anthropic o la rechazó, por motivo
- 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 cuenta. En modo Router, nunca pongas la clave del warden en ANTHROPIC_API_KEY ni en ANTHROPIC_AUTH_TOKEN: sustituiría tus credenciales de Claude. El modo Solo local lo ejecuta todo en un único modelo servido, incluidas las pequeñas tareas en segundo plano, y no se envía nada a Anthropic.
Requisitos
- Claude Code 2.1.227 o posterior (
ANTHROPIC_CUSTOM_HEADERS). - El enrutamiento debe estar activado, con al menos una regla habilitada.
- La clave debe tener permiso para reenviar a Anthropic (May relay).
- Necesita al menos 49.152 tokens de contexto: solo el primer turno ocupa unos 38.000 tokens antes de leer ningún archivo.
- 131.072 tokens o más para sesiones reales; para sesiones cortas basta con menos.
- Claude Code puede avisar de que el nombre del modelo no está en su catálogo. Es solo informativo: asume una ventana de 200 mil tokens y compacta automáticamente en función de ella. Define
CLAUDE_CODE_MAX_CONTEXT_TOKENScon la ventana de contexto real del modelo.
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 cuenta de Claude
Tus credenciales de Claude siguen yendo a Anthropic; la clave del warden se envía en su propio encabezado, y las solicitudes a los modelos indicados en tus reglas se responden aquí.
export ANTHROPIC_BASE_URL=https://your-warden export ANTHROPIC_CUSTOM_HEADERS="X-LMWarden-Key: vw_YOUR_KEY" claude
settings.json (~/.claude/settings.json){
"env": {
"ANTHROPIC_BASE_URL": "https://your-warden",
"ANTHROPIC_CUSTOM_HEADERS": "X-LMWarden-Key: vw_YOUR_KEY"
}
}Solo local (sin cuenta de Anthropic)
Todas las opciones de modelo de Claude Code usan el modelo servido elegido, y la clave del warden es el token de autenticación. No se envía nada a Anthropic.
export ANTHROPIC_BASE_URL=https://your-warden export ANTHROPIC_AUTH_TOKEN=vw_YOUR_KEY export ANTHROPIC_MODEL=your-served-model-name export ANTHROPIC_DEFAULT_OPUS_MODEL=your-served-model-name export ANTHROPIC_DEFAULT_SONNET_MODEL=your-served-model-name export ANTHROPIC_DEFAULT_HAIKU_MODEL=your-served-model-name export CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1 export CLAUDE_CODE_MAX_CONTEXT_TOKENS=32768 # The model's context window is unknown: 32768 is a guess. Set it to the model's real window.
settings.json (~/.claude/settings.json){
"env": {
"ANTHROPIC_BASE_URL": "https://your-warden",
"ANTHROPIC_AUTH_TOKEN": "vw_YOUR_KEY",
"ANTHROPIC_MODEL": "your-served-model-name",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "your-served-model-name",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "your-served-model-name",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "your-served-model-name",
"CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS": "1",
"CLAUDE_CODE_MAX_CONTEXT_TOKENS": "32768"
}
}Documentación oficial: https://code.claude.com/docs/en/llm-gateway (consultada el 2026-10-04).