LM Warden

हर ऐप के लिए एक कुंजी, और हर कुंजी का एक पेज।

हर सहकर्मी, लैपटॉप, CI जॉब और एजेंट को उसकी अपनी कुंजी दें। कुंजी के पेज पर दिखता है कि उसने कितना उपयोग किया और उसके अनुरोधों ने क़तार में कितना इंतज़ार किया (मीडियन और p95), किसी भी समय-अवधि के लिए, जिसे आप ड्रैग करके चुनें या टाइप करें। कुंजी को ग्रेस अवधि के साथ रोटेट करें, और उसकी प्राथमिकता P0 से P9 तक सेट करें: प्रतीक्षा में P9 अनुरोध हमेशा P8 अनुरोध से पहले जाता है।

इसे रोकें, तो नए अनुरोध अस्वीकार होते हैं जबकि पहले से चल रहे अनुरोध पूरे हो जाते हैं:

$ 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"}

23 सितंबर 2026 के एक लोकल इंस्टेंस से। होस्ट और कुंजी बदली गई हैं, बाकी हेडर हटाए गए हैं।

चित्र 13demo-agent का पेज, वह कुंजी जिसने चित्र 1 का लोड चलाया: स्क्रीन पर दिख रहे घंटे में 37 अनुरोध और 43k जनरेट किए गए टोकन। फिर उसका God mode डॉक खुलता है (एक कुंजी के प्रॉम्प्ट और जवाब का लाइव व्यू, जिसे चालू करना पड़ता है, डिफ़ॉल्ट रूप से बंद) और उसके जवाब लिखे जाते-जाते स्ट्रीम होते हैं। प्रॉम्प्ट हमारे हैं।
Stats पेज का Requests चार्ट, पिछले 7 दिन, 16 से 23 सितंबर: हर अनुरोध का एक निशान, रंग API कुंजी से, आकार जनरेट किए गए टोकन से और रूप ख़त्म होने के कारण से, अवधि के सामने जो 100 ms से 10,000 s तक लॉग स्केल पर है। ज़्यादातर निशान 3 से 100 सेकंड के बीच हैं; एक कुंजी के दो घने स्तंभ एक सेकंड से कम से लेकर कई सौ सेकंड तक जाते हैं।
चित्र 14हर कुंजी के अनुरोध एक ही चार्ट पर, उसी Stats पेज से: पिछले 7 दिन, 28,906 अनुरोध, चार्ट पर हर पंद्रहवाँ अनुरोध दिखाया गया है। एक निशान एक अनुरोध है, रंग उसकी कुंजी से, आकार उसके जनरेट किए टोकन से और आकृति इससे कि वह कैसे ख़त्म हुआ, ऊँचाई लॉग स्केल पर उसकी अवधि। स्थिर एम्बर रंग opencode-laptop है, दो घने गुलाबी स्तंभ research-notebook हैं। 23 सितंबर 2026 को रिकॉर्ड किया गया; कुंजियों के नाम बदले गए हैं। पूरा हफ़्ता देखने के लिए इमेज को दाएँ-बाएँ स्क्रॉल करें।

छोड़कर जाना हो, तो बस base_url बदलना है।

यह /v1/chat/completions और /v1/models सपोर्ट करता है, और /v1/models हर मॉडल का max_model_len बताता है। यह /v1/messages पर Anthropic Messages API भी सपोर्ट करता है, इसलिए Claude Code ANTHROPIC_BASE_URL को warden के रूट URL पर सेट करता है (Claude Code /v1/messages पाथ ख़ुद जोड़ता है), और /v1/responses पर OpenAI Responses API भी, ताकि Codex CLI आपका लोड किया हुआ मॉडल इस्तेमाल कर सके। मॉडल के वेट (weights) एक सामान्य HuggingFace कैश में रहते हैं जिसे make export-hf-cache आपको tarball के रूप में देता है, और हर इंजन जिस सटीक argv से शुरू हुआ था वह सिर्फ़ एक GET अनुरोध से मिल जाता है, इसलिए चलता हुआ सेटअप हमारे बिना फिर से बनाया जा सकता है। नीचे दिखाया गया diff उल्टी दिशा में पढ़ें: यहाँ से हटने के लिए बस वही बदलाव वापस करने हैं।

  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?"}],
  )