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» нічого не пересилається.
Чи достатньо малої моделі? Якість відповідей ми не вимірювали, тож це судження, а не бенчмарк. Claude Code використовує модель класу Haiku для легшої фонової роботи, і невелика локальна модель — розумна заміна там і для простих, чітко описаних правок. Для змін у багатьох файлах, налагодження й довгих планів залишайте 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 під вашим власним обліковим записом. У режимі Router ніколи не вказуйте ключ 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).