Claude Code на ваших собственных GPU.
Оставайтесь в своей учетной записи Claude и запускайте здесь модели, указанные в ваших правилах, — или работайте полностью локально.
Один ANTHROPIC_BASE_URL — два возможных источника ответа.
Каждый запрос, который Claude Code отправляет в Anthropic, расходует лимиты вашего тарифа или оплачивается по токенам через ключ API — и отправляет промпт, включая ваш код, за пределы вашего компьютера. Многие из этих запросов небольшие. Если отвечать на них на картах, которые у вас уже есть, они обойдутся в стоимость электричества, не будут расходовать лимиты, а их промпты останутся на вашем сервере.
Сам Claude здесь не запускается. В правиле указываются модели Claude, на запросы к которым отвечает этот сервер, например claude-haiku*, — и вместо них отвечает загруженная вами модель, под тем именем, которое запросил Claude Code. Все остальное, включая Opus, передается в Anthropic байт в байт, с вашими собственными учетными данными, включая потоковые ответы. Ключ LM Warden передается в отдельном заголовке, поэтому ваши учетные данные не затрагиваются, а для ключа без флага «May relay to Anthropic» ничего не пересылается.
Хватит ли небольшой модели? Качество ответов мы не измеряли, так что это экспертная оценка, а не бенчмарк. Модели класса Haiku Claude Code поручает легкую фоновую работу, и небольшая локальная модель — разумная замена для этих задач, а также для простых правок с четкой постановкой. Изменения во многих файлах, отладку и длинные планы оставьте Sonnet и Opus в Anthropic — именно так и работает правило «все остальное», если вы не добавите свое. Чем больше модель и мощнее карты, тем дальше сдвигается эта граница; наши замеры Claude Code и реплик ниже сделаны на модели 4B.
Подбирайте размер контекста под Claude Code, а не под чат: первый шаг в нашей сессии занял 38 167 токенов, так что локальной модели нужно заметно больше 40 тыс. токенов контекста.
Иначе говоря: Claude Code отправляет запрос на сервер LM Warden, передавая свои учетные данные Anthropic в Authorization, а ключ LM Warden — в X-LMWarden-Key. LM Warden проверяет правила по порядку. Запрос к модели, указанной в правиле, преобразуется, ставится планировщиком в очередь и отправляется маршрутизатором реплик на одну из реплик vLLM. Любой другой запрос, например к Opus, передается на api.anthropic.com: учетные данные пересылаются, а ключ LM Warden удаляется. Если локальная обработка дает сбой до первого байта, запрос уходит в Anthropic, или правило отклоняет его с кодом 529, и Claude Code повторяет запрос.
export ANTHROPIC_BASE_URL=https:// warden.example export ANTHROPIC_CUSTOM_HEADERS= "X-LMWarden-Key: vw_…" claude
Claude Code 2.1.227 или новее. Не выходите из своей обычной учетной записи в claude: ключ передается в отдельном заголовке, а не в ANTHROPIC_API_KEY.
Срабатывает первое подходящее правило; все остальные модели уходят в Anthropic
В Anthropic запросы идут с учетными данными пользователя
claude-haiku* на локальную модель, а правило «все остальное» передает остальные запросы в Anthropic; правила пронумерованы в порядке проверки. Панель Traffic: 107 локальных ответов, 2 сквозные передачи, 0 резервных переключений и 2 отказа. Прокрутите изображение вбок, чтобы увидеть всю страницу.Будьте готовы к тому, что медленным окажется первый шаг. В одной из прошлых сессий первый шаг Claude Code содержал 38 167 токенов, а локальная модель была загружена с контекстом 32 768 токенов, поэтому движок его отклонил (status_400) и запрос ушел в Anthropic. После увеличения контекста до 65 536 токенов и перехода на KV-кэш fp8 (кэш внимания хранится в 8 битах и занимает вдвое меньше памяти) модель 4B на картах по 16 ГиБ ответила на тот же шаг локально за 28 с, обработав весь промпт в 38 тыс. токенов с нуля, когда в кэше еще ничего не было. Последующие шаги диалога находят большую часть промпта уже в кэше движка: медианное время до первого байта для правила claude-haiku* на рис. 4 — 290 мс.
Автоматический выключатель этой модели: замкнут
Причины, по которым запросы по правилу ушли в Anthropic или были отклонены
- Протокол
- Anthropic Messages
- Поддержка
- Полная поддержка
Модели Claude, указанные в ваших правилах, работают здесь; все остальные модели и пути /v1 уходят в Anthropic с вашими собственными учетными данными. В режиме маршрутизатора никогда не указывайте ключ LM Warden в ANTHROPIC_API_KEY или ANTHROPIC_AUTH_TOKEN: он заменит ваши учетные данные. В режиме «Только локально» все запросы, включая мелкие фоновые задачи, обрабатывает одна обслуживаемая модель, и в Anthropic ничего не уходит.
Требования
- Claude Code 2.1.227 или новее (
ANTHROPIC_CUSTOM_HEADERS). - Маршрутизация должна быть включена, и хотя бы одно правило должно быть активно.
- Ключу должно быть разрешено пересылать запросы в Anthropic (May relay).
- Нужно не меньше 49 152 токенов контекста: один только первый шаг занимает около 38 000 токенов еще до чтения каких-либо файлов.
- Для полноценной работы — 131 072 токена или больше; для коротких сессий хватит и меньше.
- Claude Code может предупредить, что имени модели нет в его каталоге. Это лишь уведомление: он исходит из окна в 200 тыс. токенов и автоматически сжимает контекст под него. Укажите в
CLAUDE_CODE_MAX_CONTEXT_TOKENSреальный размер контекстного окна модели.
Настройка
В консоли раздел Connect создает эти файлы с адресом вашего сервера LM Warden, вашим ключом и выбранной моделью. Здесь они показаны с заполнителями.
Router: работа через учетную запись Claude сохраняется
Ваши учетные данные Claude по-прежнему уходят в Anthropic; ключ LM Warden передается в отдельном заголовке, а на запросы к моделям, указанным в ваших правилах, отвечают здесь.
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"
}
}Только локально (без учетной записи Anthropic)
Во всех слотах моделей указана выбранная обслуживаемая модель, а ключ LM Warden служит токеном авторизации. В 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"
}
}Официальная документация: https://code.claude.com/docs/en/llm-gateway (дата обращения: 2026-10-04).