Gateway
स्थानीय मॉडल सेवाएँ
models.providers.<id>.localService माँग पर प्रदाता-स्वामित्व वाला स्थानीय मॉडल सर्वर शुरू करता है। जब कोई मॉडल या एम्बेडिंग अनुरोध उस प्रदाता को चुनता है, तो OpenClaw स्वास्थ्य एंडपॉइंट की जाँच करता है, प्रक्रिया बंद होने पर उसे शुरू करता है, तत्परता की प्रतीक्षा करता है और फिर अनुरोध भेजता है। महँगे स्थानीय सर्वरों को पूरे दिन चालू रखने से बचने के लिए इसका उपयोग करें।
यह कैसे काम करता है
- कोई मॉडल या एम्बेडिंग अनुरोध कॉन्फ़िगर किए गए प्रदाता पर निर्धारित होता है।
- यदि उस प्रदाता में
localServiceहै, तो OpenClawhealthUrlकी जाँच करता है। - जाँच सफल होने पर OpenClaw पहले से चल रहे सर्वर का उपयोग करता है।
- जाँच विफल होने पर OpenClaw
commandकोargsके साथ शुरू करता है। - OpenClaw स्वास्थ्य एंडपॉइंट की जाँच तब तक करता रहता है, जब तक
readyTimeoutMsकी अवधि समाप्त नहीं हो जाती। - अनुरोध सामान्य मॉडल या एम्बेडिंग ट्रांसपोर्ट से होकर जाता है।
- यदि OpenClaw ने प्रक्रिया शुरू की है और
idleStopMsसेट है, तो अंतिम प्रगतिरत अनुरोध के उतनी अवधि तक निष्क्रिय रहने के बाद यह प्रक्रिया रोक देता है।
OpenClaw इसके लिए launchd, systemd, Docker या कोई डेमन इंस्टॉल नहीं करता। सर्वर उस OpenClaw प्रक्रिया की सामान्य चाइल्ड प्रक्रिया होता है जिसे सबसे पहले इसकी आवश्यकता पड़ी थी।
स्टार्टअप को प्रत्येक कॉन्फ़िगर किए गए प्रदाता और कमांड/आर्ग्युमेंट/पर्यावरण सेट के अनुसार क्रमबद्ध किया जाता है, इसलिए समान सेवा के लिए समवर्ती चैट और एम्बेडिंग अनुरोध डुप्लिकेट सर्वर शुरू नहीं करते। प्रतिक्रिया प्रबंधन पूरा होने तक प्रत्येक अनुरोध अपना अलग लीज़ बनाए रखता है, इसलिए निष्क्रियता के कारण शटडाउन प्रत्येक प्रगतिरत मॉडल और एम्बेडिंग अनुरोध के पूरा होने की प्रतीक्षा करता है। कॉन्फ़िगर किए गए प्रदाता उपनाम अलग बने रहते हैं: दो उपनाम समान Ollama, LM Studio या OpenAI-संगत अडैप्टर आईडी में समाहित हुए बिना अलग-अलग GPU होस्ट की ओर संकेत कर सकते हैं।
यदि किसी अन्य OpenClaw प्रक्रिया के पास उसी healthUrl पर पहले से स्वस्थ सर्वर है, तो यह प्रक्रिया उसे अपनाए बिना पुनः उपयोग करती है (प्रत्येक प्रक्रिया केवल उसी चाइल्ड प्रक्रिया को प्रबंधित करती है जिसे उसने स्वयं शुरू किया हो)। स्टार्टअप और निकास लॉग में समय-सीमित, संशोधित चाइल्ड-आउटपुट के अंतिम अंश तथा समय और निकास विवरण शामिल होते हैं; कॉन्फ़िगर किए गए पर्यावरण मान कभी प्रदर्शित नहीं किए जाते।
कॉन्फ़िगरेशन संरचना
{ models: { providers: { local: { baseUrl: "http://127.0.0.1:8000/v1", apiKey: "local-model", api: "openai-completions", timeoutSeconds: 300, localService: { command: "/absolute/path/to/server", args: ["--host", "127.0.0.1", "--port", "8000"], cwd: "/absolute/path/to/working-dir", env: { LOCAL_MODEL_CACHE: "/absolute/path/to/cache" }, healthUrl: "http://127.0.0.1:8000/v1/models", readyTimeoutMs: 180000, idleStopMs: 0, }, models: [ { id: "my-local-model", name: "My Local Model", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 131072, maxTokens: 8192, }, ], }, }, },}प्रदाता प्रविष्टि पर timeoutSeconds सेट करें (localService पर नहीं), ताकि धीमे कोल्ड स्टार्ट और लंबे जनरेशन डिफ़ॉल्ट मॉडल अनुरोध टाइमआउट तक न पहुँचें। जब भी आपका सर्वर बेस URL पर /models के अलावा किसी अन्य स्थान पर तत्परता प्रदर्शित करता हो, तो स्पष्ट healthUrl सेट करें।
फ़ील्ड
| फ़ील्ड | आवश्यक | विवरण |
|---|---|---|
command |
हाँ | निष्पादन योग्य फ़ाइल का पूर्ण पथ। शेल PATH में कोई खोज नहीं। |
args |
नहीं | प्रक्रिया आर्ग्युमेंट। कोई शेल विस्तार, पाइप, ग्लॉबिंग या उद्धरण नहीं। |
cwd |
नहीं | प्रक्रिया की कार्यशील डायरेक्टरी। |
env |
नहीं | OpenClaw प्रक्रिया के पर्यावरण पर मर्ज किए गए पर्यावरण चर। |
healthUrl |
नहीं | तत्परता URL। डिफ़ॉल्ट रूप से baseUrl, जिसके अंत में /models जोड़ा जाता है (http://127.0.0.1:8000/v1, http://127.0.0.1:8000/v1/models बन जाता है)। |
readyTimeoutMs |
नहीं | स्टार्टअप तत्परता की समय-सीमा। डिफ़ॉल्ट: 120000। |
idleStopMs |
नहीं | OpenClaw द्वारा शुरू की गई प्रक्रिया के निष्क्रिय शटडाउन में विलंब। 0 या इसे न देने पर प्रक्रिया OpenClaw के बंद होने तक चलती रहती है। |
Inferrs उदाहरण
Inferrs एक कस्टम OpenAI-संगत /v1 बैकएंड है, इसलिए समान localService API, inferrs प्रदाता प्रविष्टि के साथ काम करता है:
{ agents: { defaults: { model: { primary: "inferrs/google/gemma-4-E2B-it" }, }, }, models: { mode: "merge", providers: { inferrs: { baseUrl: "http://127.0.0.1:8080/v1", apiKey: "inferrs-local", api: "openai-completions", timeoutSeconds: 300, localService: { command: "/opt/homebrew/bin/inferrs", args: [ "serve", "google/gemma-4-E2B-it", "--host", "127.0.0.1", "--port", "8080", "--device", "metal", ], healthUrl: "http://127.0.0.1:8080/v1/models", readyTimeoutMs: 180000, idleStopMs: 0, }, models: [ { id: "google/gemma-4-E2B-it", name: "Gemma 4 E2B (inferrs)", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 131072, maxTokens: 4096, compat: { requiresStringContent: true }, }, ], }, }, },}command को OpenClaw चलाने वाली मशीन पर which inferrs के परिणाम से बदलें। Inferrs की पूरी सेटअप प्रक्रिया: Inferrs।
ds4 उदाहरण
{ models: { providers: { ds4: { baseUrl: "http://127.0.0.1:18000/v1", apiKey: "ds4-local", api: "openai-completions", timeoutSeconds: 300, localService: { command: "<DS4_DIR>/ds4-server", args: [ "--model", "<DS4_DIR>/ds4flash.gguf", "--host", "127.0.0.1", "--port", "18000", "--ctx", "32768", "--tokens", "128", ], cwd: "<DS4_DIR>", healthUrl: "http://127.0.0.1:18000/v1/models", readyTimeoutMs: 300000, idleStopMs: 0, }, models: [], }, }, },}पूर्ण सेटअप, कॉन्टेक्स्ट आकार निर्धारण और सत्यापन कमांड: ds4।