Claude Code na twoich własnych kartach GPU.
Zachowaj logowanie do Claude i uruchamiaj tutaj modele wskazane w regułach albo działaj w pełni lokalnie.
Jeden ANTHROPIC_BASE_URL, dwa miejsca, z których może przyjść odpowiedź.
Każde żądanie, które Claude Code wysyła do Anthropic, zużywa limity twojego planu albo jest rozliczane za każdy token na kluczu API, a jego prompt, łącznie z twoim kodem, opuszcza twój komputer. Wiele z tych żądań jest niewielkich. Obsłuż je na kartach, które już masz: kosztują wtedy prąd, nie liczą się do limitów, a ich prompty zostają na twoim hoście.
Sam Claude nigdy tu nie działa. Reguła wskazuje modele Claude, za które odpowiada ten serwer, na przykład claude-haiku*, a załadowany przez ciebie model odpowiada zamiast nich pod nazwą, o którą prosił Claude Code. Wszystko inne, łącznie z Opus, jest przekazywane do Anthropic bajt w bajt na twoim własnym koncie, łącznie ze strumieniowaniem. Klucz LM Warden jest przesyłany w osobnym nagłówku, więc dane logowania pozostają nietknięte, a dla klucza bez flagi „May relay to Anthropic” nic nie jest przekazywane.
Czy mały model wystarczy? Nie mierzyliśmy jakości odpowiedzi, więc to ocena, a nie benchmark. Claude Code używa modelu klasy Haiku do lżejszej pracy w tle i mały model lokalny jest tam rozsądnym zastępstwem, podobnie jak przy prostych, dobrze opisanych poprawkach. Przy zmianach w wielu plikach, debugowaniu i długich planach zostaw Sonnet i Opus w Anthropic – tak działa reguła domyślna, jeśli nie dodasz własnej. Większy model na większych kartach przesuwa tę granicę; nasze pomiary Claude Code i replik poniżej wykonano na modelu 4B.
Dobierz kontekst pod Claude Code, a nie pod czat: jego pierwsza tura w naszej sesji miała 38 167 tokenów, więc model lokalny potrzebuje znacznie ponad 40 tys. tokenów kontekstu.
Opis słowny: Claude Code wysyła żądanie do LM Warden z własnymi danymi logowania Anthropic w Authorization i kluczem LM Warden w X-LMWarden-Key. LM Warden sprawdza swoje reguły po kolei. Żądanie do modelu wskazanego w regule jest tłumaczone, ustawiane w kolejce przez planistę żądań i wysyłane przez router replik do jednej repliki vLLM. Każde inne żądanie, na przykład do Opus, jest przekazywane do api.anthropic.com z przekazanymi danymi logowania i usuniętym kluczem LM Warden. Jeśli część lokalna zawiedzie przed pierwszym bajtem, żądanie trafia do Anthropic albo reguła je odrzuca z kodem 529, który Claude Code ponawia.
export ANTHROPIC_BASE_URL=https:// warden.example export ANTHROPIC_CUSTOM_HEADERS= "X-LMWarden-Key: vw_…" claude
Claude Code 2.1.227 lub nowszy. Zachowaj zwykłe logowanie claude; klucz jest przesyłany w osobnym nagłówku, a nie w ANTHROPIC_API_KEY.
Decyduje pierwsze dopasowanie; wszystkie inne modele trafiają do Anthropic
Połączenie z Anthropic korzysta z własnego konta użytkownika
claude-haiku* do modelu lokalnego, a reguła domyślna przekazuje wszystko inne do Anthropic; reguły są ponumerowane w kolejności sprawdzania. Panel Traffic liczy 107 lokalnych, 2 przekazane, 0 przekierowanych awaryjnie i 2 odrzucone. Przewiń obraz w bok, aby zobaczyć całą stronę.Spodziewaj się, że wolna będzie pierwsza tura. We wcześniejszej sesji pierwsza tura Claude Code miała 38 167 tokenów, a model lokalny był załadowany z kontekstem 32 768 tokenów, więc silnik ją odrzucił (status_400) i żądanie trafiło do Anthropic. Po zwiększeniu kontekstu do 65 536 tokenów i włączeniu cache KV fp8 (cache uwagi przechowywany w 8 bitach, połowa pamięci) model 4B na kartach 16 GiB odpowiedział na tę samą turę lokalnie w 28 s, czytając cały prompt o długości 38 tys. tokenów od zera, gdy w cache nie było jeszcze nic. Kolejne tury rozmowy znajdują większość swojego promptu już w cache silnika: mediana czasu do pierwszego bajtu dla reguły claude-haiku* na rys. 4 wynosi 290 ms.
Bezpiecznik tego modelu: zamknięty
Dlaczego reguła trafiła do Anthropic lub została odrzucona, według powodu
- Protokół
- Anthropic Messages
- Obsługa
- Pełna obsługa
Modele Claude wskazane w twoich regułach działają tutaj; wszystkie inne modele i ścieżki /v1 trafiają do Anthropic na twoim własnym koncie. W trybie Router nigdy nie wpisuj klucza LM Warden w ANTHROPIC_API_KEY ani ANTHROPIC_AUTH_TOKEN: zastąpiłby on twoje dane logowania. Tryb tylko lokalny uruchamia wszystko na jednym udostępnianym modelu, łącznie z małymi zadaniami w tle, i nic nie trafia do Anthropic.
Wymagania
- Claude Code 2.1.227 lub nowszy (
ANTHROPIC_CUSTOM_HEADERS). - Routing musi być włączony, z co najmniej jedną aktywną regułą.
- Klucz musi mieć zgodę na przekazywanie do Anthropic (May relay).
- Wymaga co najmniej 49 152 tokenów kontekstu: sama pierwsza tura to około 38 000 tokenów, zanim zostanie przeczytany jakikolwiek plik.
- 131 072 tokeny lub więcej dla prawdziwych sesji; dla krótkich wystarczy mniej.
- Claude Code może ostrzec, że nazwy modelu nie ma w jego katalogu. To tylko informacja: zakłada okno 200 tys. tokenów i odpowiednio do niego automatycznie kompresuje kontekst. Ustaw
CLAUDE_CODE_MAX_CONTEXT_TOKENSna rzeczywiste okno kontekstu modelu.
Konfiguracja
W konsoli Connect zapisuje te pliki z adresem twojej instancji LM Warden, twoim kluczem i wybranym modelem. Tutaj są pokazane z symbolami zastępczymi.
Router: zachowaj logowanie do Claude
Twoje logowanie do Claude nadal trafia do Anthropic; klucz LM Warden jest przesyłany w osobnym nagłówku, a na żądania do modeli wskazanych w regułach odpowiada ten serwer.
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"
}
}Tylko lokalnie (bez konta Anthropic)
Każde ustawienie modelu wskazuje wybrany udostępniany model, a klucz LM Warden służy jako token uwierzytelniania. Nic nie trafia do 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"
}
}Oficjalna dokumentacja: https://code.claude.com/docs/en/llm-gateway (stan na 2026-10-04).