Przejdź do głównej zawartości

Bramki i modele lokalne: LiteLLM, CC Switch, Claude Code Router, Ollama i LM Studio

Bramka albo lokalny serwer modeli pozwala uruchomić Claude Code i Codex na modelach innych niż endpoint dostawcy: Claude Code przez ANTHROPIC_BASE_URL i zmienną z poświadczeniem, Codex przez --oss albo własnego dostawcę. LiteLLM dokłada budżety na programistę, a Ollama, LM Studio i llama.cpp serwują modele lokalnie. Za każdą z nich przestają działać Remote Control i dyktowanie głosowe.

Ta strona jest dla programisty, który ma uruchomić agenta w sieci, z której kod nie może wyjść, i dla tech leada, który potem daje tę samą konfigurację ośmiu osobom z limitem wydatków. Dział bezpieczeństwa zgodził się na „wyłącznie modele lokalne” dla jednego repozytorium; na jednym laptopie agent po dwóch turach zapomniał o instrukcjach, a na kolejnym ktoś użył tagu :cloud, nie zauważając tego. Potrzebujesz konfiguracji sprawdzalnie lokalnej, z budżetem na osobę i głośnym błędem przy złym ustawieniu.

  • Jedną regułę, której podlega każda bramka dla Claude Code, i miejsca, w których po cichu się psuje.
  • Tabelę decyzyjną, która przypisuje twojej sytuacji narzędzie.
  • Działający przykład: Claude Code na lokalnym modelu z Ollamy, plus Codex i Cursor.
  • Workflow zespołowy: Ollama za LiteLLM w odizolowanej sieci, z budżetem na programistę i testami, które dowodzą, że nic nie wychodzi.
  • Trzy prompty, pułapki i typowe awarie z naprawami.

Który model serwować i jak zmierzyć różnicę jakości względem Claude Opus 5.5 czy GPT-6 Astra, opisuje strona o modelach open-weight i hostowanych samodzielnie. Wersje i ceny modeli są w centrum modeli. Wdrożenie bramki dla modeli Claude w całej organizacji opisuje strona o bramce LLM, a samą decyzję o hostingu strona gdzie działa model.

Jak Claude Code rozmawia z bramką albo modelem lokalnym?

Dział zatytułowany „Jak Claude Code rozmawia z bramką albo modelem lokalnym?”

Claude Code korzysta z Anthropic Messages API. Każdy serwer, który implementuje POST /v1/messages, może zastąpić Anthropic: ustawiasz na niego ANTHROPIC_BASE_URL i dajesz Claude Code poświadczenie. Ollama, LM Studio i llama-server z llama.cpp implementują ten endpoint samodzielnie, więc na jednej maszynie proxy jest opcjonalne. LiteLLM i Claude Code Router stoją przed wieloma backendami naraz.

Najczęściej pomijany element to zmienna z poświadczeniem. Dokumentacja bramek Claude Code (sprawdzona 2026-09-26) podaje trzy reguły:

ZmiennaWysyłana jakoKiedy jej użyć
ANTHROPIC_AUTH_TOKENnagłówek Authorization: BearerBramka oczekuje tokenu bearer; domyślny wybór, jeśli nikt ci nic nie powiedział
ANTHROPIC_API_KEYnagłówek x-api-keyBramka oczekuje klucza API; sesja interaktywna raz poprosi cię o jego zatwierdzenie
apiKeyHelper (ustawienia)oba nagłówkiPoświadczenie rotuje albo pochodzi z sejfu
  1. Samo ANTHROPIC_BASE_URL niczego nie przełącza. Zmienna z poświadczeniem bramki ma pierwszeństwo przed zapisanym logowaniem claude.ai. Bez niej aktywne zostaje logowanie, a z nim jego limity i rozliczenia.
  2. Blok env w pliku ustawień wygrywa z eksportem w powłoce tej samej zmiennej. Nigdy nie wpisuj poświadczenia do projektowego .claude/settings.json, bo ten plik trafia do repozytorium; użyj ~/.claude/settings.json albo ustawień zarządzanych.
  3. Dowodem jest /status. Zakładka Status pokazuje wiersz Anthropic base URL z adresem bramki i wiersz Auth token albo API key z nazwą ustawionej zmiennej. Wiersz Login method z kontem claude.ai oznacza, że poświadczenie bramki nie dotarło.

Przewodnik Ollamy dla Claude Code dodaje ANTHROPIC_API_KEY="" obok ANTHROPIC_AUTH_TOKEN, żeby zapomniany klucz API gdzieś w środowisku nie przejął sesji.

Zacznij od tego, kto z niej korzysta i gdzie działa model.

Twoja sytuacjaWybierzDlaczego
Jedna osoba, chcesz dziś wypróbować model lokalnyOllama (ollama launch claude)Jedno polecenie podłącza Claude Code albo Codex do modelu lokalnego; Codex ma też --oss
Jedna osoba, aplikacja desktopowa i graficzny wybór modeluLM StudioCLI lms, lokalny endpoint /v1/messages i --local-provider lmstudio w Codex
Własna kwantyzacja, bez demona, nietypowy sprzętllama.cpp (llama-server)Pełna kontrola; wywołania narzędzi wymagają --jinja
Jedna osoba przełącza Claude Code między kilkoma hostowanymi dostawcamiCC Switch albo Claude Code RouterCC Switch to aplikacja desktopowa, która przepisuje konfigurację dostawcy; CCR to lokalna bramka z regułami routingu i fallbackami
Jedna osoba, wiele hostowanych modeli za jednym kluczemOpenRouterHostowany router z endpointem zgodnym z Anthropic (źródło wtórne, patrz niżej)
Zespół z kluczami, budżetami i logami, modele lokalne albo hostowaneProxy LiteLLMKlucze wirtualne dla każdego programisty, max_budget na klucz albo zespół, jedno miejsce do zmiany dostawcy
Modele Claude przez bramkę organizacji albo kontrakt chmurowyNie ta stronaBramka LLM i gdzie działa model

Popularność na dzień 2026-09-26 (gwiazdki GitHub odczytane przez API GitHub): Ollama 181 740; CC Switch 136 915; llama.cpp 129 535; LiteLLM 59 639; Claude Code Router 37 429; otwartoźródłowe CLI lms od LM Studio 5318 (sama aplikacja jest zamknięta). Gwiazdki mierzą zainteresowanie, a nie bezpieczeństwo.

To oficjalna integracja Ollamy z Claude Code (docs/integrations/claude-code.mdx w ollama/ollama, sprawdzona 2026-09-26). Działa, bo Ollama „supports a subset of the Anthropic Messages API”.

  1. Uruchom Ollamę z kontekstem odpowiednim dla agenta. Domyślny kontekst Ollamy zależy od VRAM: 4k tokenów poniżej 24 GiB, 32k przy 24–48 GiB, 256k od 48 GiB. Ollama zaleca dla narzędzi programistycznych co najmniej 64 000 tokenów, więc na typowym laptopie domyślne ustawienie po cichu obcina prompt systemowy agenta:

    Okno terminala
    # Terminal 1
    OLLAMA_CONTEXT_LENGTH=64000 ollama serve
  2. Uruchom Claude Code podłączony do modelu lokalnego. qwen3.5 to tag z przewodnika Ollamy; zastąp go lokalnym tagiem, który sam oceniłeś:

    Okno terminala
    # Terminal 2, tryb interaktywny: wybierasz model, Ollama uruchamia Claude Code
    ollama launch claude
    # Bez interfejsu, dla skryptów i CI: bez selektorów, w razie potrzeby pobiera model
    ollama launch claude --model qwen3.5 --yes -- -p "How does this repository work? Name the entry point and the test command."

    --yes pomija selektory i wymaga --model. Wszystko po -- trafia do Claude Code, więc -p uruchamia go w trybie print.

  3. Sprawdź, czy model naprawdę działa lokalnie i z ustawionym kontekstem:

    Okno terminala
    ollama ps # CONTEXT powinno pokazać 64000; PROCESSOR powinno pokazać 100% GPU

Powinieneś zobaczyć odpowiedź Claude Code, która wymienia pliki istniejące w twoim repozytorium. Jeśli odpowiedź jest ogólnikowa albo pomija pliki, model nie wywołał narzędzi: najpierw sprawdź kontekst w ollama ps, potem spróbuj modelu obsługującego wywołania narzędzi. Przewodnik Ollamy każe „use tools with compatible models”, a strona zgodności zaznacza, że kontrola wyboru narzędzi, narzędzia odroczone i hostowane wyszukiwanie w sieci „are not fully supported”.

Konfiguracja ręczna z tego samego przewodnika, bez ollama launch:

Okno terminala
export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_API_KEY=""
export ANTHROPIC_BASE_URL=http://localhost:11434
claude --model qwen3.5

Opisane wyżej: ollama launch claude albo ANTHROPIC_BASE_URL z ANTHROPIC_AUTH_TOKEN i ANTHROPIC_API_KEY="". Dla LM Studio schemat jest ten sam po lms server start: ANTHROPIC_BASE_URL=http://localhost:1234, a jako --model podajesz ID załadowanego modelu. Endpoint opisuje dokumentacja LM Studio; połączenie z Claude Code pochodzi z wyciągu wyszukiwarki ze strony lmstudio.ai (źródło wtórne), więc zanim na nim polegasz, uruchom test dymny. llama-server uruchom z --jinja (wymagane do wywołań narzędzi) i -c 65536, a potem ustaw ANTHROPIC_BASE_URL na jego port; llama.cpp nie dokumentuje połączenia z Claude Code, więc obowiązuje ten sam test dymny.

Przełączanie dostawców dla jednej osoby: CC Switch, Claude Code Router i OpenRouter

Dział zatytułowany „Przełączanie dostawców dla jednej osoby: CC Switch, Claude Code Router i OpenRouter”

Wszystkie trzy to narzędzia indywidualne. Żadne nie daje budżetów zespołowych, a dwa z nich wysyłają kod do hostowanych dostawców.

CC Switch (farion1231/cc-switch, MIT) to aplikacja desktopowa w Tauri, która przełącza dostawców, serwery MCP, skille i prompty dla Claude Code, Codex, Gemini CLI, OpenCode i sześciu innych narzędzi wymienionych w README. Instalacja: brew install --cask cc-switch na macOS albo instalator MSI, wersja przenośna lub buildy dla Linuksa z wydań na GitHubie. Istnieją strony podszywające się pod projekt, a aplikacja trzyma twoje klucze dostawców, więc pobieraj ją wyłącznie z wydań na GitHubie albo z ccswitch.io, jedynej strony, którą repozytorium nazywa oficjalną.

Claude Code Router (npm @musistudio/claude-code-router 3.1.1, MIT) określa się jako „a local model gateway and control plane for coding agents”. Wersja 3 to przede wszystkim aplikacja desktopowa, z alternatywnym CLI wymagającym Node 22 lub nowszego:

Okno terminala
npm install -g @musistudio/claude-code-router
ccr ui # interfejs zarządzania na http://127.0.0.1:3458; bramka nasłuchuje na http://127.0.0.1:3456

W interfejsie: Providers > Add Provider, potem Server > Start, potem Agent Config > wybierz Claude Code (albo Codex, OpenCode i inne) > zastosuj.

OpenRouter to hostowany router z endpointem zgodnym z Anthropic. Jego cookbook ustawia ANTHROPIC_BASE_URL=https://openrouter.ai/api i umieszcza klucz OpenRouter w ANTHROPIC_AUTH_TOKEN, a także ostrzega, że wywołania narzędzi i rozszerzone myślenie mogą nie działać z modelami spoza Anthropic. Oba szczegóły są wtórne (wyciąg wyszukiwarki ze strony openrouter.ai, nie sama strona, stan na 2026-09-26); sprawdź cookbook przed konfiguracją.

Zespół w sieci odizolowanej z budżetem na programistę

Dział zatytułowany „Zespół w sieci odizolowanej z budżetem na programistę”

To workflow, do którego prowadzi cała strona: lokalny serwer modelu → bramka LiteLLM z kluczami i budżetami → zarządzane ustawienia agenta → testy dymne → ewaluacje → code review jak dotąd. Serwer modelu nie nasłuchuje poza własnym hostem, każdy programista ma klucz z limitem wydatków, a ponieważ sieć blokuje ruch wychodzący do hostowanych endpointów, laptop bez klucza do bramki dostaje błąd zamiast po cichu użyć logowania claude.ai.

  1. Serwuj model na jednym hoście, tylko na localhost. Uruchom Ollamę (albo vLLM, opisany na stronie o modelach open-weight) na serwerze z GPU z OLLAMA_CONTEXT_LENGTH=64000, pobieraj wyłącznie tagi lokalne i zostaw go na localhost:11434. LiteLLM działa na tym samym hoście i jest jedynym punktem, do którego łączą się programiści, więc serwer modelu nie potrzebuje własnego uwierzytelniania. Na brzegu sieci zablokuj laptopom programistów ruch wychodzący do hostowanych endpointów modeli i przepuszczaj tylko llm-gw.internal; bez tej blokady laptop bez klucza do bramki wraca do zapisanego logowania claude.ai.

  2. Zainstaluj LiteLLM z przypiętą wersją, z wewnętrznego lustra. Wersje 1.82.7 i 1.82.8 opublikowane w PyPI 24 marca 2026 kradły poświadczenia; 1.82.8 dodawała też plik .pth, który uruchamia się przy każdym starcie Pythona. Obie zniknęły z PyPI (JSON PyPI z 2026-09-26 po 1.82.6 wymienia od razu 1.83.0), a incydent śledzi zgłoszenie BerriAI/litellm#24518. Lustro albo cache nadal może je przechowywać, więc przypnij wersję i weryfikuj skróty:

    Okno terminala
    uv tool install 'litellm[proxy]==1.102.1'
    # Dla obrazu serwera: przypięcie ze skrótami i instalacja przez pip --require-hashes
    echo 'litellm[proxy]==1.102.1' > requirements.in
    uv pip compile --generate-hashes requirements.in -o requirements.txt
  3. Opisz model i jego cenę wewnętrzną. Klucze wirtualne i budżety wymagają bazy Postgres, którą proxy odczytuje z DATABASE_URL. Lokalny model domyślnie nic nie kosztuje za token, więc budżet nigdy by nie zadziałał. Nadaj mu wewnętrzną cenę za token (koszt GPU podzielony przez zmierzoną przepustowość) przez input_cost_per_token i output_cost_per_token:

    litellm-config.yaml
    model_list:
    - model_name: local-coder
    litellm_params:
    model: ollama_chat/qwen3.5
    api_base: http://localhost:11434
    input_cost_per_token: 0.0000004 # cena wewnętrzna, nie cena dostawcy
    output_cost_per_token: 0.0000016
    general_settings:
    master_key: os.environ/LITELLM_MASTER_KEY
    database_url: os.environ/DATABASE_URL
    Okno terminala
    litellm --config litellm-config.yaml # nasłuchuje na porcie 4000
  4. Wydaj każdemu programiście klucz z budżetem. models ogranicza, co klucz może wywołać, max_budget limituje wydatki w twojej wewnętrznej walucie, a budget_duration go resetuje (na przykład 30d). Klucz główny pochodzi z sejfu i nigdy nie trafia na maszynę programisty:

    Okno terminala
    curl -sS https://llm-gw.internal:4000/key/generate \
    -H "Authorization: Bearer $LITELLM_MASTER_KEY" \
    -H "Content-Type: application/json" \
    -d '{"key_alias": "dev-anna", "models": ["local-coder"], "max_budget": 50, "budget_duration": "30d"}'

    Adres bramki to https: klucze programistów i klucz główny przechodzą przez sieć wewnętrzną, więc zakończ TLS na reverse proxy przed LiteLLM (albo w samym LiteLLM) z certyfikatem z wewnętrznego CA. Jeśli Claude Code zgłosi wtedy błędy certyfikatów, zobacz NODE_EXTRA_CA_CERTS w sekcji co psuje się za bramką.

    Limit na poziomie zespołu ustawisz przez POST /team/new, który też przyjmuje max_budget, a /key/info pokazuje wydatki klucza.

  5. Skieruj każdego agenta na bramkę przez ustawienia zarządzane. Zmapuj wszystkie aliasy modeli Claude Code na serwowany model, bo Claude Code wywołuje alias Haiku do pracy w tle, na przykład do tytułów sesji, a twoja bramka go nie serwuje. Wyłącz ruch nieistotny, który inaczej nadal idzie do Anthropic i GitHuba (sprawdzanie wersji, telemetria, informacje o wydaniach):

    Ustawienia zarządzane: blok env
    {
    "env": {
    "ANTHROPIC_BASE_URL": "https://llm-gw.internal:4000",
    "ANTHROPIC_MODEL": "local-coder",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "local-coder",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "local-coder",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "local-coder",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
    },
    "permissions": {
    "deny": ["WebSearch", "WebFetch"]
    },
    "skipWebFetchPreflight": true
    }

    Każdy programista podaje własny klucz jako ANTHROPIC_AUTH_TOKEN (eksport w powłoce, ~/.claude/settings.json albo apiKeyHelper czytający z sejfu). CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC wyłącza też automatyczne aktualizacje, więc dostarczaj Claude Code przez menedżer pakietów albo wewnętrzne lustro. skipWebFetchPreflight wyłącza sprawdzanie domen przez WebFetch, które mimo ustawionej zmiennej łączy się z api.anthropic.com. Reguła deny całkowicie odbiera agentowi wyszukiwanie i pobieranie stron, bo w sieci odizolowanej każde z nich jest drogą na zewnątrz (a przez Ollamę także wywołaniem jej hostowanego wyszukiwania). Gdzie leżą ustawienia zarządzane i jak są egzekwowane, opisuje strona o polityce zarządzanej.

    Dla Codex dodaj dostawcę w config.toml z base_url = "https://llm-gw.internal:4000/v1", env_key wskazującym zmienną z kluczem programisty i wire_api = "responses". LiteLLM dokumentuje endpoint Responses API; potwierdź go w swojej wersji, a test dymny niech pokaże, czy wywołania narzędzi Codex przetrwają drogę w obie strony.

  6. Zweryfikuj konfigurację, zanim ktokolwiek zacznie na niej pracować. Przeprowadź testy z następnej sekcji na jednym laptopie, a potem wdrażaj.

  7. Rób code review wyników agenta tak samo jak wcześniej. Model lokalny zmienia miejsce generowania tokenów, a nie sposób dowodzenia, że zmiana jest poprawna: merge nadal blokują testy, CI, bot do code review i zatwierdzenie przez człowieka.

Jak udowodnić, że bramka działa i ruch zostaje lokalnie?

Dział zatytułowany „Jak udowodnić, że bramka działa i ruch zostaje lokalnie?”

Przeprowadź te testy na jednej maszynie programisty przed wdrożeniem i po każdej aktualizacji bramki, modelu albo Claude Code. Tech lead (albo właściciel bramki w zespole platformowym) zatwierdza testy; recenzent pull requesta nadal zatwierdza każdą zmianę.

TestJakWarunek zaliczenia
Bramka odpowiadacurl -sS -w '\n%{http_code}\n' -X POST "$ANTHROPIC_BASE_URL/v1/messages" -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" -H "anthropic-version: 2023-06-01" -H "content-type: application/json" -d '{"model": "local-coder", "max_tokens": 1, "messages": [{"role": "user", "content": "."}]}'HTTP 200 i JSON z "type":"message" oraz tablicą content; 401 oznacza zły klucz albo zły nagłówek
Sesja idzie przez bramkę/status w Claude CodeAnthropic base URL pokazuje bramkę; Auth token wskazuje ANTHROPIC_AUTH_TOKEN; brak wiersza Login method
Narzędzia działająPrompt testu dymnego poniżejOdpowiedź wymienia prawdziwe pliki i prawdziwe polecenie, bez ogólników
Kontekst się mieściollama ps na serwerze; /context w Claude CodeKontekst serwera co najmniej 64 000; prompt systemowy i narzędzia zostawiają miejsce na pracę
Budżet działaWydaj testowy klucz z "max_budget": 0.01 i wysyłaj prompty, aż się wyczerpieBramka odrzuca kolejne żądania; /key/info pokazuje wydatki
Nic nie wychodziLogi ruchu wychodzącego z laptopa i serwera podczas sesjiBrak połączeń z api.anthropic.com, ollama.com i innymi hostowanymi endpointami

Jakość wyników to osobne pytanie niż łączność. Zanim zespół zacznie polegać na modelu lokalnym, przepuść te same 20–30 zadań z własnych scalonych pull requestów przez bramkę i przez model domyślny, zgodnie z protokołem ewaluacji na stronie o modelach open-weight i hostowanych samodzielnie. Żadne źródło pierwotne nie mierzy spadku jakości modelu lokalnego w Claude Code, więc liczy się tylko twój własny odsetek zaliczonych zadań. Narzędzia do powtarzalnych przebiegów opisuje strona o ewaluacji agentów.

  • Znikają Remote Control i /voice. Oba wymagają tożsamości claude.ai i są niedostępne, gdy aktywne jest ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN albo apiKeyHelper. Od v2.1.196 Remote Control jest też wyłączone, gdy ANTHROPIC_BASE_URL wskazuje host inny niż Anthropic. Naprawa: zaakceptuj to w sesjach przez bramkę albo usuń zmienne bramki i zaloguj się przez claude.ai do pracy, która może korzystać z Anthropic. claude doctor pokazuje, co blokuje Remote Control. Alternatywy opisują strony o klientach zdalnych i mobilnych oraz o sterowaniu głosem.
  • Slack i sesje w chmurze ignorują bramkę. Zawsze używają API Anthropic. Naprawa: nie włączaj tych powierzchni użytkownikom, których ruch musi zostać na bramce.
  • Ostrzeżenie przy starcie wymienia dwa źródła poświadczeń. Obecne są jednocześnie poświadczenie bramki i zapisane logowanie. Naprawa: /logout, żeby zostało tylko poświadczenie bramki.
  • Claude Code prosi o logowanie, choć test curl przechodzi. Poświadczenie leży w projektowym pliku ustawień, który działa dopiero po kreatorze pierwszego uruchomienia i potwierdzeniu zaufania do folderu. Naprawa: wyeksportuj ANTHROPIC_AUTH_TOKEN w powłoce albo wpisz je do ~/.claude/settings.json lub ustawień zarządzanych.
  • Błędy 400 z context_management albo Extra inputs are not permitted. Upstream odrzuca pola, które Claude Code wysyła do endpointów Anthropic. Naprawa: CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1.
  • Bramka zgłasza limit kontekstu własnymi słowami. Claude Code nie rozpoznaje błędu, więc nie kompaktuje i nie ponawia. Naprawa: /compact, a potem ustaw CLAUDE_CODE_AUTO_COMPACT_WINDOW na limit bramki. Ta zmienna ma dolną granicę 100 000 tokenów, więc dla lokalnego modelu z 64K kontekstu naprawą pozostaje /compact, a prawdziwym rozwiązaniem jest większy kontekst na serwerze.
  • Wywołania w tle kończą się błędem nieznanego modelu. Claude Code poprosił o alias Haiku. Naprawa: ustaw wszystkie cztery zmienne ANTHROPIC_*MODEL na serwowany model, jak w kroku 5.
  • Agent zapomina o instrukcjach albo odpowiada bez czytania plików. Obcięty kontekst albo model bez wywołań narzędzi. Naprawa: ollama ps dla kontekstu, potem prompt testu dymnego; jeśli narzędzia dalej nie działają, zmień model.
  • 403 z treścią HTML i pustymi logami bramki. Zapora aplikacji webowych przed bramką zablokowała treść żądania, bo prompty zawierają kod źródłowy i znaczniki w stylu XML. Naprawa: wyłącz inspekcję treści dla ścieżki /v1/messages.
  • Błędy certyfikatów, choć curl działa. Claude Code nie ufa twojemu wewnętrznemu CA. Naprawa: ustaw NODE_EXTRA_CA_CERTS na pakiet certyfikatów CA.
  • Budżet nigdy nie zadziała. Lokalny model nie ma ceny, więc wydatki stoją na zerze. Naprawa: ustaw input_cost_per_token i output_cost_per_token jak w kroku 3.

Najczęstsze pytania

Jak skierować Claude Code na bramkę albo model lokalny?

Ustaw ANTHROPIC_BASE_URL na serwer, który implementuje Anthropic Messages API (/v1/messages), i ustaw zmienną z poświadczeniem: ANTHROPIC_AUTH_TOKEN albo ANTHROPIC_API_KEY. Bez niej aktywne pozostaje zapisane logowanie claude.ai. Oba ustawienia potwierdzisz poleceniem /status.

Co przestaje działać w Claude Code za bramką?

Remote Control i dyktowanie głosowe, bo oba wymagają tożsamości claude.ai; Remote Control jest też wyłączone, gdy ANTHROPIC_BASE_URL wskazuje host inny niż Anthropic. Claude Code w Slacku i sesje w chmurze zawsze używają API Anthropic.

Czy LiteLLM można bezpiecznie zainstalować?

Tylko z przypiętą wersją. Wersje 1.82.7 i 1.82.8 opublikowane w PyPI 24 marca 2026 kradły poświadczenia. Obie zniknęły z PyPI, ale nieprzypięta instalacja z cache albo lustra nadal może na nie trafić.

Czy modele w Ollamie zawsze działają lokalnie?

Nie. Tagi kończące się na :cloud (albo -cloud) działają w chmurze Ollamy, więc kod opuszcza maszynę. Jeśli Ollama ma zapewnić rezydencję danych, przypinaj wyłącznie tagi lokalne.