Claude Code, आपके अपने GPU पर।
अपना Claude लॉगिन रखें और जिन मॉडल के नाम आपके नियमों में हैं उन्हें यहाँ चलाएँ, या इसे पूरी तरह लोकल चलाएँ।
एक ANTHROPIC_BASE_URL, और जवाब दो में से किसी एक जगह से आता है।
Claude Code जो भी अनुरोध Anthropic को भेजता है, वह या तो आपके प्लान की उपयोग सीमा में गिना जाता है या API कुंजी पर हर टोकन के हिसाब से बिल होता है, और उसका प्रॉम्प्ट, आपके कोड समेत, आपकी मशीन से बाहर जाता है। इनमें से कई अनुरोध छोटे होते हैं। अगर उनका जवाब आपके पास पहले से मौजूद कार्ड से दिया जाए, तो उनकी लागत बस बिजली है, वे आपकी सीमा में नहीं गिने जाते, और उनके प्रॉम्प्ट आपके होस्ट पर ही रहते हैं।
Claude ख़ुद यहाँ कभी नहीं चलता। एक नियम तय करता है कि किन Claude मॉडल के अनुरोधों का जवाब यह मशीन देगी, जैसे claude-haiku*, और फिर आपका लोड किया हुआ मॉडल उनकी जगह जवाब देता है, उसी नाम से जो Claude Code ने माँगा था। बाकी सब, Opus समेत, आपके अपने लॉगिन से बिना किसी बदलाव के, बाइट-दर-बाइट और स्ट्रीमिंग समेत, Anthropic को भेजा जाता है। आपकी warden कुंजी अपने अलग हेडर में जाती है, इसलिए आपके लॉगिन में कोई छेड़छाड़ नहीं होती, और जिस कुंजी पर “May relay to Anthropic” फ़्लैग नहीं लगा है, उसका कोई भी अनुरोध आगे नहीं भेजा जाता।
क्या छोटा मॉडल काफ़ी है? हमने जवाबों की गुणवत्ता नहीं मापी है, इसलिए यह हमारी राय है, बेंचमार्क नहीं। Claude Code हल्के बैकग्राउंड कामों के लिए अपना Haiku-स्तर का मॉडल इस्तेमाल करता है; उनके लिए, और सरल, साफ़-साफ़ बताए गए बदलावों के लिए, एक छोटा लोकल मॉडल ठीक विकल्प है। कई फ़ाइलों में फैले बदलावों, डीबगिंग और लंबी योजनाओं के लिए Sonnet और Opus को Anthropic पर ही रहने दें; जब तक आप कोई नियम नहीं जोड़ते, आख़िरी डिफ़ॉल्ट नियम यही करता है। बड़े कार्ड पर बड़ा मॉडल हो तो यह सीमा आगे खिसक जाती है; नीचे दिए गए हमारे Claude Code और रेप्लिका माप में 4B मॉडल इस्तेमाल हुआ था।
कॉन्टेक्स्ट का आकार चैट के हिसाब से नहीं, Claude Code के हिसाब से तय करें: हमारे सेशन में उसका पहला टर्न ही 38,167 टोकन का था, इसलिए लोकल मॉडल को 40k टोकन से काफ़ी ज़्यादा कॉन्टेक्स्ट चाहिए।
शब्दों में: Claude Code अनुरोध warden को भेजता है, Authorization में अपने Anthropic लॉगिन के साथ और X-LMWarden-Key में warden कुंजी के साथ। warden अपने नियम क्रम से आज़माता है। जिस मॉडल का नाम किसी नियम में है, उसका अनुरोध अनुवादित होता है, शेड्यूलर उसे क़तार में रखता है और रेप्लिका राउटर उसे एक vLLM रेप्लिका को भेजता है। कोई भी दूसरा अनुरोध, जैसे Opus, api.anthropic.com को भेजा जाता है, लॉगिन आगे भेजा जाता है और 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 टोकन तक बढ़ाने और fp8 KV कैश (अटेंशन कैश 8 बिट में, यानी आधी मेमोरी) के साथ, 16 GiB कार्ड पर 4B मॉडल ने वही टर्न 28 s में लोकल रूप से पूरा किया, जबकि पूरा 38k-टोकन प्रॉम्प्ट शुरू से पढ़ना पड़ा और कैश में अभी कुछ नहीं था। बातचीत के बाद वाले टर्न में प्रॉम्प्ट का ज़्यादातर हिस्सा इंजन के कैश में पहले से मिलता है: चित्र 4 में claude-haiku* नियम के लिए पहले बाइट तक का मीडियन समय 290 ms है।
इस मॉडल का ब्रेकर: closed
अनुरोध Anthropic को क्यों गया या अस्वीकार क्यों हुआ, कारण के हिसाब से
- प्रोटोकॉल
- Anthropic Messages
- सपोर्ट
- पूरा सपोर्ट
जिन Claude मॉडल के नाम आपके नियमों में हैं, वे यहीं चलते हैं; बाकी हर मॉडल और /v1 पाथ आपके अपने लॉगिन से Anthropic को जाता है। राउटर मोड में 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 चेतावनी दे सकता है कि मॉडल का नाम उसके कैटलॉग में नहीं है। यह सिर्फ़ जानकारी है: वह 200k की विंडो मान लेता है और उसी हिसाब से बातचीत को अपने-आप छोटा (कॉम्पैक्ट) करता है।
CLAUDE_CODE_MAX_CONTEXT_TOKENSको मॉडल की असली कॉन्टेक्स्ट विंडो पर सेट करें।
सेटअप
कंसोल में Connect ये फ़ाइलें आपके warden के पते, आपकी कुंजी और आपके चुने हुए मॉडल के साथ लिखता है। यहाँ ये प्लेसहोल्डर के साथ दी गई हैं।
Router: अपना Claude लॉगिन रखें
आपका Claude लॉगिन Anthropic को जाता रहता है; 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 अकाउंट के बिना)
हर मॉडल स्लॉट में आपका चुना हुआ लोड किया गया मॉडल होता है, और 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 की स्थिति)।