Jeden klucz na aplikację i strona dla każdego klucza.
Daj każdemu współpracownikowi, laptopowi, zadaniu CI i agentowi własny klucz. Strona klucza pokazuje, ile zużył i jak długo jego żądania czekały w kolejce, medianę i p95, w dowolnym oknie, które zaznaczysz myszą lub wpiszesz. Wymieniaj klucz (rotacja) z okresem przejściowym i ustawiaj jego priorytet od P0 do P9: oczekujące żądanie P9 zawsze idzie przed P8.
Wstrzymaj go, a nowe żądania będą odrzucane, podczas gdy te już wykonywane się zakończą:
$ curl -i http://gpu-box:8080/v1/chat/completions \
-H "Authorization: Bearer vw_…" -d '{…}'
HTTP/1.1 403 Forbidden
content-type: application/json
{"detail":"token paused"}
Z lokalnej instancji, 23 września 2026 r. Host i klucz zastąpione, pozostałe nagłówki obcięte.
demo-agent, który wygenerował obciążenie z rys. 1: 37 żądań i 43 tys. wygenerowanych tokenów w godzinie widocznej na ekranie. Potem otwiera się jego panel God mode (opcjonalny podgląd na żywo promptów i odpowiedzi jednego klucza, domyślnie wyłączony), a odpowiedzi pojawiają się w miarę pisania. Prompty są nasze.
opencode-laptop, dwie gęste różowe kolumny to research-notebook. Zarejestrowano 23 września 2026 r.; nazwy kluczy zastąpiono. Przewiń obraz w bok, aby zobaczyć cały tydzień.Aby odejść, wystarczy zmienić base_url.
LM Warden obsługuje /v1/chat/completions i /v1/models, a /v1/models podaje max_model_len każdego modelu. Obsługuje też Anthropic Messages API pod /v1/messages, więc w Claude Code wystarczy ustawić ANTHROPIC_BASE_URL na główny adres URL instancji LM Warden (ścieżkę /v1/messages Claude Code dodaje sam), oraz OpenAI Responses API pod /v1/responses, więc Codex CLI może używać załadowanego przez ciebie modelu. Wagi leżą w zwykłym cache HuggingFace, który make export-hf-cache przekazuje ci jako archiwum tar, a dokładne argumenty wiersza poleceń (argv), z jakimi uruchomiono każdy silnik, są dostępne jednym żądaniem GET, więc działającą konfigurację można odtworzyć bez nas. Poniższy diff pokazuje zmiany potrzebne do przejścia na LM Warden; aby odejść, wystarczy cofnąć te same zmiany.
import os from openai import OpenAI client = OpenAI( - base_url="https://api.openai.com/v1", - api_key=os.environ["OPENAI_API_KEY"], + base_url="http://gpu-box:8080/v1", + api_key=os.environ["LM_WARDEN_KEY"], # a vw_ key from API tokens ) reply = client.chat.completions.create( - model="gpt-4o-mini", + model="gpt-oss-20b", # the served name of a model you loaded messages=[{"role": "user", "content": "What is a KV cache?"}], )