मुख्य सामग्री पर जाएं
स्थानीय मॉडल संभव हैं। वे हार्डवेयर, संदर्भ आकार, और prompt-injection बचाव की अपेक्षा भी बढ़ाते हैं — छोटे या आक्रामक रूप से quantized कार्ड संदर्भ को truncate करते हैं और सुरक्षा में रिसाव करते हैं। यह पेज उच्च-स्तरीय स्थानीय stacks और custom OpenAI-compatible स्थानीय servers के लिए opinionated guide है। सबसे कम friction वाली onboarding के लिए, LM Studio या Ollama और openclaw onboard से शुरू करें। उन स्थानीय servers के लिए जिन्हें केवल तब शुरू होना चाहिए जब किसी चयनित मॉडल को उनकी आवश्यकता हो, देखें स्थानीय मॉडल सेवाएं.

हार्डवेयर floor

ऊंचा लक्ष्य रखें: आरामदायक agent loop के लिए ≥2 maxed-out Mac Studios या equivalent GPU rig (~$30k+)। एक single 24 GB GPU केवल हल्के prompts के लिए उच्च latency पर काम करता है। हमेशा सबसे बड़ा / full-size variant जिसे आप host कर सकते हैं चलाएं; छोटे या heavily quantized checkpoints prompt-injection जोखिम बढ़ाते हैं (देखें सुरक्षा)।

backend चुनें

Backendकब उपयोग करें
ds4macOS Metal पर OpenAI-compatible tool calls के साथ स्थानीय DeepSeek V4 Flash
LM Studioपहली बार स्थानीय setup, GUI loader, native Responses API
LiteLLM / OAI-proxy / custom OpenAI-compatible proxyआप किसी अन्य model API को front करते हैं और चाहते हैं कि OpenClaw उसे OpenAI की तरह treat करे
MLX / vLLM / SGLangOpenAI-compatible HTTP endpoint के साथ high-throughput self-hosted serving
OllamaCLI workflow, model library, hands-off systemd service
जब backend इसका support करे (LM Studio करता है), Responses API (api: "openai-responses") का उपयोग करें। अन्यथा Chat Completions (api: "openai-completions") पर बने रहें।
WSL2 + Ollama + NVIDIA/CUDA users: आधिकारिक Ollama Linux installer Restart=always के साथ systemd service enable करता है। WSL2 GPU setups पर, autostart boot के दौरान last model को reload कर सकता है और host memory को pin कर सकता है। यदि आपकी WSL2 VM Ollama enable करने के बाद बार-बार restart होती है, तो देखें WSL2 crash loop.

अनुशंसित: LM Studio + बड़ा स्थानीय मॉडल (Responses API)

वर्तमान में सबसे अच्छा स्थानीय stack। LM Studio में बड़ा मॉडल load करें (उदाहरण के लिए, full-size Qwen, DeepSeek, या Llama build), local server enable करें (default http://127.0.0.1:1234), और reasoning को final text से अलग रखने के लिए Responses API का उपयोग करें।
{
  agents: {
    defaults: {
      model: { primary: "lmstudio/my-local-model" },
      models: {
        "anthropic/claude-opus-4-6": { alias: "Opus" },
        "lmstudio/my-local-model": { alias: "Local" },
      },
    },
  },
  models: {
    mode: "merge",
    providers: {
      lmstudio: {
        baseUrl: "http://127.0.0.1:1234/v1",
        apiKey: "lmstudio",
        api: "openai-responses",
        models: [
          {
            id: "my-local-model",
            name: "Local Model",
            reasoning: false,
            input: ["text"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 196608,
            maxTokens: 8192,
          },
        ],
      },
    },
  },
}
Setup checklist
  • LM Studio install करें: https://lmstudio.ai
  • LM Studio में, उपलब्ध सबसे बड़ा model build download करें (“small”/heavily quantized variants से बचें), server start करें, confirm करें कि http://127.0.0.1:1234/v1/models उसे list करता है।
  • my-local-model को LM Studio में दिखाए गए actual model ID से बदलें।
  • model को loaded रखें; cold-load startup latency जोड़ता है।
  • यदि आपका LM Studio build अलग है तो contextWindow/maxTokens adjust करें।
  • WhatsApp के लिए, Responses API पर टिके रहें ताकि केवल final text भेजा जाए।
स्थानीय चलाते समय भी hosted models configured रखें; models.mode: "merge" का उपयोग करें ताकि fallbacks उपलब्ध रहें।

Hybrid config: hosted primary, local fallback

{
  agents: {
    defaults: {
      model: {
        primary: "anthropic/claude-sonnet-4-6",
        fallbacks: ["lmstudio/my-local-model", "anthropic/claude-opus-4-6"],
      },
      models: {
        "anthropic/claude-sonnet-4-6": { alias: "Sonnet" },
        "lmstudio/my-local-model": { alias: "Local" },
        "anthropic/claude-opus-4-6": { alias: "Opus" },
      },
    },
  },
  models: {
    mode: "merge",
    providers: {
      lmstudio: {
        baseUrl: "http://127.0.0.1:1234/v1",
        apiKey: "lmstudio",
        api: "openai-responses",
        models: [
          {
            id: "my-local-model",
            name: "Local Model",
            reasoning: false,
            input: ["text"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 196608,
            maxTokens: 8192,
          },
        ],
      },
    },
  },
}

Local-first with hosted safety net

primary और fallback order को swap करें; वही providers block और models.mode: "merge" रखें ताकि local box down होने पर आप Sonnet या Opus पर fall back कर सकें।

Regional hosting / data routing

  • Hosted MiniMax/Kimi/GLM variants OpenRouter पर region-pinned endpoints (जैसे, US-hosted) के साथ भी मौजूद हैं। Anthropic/OpenAI fallbacks के लिए models.mode: "merge" का उपयोग करते हुए traffic को अपने चुने हुए jurisdiction में रखने के लिए वहां regional variant चुनें।
  • Local-only सबसे मजबूत privacy path रहता है; hosted regional routing वह middle ground है जब आपको provider features चाहिए लेकिन data flow पर control भी चाहिए।

अन्य OpenAI-compatible स्थानीय proxies

MLX (mlx_lm.server), vLLM, SGLang, LiteLLM, OAI-proxy, या custom gateways काम करते हैं यदि वे OpenAI-style /v1/chat/completions endpoint expose करते हैं। जब तक backend स्पष्ट रूप से /v1/responses support document न करे, Chat Completions adapter का उपयोग करें। ऊपर दिए provider block को अपने endpoint और model ID से बदलें:
{
  agents: {
    defaults: {
      model: { primary: "local/my-local-model" },
    },
  },
  models: {
    mode: "merge",
    providers: {
      local: {
        baseUrl: "http://127.0.0.1:8000/v1",
        apiKey: "sk-local",
        api: "openai-completions",
        timeoutSeconds: 300,
        models: [
          {
            id: "my-local-model",
            name: "Local Model",
            reasoning: false,
            input: ["text"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 120000,
            maxTokens: 8192,
          },
        ],
      },
    },
  },
}
यदि baseUrl वाले custom provider पर api omitted है, तो OpenClaw default रूप से openai-completions पर जाता है। Custom/local provider entries guarded model requests के लिए अपने exact configured baseUrl origin पर trust करती हैं, जिसमें loopback, LAN, tailnet, और private DNS hosts शामिल हैं। अन्य private origins के requests को अभी भी request.allowPrivateNetwork: true चाहिए; metadata/link-local origins explicit opt-in के बिना blocked रहते हैं। exact-origin trust से opt out करने के लिए इसे false set करें। models.providers.<id>.models[].id value provider-local है। वहां provider prefix include न करें। उदाहरण के लिए, mlx_lm.server --model mlx-community/Qwen3-30B-A3B-6bit के साथ शुरू किए गए MLX server को यह catalog id और model ref उपयोग करना चाहिए:
  • models.providers.mlx.models[].id: "mlx-community/Qwen3-30B-A3B-6bit"
  • agents.defaults.model.primary: "mlx/mlx-community/Qwen3-30B-A3B-6bit"
स्थानीय या proxied vision models पर input: ["text", "image"] set करें ताकि image attachments agent turns में inject हों। Interactive custom-provider onboarding common vision model IDs infer करता है और केवल unknown names के लिए पूछता है। Non-interactive onboarding वही inference उपयोग करता है; unknown vision IDs के लिए --custom-image-input या जब known-looking model आपके endpoint के पीछे text-only हो तो --custom-text-input उपयोग करें। models.mode: "merge" रखें ताकि hosted models fallbacks के रूप में उपलब्ध रहें। slow local या remote model servers के लिए agents.defaults.timeoutSeconds बढ़ाने से पहले models.providers.<id>.timeoutSeconds उपयोग करें। provider timeout केवल model HTTP requests पर apply होता है, जिसमें connect, headers, body streaming, और total guarded-fetch abort शामिल हैं। यदि agent या run timeout कम है, तो वह ceiling भी बढ़ाएं क्योंकि provider timeouts पूरे agent run को extend नहीं कर सकते।
custom OpenAI-compatible providers के लिए, apiKey: "ollama-local" जैसे non-secret local marker को persist करना स्वीकार्य है जब baseUrl loopback, private LAN, .local, या bare hostname पर resolve होता है। OpenClaw इसे missing key report करने के बजाय valid local credential मानता है। public hostname accept करने वाले किसी भी provider के लिए real value उपयोग करें।
local/proxied /v1 backends के लिए behavior note:
  • OpenClaw इन्हें proxy-style OpenAI-compatible routes मानता है, native OpenAI endpoints नहीं
  • native OpenAI-only request shaping यहां apply नहीं होती: कोई service_tier नहीं, कोई Responses store नहीं, कोई OpenAI reasoning-compat payload shaping नहीं, और कोई prompt-cache hints नहीं
  • hidden OpenClaw attribution headers (originator, version, User-Agent) इन custom proxy URLs पर inject नहीं किए जाते
stricter OpenAI-compatible backends के लिए compatibility notes:
  • कुछ servers Chat Completions पर केवल string messages[].content accept करते हैं, structured content-part arrays नहीं। उन endpoints के लिए models.providers.<provider>.models[].compat.requiresStringContent: true set करें।
  • कुछ local models standalone bracketed tool requests text के रूप में emit करते हैं, जैसे [tool_name] के बाद JSON और [END_TOOL_REQUEST]। OpenClaw उन्हें real tool calls में केवल तब promote करता है जब name turn के लिए registered tool से exactly match करता है; otherwise block को unsupported text माना जाता है और user-visible replies से hidden रखा जाता है।
  • यदि कोई model JSON, XML, या ReAct-style text emit करता है जो tool call जैसा दिखता है लेकिन provider ने structured invocation emit नहीं किया, तो OpenClaw उसे text के रूप में छोड़ता है और run id, provider/model, detected pattern, और उपलब्ध होने पर tool name के साथ warning log करता है। इसे provider/model tool-call incompatibility मानें, completed tool run नहीं।
  • यदि tools run होने के बजाय assistant text के रूप में दिखाई देते हैं, उदाहरण के लिए raw JSON, XML, ReAct syntax, या provider response में empty tool_calls array, तो पहले verify करें कि server tool-call-capable chat template/parser उपयोग कर रहा है। उन OpenAI-compatible Chat Completions backends के लिए जिनका parser केवल tool use forced होने पर काम करता है, text parsing पर rely करने के बजाय per-model request override set करें:
    {
      agents: {
        defaults: {
          models: {
            "local/my-local-model": {
              params: {
                extra_body: {
                  tool_choice: "required",
                },
              },
            },
          },
        },
      },
    }
    
    इसका उपयोग केवल उन models/sessions के लिए करें जहां हर normal turn को tool call करना चाहिए। यह OpenClaw के default proxy value tool_choice: "auto" को override करता है। local/my-local-model को openclaw models list द्वारा दिखाए गए exact provider/model ref से बदलें।
    openclaw config set agents.defaults.models '{"local/my-local-model":{"params":{"extra_body":{"tool_choice":"required"}}}}' --strict-json --merge
    
  • यदि custom OpenAI-compatible model built-in profile से आगे OpenAI reasoning efforts accept करता है, तो उन्हें model compat block पर declare करें। यहां "xhigh" जोड़ने से /think xhigh, session pickers, Gateway validation, और llm-task validation उस configured provider/model ref के लिए level expose करते हैं:
    {
      models: {
        providers: {
          local: {
            baseUrl: "http://127.0.0.1:8000/v1",
            apiKey: "sk-local",
            api: "openai-responses",
            models: [
              {
                id: "gpt-5.4",
                name: "GPT 5.4 via local proxy",
                reasoning: true,
                input: ["text"],
                cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
                contextWindow: 196608,
                maxTokens: 8192,
                compat: {
                  supportedReasoningEfforts: ["low", "medium", "high", "xhigh"],
                  reasoningEffortMap: { xhigh: "xhigh" },
                },
              },
            ],
          },
        },
      },
    }
    

छोटे या अधिक सख्त बैकएंड

यदि मॉडल ठीक से लोड होता है लेकिन पूरे एजेंट टर्न ठीक से व्यवहार नहीं करते, तो ऊपर से नीचे तक काम करें — पहले ट्रांसपोर्ट की पुष्टि करें, फिर सतह को सीमित करें।
  1. पुष्टि करें कि स्थानीय मॉडल स्वयं जवाब देता है। कोई टूल नहीं, कोई एजेंट संदर्भ नहीं:
    openclaw infer model run --local --model <provider/model> --prompt "Reply with exactly: pong" --json
    
  2. Gateway रूटिंग की पुष्टि करें। केवल दिया गया प्रॉम्प्ट भेजता है — ट्रांसक्रिप्ट, AGENTS बूटस्ट्रैप, कॉन्टेक्स्ट-इंजन असेंबली, टूल, और बंडल किए गए MCP सर्वर छोड़ देता है, लेकिन फिर भी Gateway रूटिंग, प्रमाणीकरण, और प्रदाता चयन का अभ्यास करता है:
    openclaw infer model run --gateway --model <provider/model> --prompt "Reply with exactly: pong" --json
    
  3. लीन मोड आज़माएँ। यदि दोनों जाँचें पास होती हैं लेकिन वास्तविक एजेंट टर्न विकृत टूल कॉल या बहुत बड़े प्रॉम्प्ट के साथ विफल होते हैं, तो agents.defaults.experimental.localModelLean: true सक्षम करें। यह तीन सबसे भारी डिफ़ॉल्ट टूल (browser, cron, message) हटा देता है और बड़े टूल कैटलॉग को संरचित टूल खोज नियंत्रणों के पीछे डिफ़ॉल्ट कर देता है, उन रन को छोड़कर जिनमें सीधे message डिलीवरी सिमैंटिक्स रखना आवश्यक है। पूरी व्याख्या, इसे कब उपयोग करना है, और यह चालू है इसकी पुष्टि कैसे करें, इसके लिए प्रायोगिक सुविधाएँ → स्थानीय मॉडल लीन मोड देखें।
  4. अंतिम उपाय के रूप में टूल पूरी तरह अक्षम करें। यदि लीन मोड पर्याप्त नहीं है, तो उस मॉडल प्रविष्टि के लिए models.providers.<provider>.models[].compat.supportsTools: false सेट करें। एजेंट तब उस मॉडल पर टूल कॉल के बिना काम करेगा।
  5. इसके आगे, बाधा अपस्ट्रीम है। यदि लीन मोड और supportsTools: false के बाद भी बैकएंड केवल बड़े OpenClaw रन पर विफल होता है, तो शेष समस्या आमतौर पर अपस्ट्रीम मॉडल या सर्वर क्षमता होती है — कॉन्टेक्स्ट विंडो, GPU मेमोरी, kv-cache एविक्शन, या बैकएंड बग। उस बिंदु पर यह OpenClaw की ट्रांसपोर्ट परत नहीं है।

समस्या निवारण

  • Gateway प्रॉक्सी तक पहुँच सकता है? curl http://127.0.0.1:1234/v1/models
  • LM Studio मॉडल अनलोड हो गया है? फिर से लोड करें; कोल्ड स्टार्ट “हैंग” होने का आम कारण है।
  • स्थानीय सर्वर terminated, ECONNRESET कहता है, या टर्न के बीच में स्ट्रीम बंद कर देता है? OpenClaw डायग्नोस्टिक्स में कम-कार्डिनैलिटी model.call.error.failureKind के साथ OpenClaw प्रक्रिया RSS/हीप स्नैपशॉट रिकॉर्ड करता है। LM Studio/Ollama मेमोरी दबाव के लिए, उस टाइमस्टैम्प को सर्वर लॉग या macOS क्रैश / jetsam लॉग से मिलाएँ ताकि पुष्टि हो सके कि मॉडल सर्वर मारा गया था या नहीं।
  • OpenClaw कॉन्टेक्स्ट-विंडो प्रीफ्लाइट थ्रेशहोल्ड पहचानी गई मॉडल विंडो से निकालता है, या जब agents.defaults.contextTokens प्रभावी विंडो को कम करता है, तब अनकैप्ड मॉडल विंडो से। यह 20% से नीचे 8k फ़्लोर के साथ चेतावनी देता है। हार्ड ब्लॉक 4k फ़्लोर के साथ 10% थ्रेशहोल्ड का उपयोग करते हैं, और उन्हें प्रभावी कॉन्टेक्स्ट विंडो तक कैप किया जाता है ताकि बहुत बड़ा मॉडल मेटाडेटा अन्यथा मान्य उपयोगकर्ता कैप को अस्वीकार न कर सके। यदि आप उस प्रीफ्लाइट से टकराते हैं, तो सर्वर/मॉडल कॉन्टेक्स्ट सीमा बढ़ाएँ या बड़ा मॉडल चुनें।
  • कॉन्टेक्स्ट त्रुटियाँ? contextWindow कम करें या अपनी सर्वर सीमा बढ़ाएँ।
  • OpenAI-संगत सर्वर messages[].content ... expected a string लौटाता है? उस मॉडल प्रविष्टि पर compat.requiresStringContent: true जोड़ें।
  • OpenAI-संगत सर्वर validation.keys लौटाता है या कहता है कि संदेश प्रविष्टियाँ केवल role और content की अनुमति देती हैं? उस मॉडल प्रविष्टि पर compat.strictMessageKeys: true जोड़ें।
  • सीधे छोटे /v1/chat/completions कॉल काम करते हैं, लेकिन openclaw infer model run --local Gemma या किसी अन्य स्थानीय मॉडल पर विफल होता है? पहले प्रदाता URL, मॉडल रेफ, प्रमाणीकरण मार्कर, और सर्वर लॉग जाँचें; स्थानीय model run में एजेंट टूल शामिल नहीं होते। यदि स्थानीय model run सफल होता है लेकिन बड़े एजेंट टर्न विफल होते हैं, तो एजेंट टूल सतह को localModelLean या compat.supportsTools: false से घटाएँ।
  • टूल कॉल कच्चे JSON/XML/ReAct टेक्स्ट के रूप में दिखाई देते हैं, या प्रदाता खाली tool_calls ऐरे लौटाता है? ऐसा प्रॉक्सी न जोड़ें जो सहायक टेक्स्ट को अंधाधुंध टूल निष्पादन में बदल दे। पहले सर्वर चैट टेम्पलेट/पार्सर ठीक करें। यदि मॉडल केवल तब काम करता है जब टूल उपयोग मजबूर किया जाता है, तो ऊपर प्रति-मॉडल params.extra_body.tool_choice: "required" ओवरराइड जोड़ें और उस मॉडल प्रविष्टि का उपयोग केवल उन सत्रों के लिए करें जहाँ हर टर्न पर टूल कॉल अपेक्षित है।
  • सुरक्षा: स्थानीय मॉडल प्रदाता-पक्ष फ़िल्टर छोड़ते हैं; प्रॉम्प्ट इंजेक्शन के प्रभाव क्षेत्र को सीमित करने के लिए एजेंट को सीमित रखें और Compaction चालू रखें।

संबंधित