Gateway
कॉन्फ़िगरेशन
OpenClaw वैकल्पिक JSON5 config को ~/.openclaw/openclaw.json से पढ़ता है।
सक्रिय config पथ एक सामान्य फ़ाइल होना चाहिए। Symlink किए गए openclaw.json
लेआउट OpenClaw-स्वामित्व वाले लिखने के लिए समर्थित नहीं हैं; atomic write symlink को
सुरक्षित रखने के बजाय पथ को बदल सकता है। यदि आप config को default state directory से बाहर रखते हैं, तो
OPENCLAW_CONFIG_PATH को सीधे वास्तविक फ़ाइल पर पॉइंट करें।
यदि फ़ाइल अनुपस्थित है, तो OpenClaw सुरक्षित default का उपयोग करता है। config जोड़ने के सामान्य कारण:
- channel कनेक्ट करें और नियंत्रित करें कि bot को कौन message कर सकता है
- model, tool, sandboxing, या automation (cron, hooks) सेट करें
- session, media, networking, या UI को tune करें
हर उपलब्ध field के लिए पूर्ण संदर्भ देखें।
Agents और automation को config संपादित करने से पहले सटीक field-स्तरीय
docs के लिए config.schema.lookup का उपयोग करना चाहिए। इस पेज का उपयोग task-oriented guidance के लिए और
व्यापक field map और defaults के लिए
Configuration reference का उपयोग करें।
न्यूनतम config
// ~/.openclaw/openclaw.json{ agents: { defaults: { workspace: "~/.openclaw/workspace" } }, channels: { whatsapp: { allowFrom: ["+15555550123"] } },}config संपादित करना
Interactive wizard
openclaw onboard # full onboarding flowopenclaw configure # config wizardCLI (one-liners)
openclaw config get agents.defaults.workspaceopenclaw config set agents.defaults.heartbeat.every "2h"openclaw config unset plugins.entries.brave.config.webSearch.apiKeyControl UI
http://127.0.0.1:18789 खोलें और Config tab का उपयोग करें।
Control UI live config schema से एक form render करता है, जिसमें field
title / description docs metadata के साथ plugin और channel schemas भी
उपलब्ध होने पर शामिल होते हैं, और escape hatch के रूप में Raw JSON editor होता है। Drill-down
UIs और अन्य tooling के लिए, gateway config.schema.lookup भी expose करता है ताकि
एक path-scoped schema node और immediate child summaries fetch किए जा सकें।
Direct edit
~/.openclaw/openclaw.json को सीधे संपादित करें। Gateway फ़ाइल को watch करता है और changes अपने-आप apply करता है (hot reload देखें)।
Strict validation
openclaw config schema Control UI और validation द्वारा उपयोग किया जाने वाला canonical JSON Schema print करता है।
config.schema.lookup drill-down tooling के लिए एक path-scoped node और
child summaries fetch करता है। Field title/description docs metadata
nested objects, wildcard (*), array-item ([]), और anyOf/
oneOf/allOf branches तक carry through होता है। Runtime plugin और channel schemas तब merge होते हैं जब
manifest registry load होती है।
जब validation fail होता है:
- Gateway boot नहीं करता
- केवल diagnostic commands काम करते हैं (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - सटीक issues देखने के लिए
openclaw doctorचलाएँ - repairs apply करने के लिए
openclaw doctor --fix(या--yes) चलाएँ
Gateway हर successful startup के बाद एक trusted last-known-good copy रखता है,
लेकिन startup और hot reload इसे automatically restore नहीं करते। यदि openclaw.json
validation में fail होता है (plugin-local validation सहित), तो Gateway startup fail होता है या
reload skip हो जाता है और current runtime last accepted config रखता है।
prefixed/clobbered config repair करने या last-known-good copy restore करने के लिए
openclaw doctor --fix (या --yes) चलाएँ। जब candidate में *** जैसे
redacted secret placeholders होते हैं, तो last-known-good में promotion skip हो जाता है।
सामान्य tasks
channel सेट करें (WhatsApp, Telegram, Discord, आदि)
प्रत्येक channel का अपना config section channels.<provider> के अंतर्गत होता है। setup steps के लिए dedicated channel page देखें:
- WhatsApp -
channels.whatsapp - Telegram -
channels.telegram - Discord -
channels.discord - Feishu -
channels.feishu - Google Chat -
channels.googlechat - Microsoft Teams -
channels.msteams - Slack -
channels.slack - Signal -
channels.signal - iMessage -
channels.imessage - Mattermost -
channels.mattermost
सभी channels समान DM policy pattern साझा करते हैं:
{ channels: { telegram: { enabled: true, botToken: "123:abc", dmPolicy: "pairing", // pairing | allowlist | open | disabled allowFrom: ["tg:123"], // only for allowlist/open }, },}models चुनें और configure करें
primary model और optional fallbacks सेट करें:
{ agents: { defaults: { model: { primary: "anthropic/claude-sonnet-4-6", fallbacks: ["openai/gpt-5.4"], }, models: { "anthropic/claude-sonnet-4-6": { alias: "Sonnet" }, "openai/gpt-5.4": { alias: "GPT" }, }, }, },}agents.defaults.modelsmodel catalog define करता है और/modelके लिए allowlist की तरह काम करता है;provider/*entries dynamic model discovery का उपयोग जारी रखते हुए/model,/models, और model pickers को selected providers तक filter करती हैं।- existing models हटाए बिना allowlist entries जोड़ने के लिए
openclaw config set agents.defaults.models '<json>' --strict-json --mergeका उपयोग करें। Plain replacements जो entries हटाएँगे, reject कर दिए जाते हैं जब तक आप--replacepass नहीं करते। - Model refs
provider/modelformat का उपयोग करते हैं (जैसेanthropic/claude-opus-4-6)। agents.defaults.imageMaxDimensionPxtranscript/tool image downscaling नियंत्रित करता है (default1200); कम values आम तौर पर screenshot-heavy runs में vision-token usage घटाती हैं।- chat में models switch करने के लिए Models CLI और auth rotation तथा fallback behavior के लिए Model Failover देखें।
- custom/self-hosted providers के लिए, reference में Custom providers देखें।
नियंत्रित करें कि bot को कौन message कर सकता है
DM access प्रति channel dmPolicy के माध्यम से नियंत्रित होता है:
"pairing"(default): unknown senders को approve करने के लिए one-time pairing code मिलता है"allowlist": केवलallowFrom(या paired allow store) में मौजूद senders"open": सभी inbound DMs allow करें (allowFrom: ["*"]आवश्यक)"disabled": सभी DMs ignore करें
groups के लिए, groupPolicy + groupAllowFrom या channel-specific allowlists का उपयोग करें।
per-channel details के लिए full reference देखें।
group chat mention gating सेट करें
Group messages default रूप से mention require करते हैं। प्रति agent trigger patterns configure करें। सामान्य group/channel replies automatically post होते हैं; shared rooms के लिए message-tool path में opt in करें जहाँ agent को तय करना चाहिए कि कब बोलना है:
{ messages: { visibleReplies: "automatic", // set "message_tool" to require message-tool sends everywhere groupChat: { visibleReplies: "message_tool", // opt-in; visible output requires message(action=send) unmentionedInbound: "room_event", // unmentioned always-on group chatter is quiet context }, }, agents: { list: [ { id: "main", groupChat: { mentionPatterns: ["@openclaw", "openclaw"], }, }, ], }, channels: { whatsapp: { groups: { "*": { requireMention: true } }, }, },}- Metadata mentions: native @-mentions (WhatsApp tap-to-mention, Telegram @bot, आदि)
- Text patterns:
mentionPatternsमें safe regex patterns - Visible replies:
messages.visibleRepliesglobally message-tool sends require कर सकता है;messages.groupChat.visibleRepliesgroups/channels के लिए उसे override करता है। - visible reply modes, per-channel overrides, और self-chat mode के लिए full reference देखें।
प्रति agent skills restrict करें
shared baseline के लिए agents.defaults.skills का उपयोग करें, फिर specific
agents को agents.list[].skills से override करें:
{ agents: { defaults: { skills: ["github", "weather"], }, list: [ { id: "writer" }, // inherits github, weather { id: "docs", skills: ["docs-search"] }, // replaces defaults { id: "locked-down", skills: [] }, // no skills ], },}- default रूप से unrestricted skills के लिए
agents.defaults.skillsomit करें। - defaults inherit करने के लिए
agents.list[].skillsomit करें। - no skills के लिए
agents.list[].skills: []सेट करें। - Skills, Skills config, और Configuration Reference देखें।
gateway channel health monitoring tune करें
नियंत्रित करें कि stale दिखने वाले channels को gateway कितनी aggressively restart करता है:
{ gateway: { channelHealthCheckMinutes: 5, channelStaleEventThresholdMinutes: 30, channelMaxRestartsPerHour: 10, }, channels: { telegram: { healthMonitor: { enabled: false }, accounts: { alerts: { healthMonitor: { enabled: true }, }, }, }, },}- health-monitor restarts globally disable करने के लिए
gateway.channelHealthCheckMinutes: 0सेट करें। channelStaleEventThresholdMinutescheck interval से greater than or equal होना चाहिए।- global monitor disable किए बिना किसी एक channel या account के लिए auto-restarts disable करने हेतु
channels.<provider>.healthMonitor.enabledयाchannels.<provider>.accounts.<id>.healthMonitor.enabledका उपयोग करें। - operational debugging के लिए Health Checks और सभी fields के लिए full reference देखें।
gateway WebSocket handshake timeout tune करें
loaded या low-powered hosts पर pre-auth WebSocket handshake पूरा करने के लिए local clients को अधिक समय दें:
{ gateway: { handshakeTimeoutMs: 30000, },}- Default
15000milliseconds है। OPENCLAW_HANDSHAKE_TIMEOUT_MSअभी भी one-off service या shell overrides के लिए precedence लेता है।- पहले startup/event-loop stalls ठीक करना prefer करें; यह knob उन hosts के लिए है जो healthy हैं लेकिन warmup के दौरान slow हैं।
sessions और resets configure करें
Sessions conversation continuity और isolation नियंत्रित करते हैं:
{ session: { dmScope: "per-channel-peer", // recommended for multi-user threadBindings: { enabled: true, idleHours: 24, maxAgeHours: 0, }, reset: { mode: "daily", atHour: 4, idleMinutes: 120, }, },}dmScope:main(साझा) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: थ्रेड-बाउंड सत्र रूटिंग के लिए वैश्विक डिफ़ॉल्ट (Discord/focus,/unfocus,/agents,/session idle, और/session max-ageका समर्थन करता है)।- स्कोपिंग, पहचान लिंक, और भेजने की नीति के लिए सत्र प्रबंधन देखें।
- सभी फ़ील्ड के लिए पूर्ण संदर्भ देखें।
सैंडबॉक्सिंग सक्षम करें
एजेंट सत्रों को अलग-थलग सैंडबॉक्स रनटाइम में चलाएँ:
{ agents: { defaults: { sandbox: { mode: "non-main", // off | non-main | all scope: "agent", // session | agent | shared }, }, },}पहले इमेज बनाएँ - स्रोत checkout से scripts/sandbox-setup.sh चलाएँ, या npm इंस्टॉल से सैंडबॉक्सिंग § इमेज और सेटअप में दिया गया इनलाइन docker build कमांड देखें।
पूर्ण गाइड के लिए सैंडबॉक्सिंग और सभी विकल्पों के लिए पूर्ण संदर्भ देखें।
आधिकारिक iOS बिल्ड के लिए रिले-समर्थित पुश सक्षम करें
सार्वजनिक App Store बिल्ड के लिए रिले-समर्थित पुश होस्ट किए गए OpenClaw रिले का उपयोग करता है: https://ios-push-relay.openclaw.ai।
कस्टम रिले डिप्लॉयमेंट के लिए जानबूझकर अलग iOS बिल्ड/डिप्लॉयमेंट पथ आवश्यक है, जिसका रिले URL Gateway रिले URL से मेल खाता हो। यदि आप कस्टम रिले बिल्ड का उपयोग कर रहे हैं, तो इसे Gateway कॉन्फ़िग में सेट करें:
{ gateway: { push: { apns: { relay: { baseUrl: "https://relay.example.com", // Optional. Default: 10000 timeoutMs: 10000, }, }, }, },}CLI समकक्ष:
openclaw config set gateway.push.apns.relay.baseUrl https://relay.example.comयह क्या करता है:
- Gateway को बाहरी रिले के माध्यम से
push.test, जगाने वाले संकेत, और पुनः-कनेक्ट जगाने वाले संकेत भेजने देता है। - जोड़ी गई iOS ऐप द्वारा फ़ॉरवर्ड किए गए पंजीकरण-स्कोप वाले भेजने के अनुदान का उपयोग करता है। Gateway को डिप्लॉयमेंट-व्यापी रिले टोकन की आवश्यकता नहीं होती।
- प्रत्येक रिले-समर्थित पंजीकरण को उस Gateway पहचान से बाँधता है जिससे iOS ऐप जोड़ी गई थी, ताकि कोई दूसरा Gateway संग्रहीत पंजीकरण का पुनः उपयोग न कर सके।
- स्थानीय/मैनुअल iOS बिल्ड को सीधे APNs पर रखता है। रिले-समर्थित भेजना केवल उन आधिकारिक वितरित बिल्ड पर लागू होता है जिन्होंने रिले के माध्यम से पंजीकरण किया।
- iOS बिल्ड में बेक किए गए रिले बेस URL से मेल खाना चाहिए, ताकि पंजीकरण और भेजने वाला ट्रैफ़िक उसी रिले डिप्लॉयमेंट तक पहुँचे।
एंड-टू-एंड प्रवाह:
- आधिकारिक iOS ऐप इंस्टॉल करें।
- वैकल्पिक:
gateway.push.apns.relay.baseUrlको Gateway पर केवल तब कॉन्फ़िगर करें जब जानबूझकर अलग कस्टम रिले बिल्ड का उपयोग कर रहे हों। - iOS ऐप को Gateway से पेयर करें और Node तथा ऑपरेटर सत्रों को कनेक्ट होने दें।
- iOS ऐप Gateway पहचान प्राप्त करता है, App Attest और ऐप रसीद का उपयोग करके रिले के साथ पंजीकरण करता है, और फिर रिले-समर्थित
push.apns.registerपेलोड को पेयर किए गए Gateway पर प्रकाशित करता है। - Gateway रिले हैंडल और भेजने का अनुदान संग्रहीत करता है, फिर उन्हें
push.test, जगाने वाले संकेत, और पुनः-कनेक्ट जगाने वाले संकेतों के लिए उपयोग करता है।
संचालन संबंधी नोट्स:
- यदि आप iOS ऐप को किसी अलग Gateway पर स्विच करते हैं, तो ऐप को पुनः कनेक्ट करें ताकि वह उस Gateway से बँधा नया रिले पंजीकरण प्रकाशित कर सके।
- यदि आप नया iOS बिल्ड शिप करते हैं जो किसी अलग रिले डिप्लॉयमेंट की ओर संकेत करता है, तो ऐप पुराने रिले ओरिजिन का पुनः उपयोग करने के बजाय अपने कैश किए गए रिले पंजीकरण को रीफ़्रेश करता है।
संगतता नोट:
OPENCLAW_APNS_RELAY_BASE_URLऔरOPENCLAW_APNS_RELAY_TIMEOUT_MSअभी भी अस्थायी env ओवरराइड के रूप में काम करते हैं।- कस्टम Gateway रिले URL को iOS बिल्ड में बेक किए गए रिले बेस URL से मेल खाना चाहिए। सार्वजनिक App Store रिलीज़ लेन कस्टम iOS रिले URL ओवरराइड को अस्वीकार करती है।
OPENCLAW_APNS_RELAY_ALLOW_HTTP=trueकेवल loopback विकास के लिए बचाव मार्ग बना रहता है; HTTP रिले URL को कॉन्फ़िग में स्थायी न रखें।
एंड-टू-एंड प्रवाह के लिए iOS ऐप और रिले सुरक्षा मॉडल के लिए प्रमाणीकरण और भरोसा प्रवाह देखें।
Heartbeat सेट अप करें (आवधिक चेक-इन)
{ agents: { defaults: { heartbeat: { every: "30m", target: "last", }, }, },}every: अवधि स्ट्रिंग (30m,2h)। अक्षम करने के लिए0mसेट करें।target:last|none|<channel-id>(उदाहरण के लिएdiscord,matrix,telegram, याwhatsapp)directPolicy: DM-शैली Heartbeat लक्ष्यों के लिएallow(डिफ़ॉल्ट) याblock- पूर्ण गाइड के लिए Heartbeat देखें।
Cron जॉब कॉन्फ़िगर करें
{ cron: { enabled: true, maxConcurrentRuns: 8, // default; cron dispatch + isolated cron agent-turn execution sessionRetention: "24h", runLog: { maxBytes: "2mb", keepLines: 2000, }, },}sessionRetention:sessions.jsonसे पूर्ण हुए अलग-थलग रन सत्र हटाएँ (डिफ़ॉल्ट24h; अक्षम करने के लिएfalseसेट करें)।runLog: प्रति जॉब बनाए रखी गई Cron रन-इतिहास पंक्तियाँ हटाएँ। पुराने फ़ाइल-समर्थित रन लॉग के लिएmaxBytesअभी भी स्वीकार किया जाता है।- फ़ीचर अवलोकन और CLI उदाहरणों के लिए Cron जॉब देखें।
Webhook सेट अप करें (हुक)
Gateway पर HTTP Webhook एंडपॉइंट सक्षम करें:
{ hooks: { enabled: true, token: "shared-secret", path: "/hooks", defaultSessionKey: "hook:ingress", allowRequestSessionKey: false, allowedSessionKeyPrefixes: ["hook:"], mappings: [ { match: { path: "gmail" }, action: "agent", agentId: "main", deliver: true, }, ], },}सुरक्षा नोट:
- सभी हुक/Webhook पेलोड सामग्री को अविश्वसनीय इनपुट मानें।
- समर्पित
hooks.tokenका उपयोग करें; सक्रिय Gateway auth secrets (gateway.auth.token/OPENCLAW_GATEWAY_TOKENयाgateway.auth.password/OPENCLAW_GATEWAY_PASSWORD) का पुनः उपयोग न करें। - हुक auth केवल हेडर-आधारित है (
Authorization: Bearer ...याx-openclaw-token); query-string टोकन अस्वीकार किए जाते हैं। hooks.path/नहीं हो सकता; Webhook इनग्रेस को/hooksजैसे समर्पित सबपाथ पर रखें।- असुरक्षित-सामग्री बायपास फ़्लैग (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent) को अक्षम रखें, जब तक कि सीमित दायरे में डिबगिंग न कर रहे हों। - यदि आप
hooks.allowRequestSessionKeyसक्षम करते हैं, तो कॉलर-चयनित सत्र कुंजियों को सीमित करने के लिएhooks.allowedSessionKeyPrefixesभी सेट करें। - हुक-चालित एजेंटों के लिए, मजबूत आधुनिक मॉडल tiers और सख्त टूल नीति को प्राथमिकता दें (उदाहरण के लिए केवल मैसेजिंग, और जहाँ संभव हो वहाँ सैंडबॉक्सिंग)।
सभी मैपिंग विकल्पों और Gmail इंटीग्रेशन के लिए पूर्ण संदर्भ देखें।
मल्टी-एजेंट रूटिंग कॉन्फ़िगर करें
अलग-अलग वर्कस्पेस और सत्रों के साथ कई अलग-थलग एजेंट चलाएँ:
{ agents: { list: [ { id: "home", default: true, workspace: "~/.openclaw/workspace-home" }, { id: "work", workspace: "~/.openclaw/workspace-work" }, ], }, bindings: [ { agentId: "home", match: { channel: "whatsapp", accountId: "personal" } }, { agentId: "work", match: { channel: "whatsapp", accountId: "biz" } }, ],}बाइंडिंग नियमों और प्रति-एजेंट एक्सेस प्रोफ़ाइल के लिए मल्टी-एजेंट और पूर्ण संदर्भ देखें।
कॉन्फ़िग को कई फ़ाइलों में विभाजित करें ($include)
बड़े कॉन्फ़िग व्यवस्थित करने के लिए $include का उपयोग करें:
// ~/.openclaw/openclaw.json{ gateway: { port: 18789 }, agents: { $include: "./agents.json5" }, broadcast: { $include: ["./clients/a.json5", "./clients/b.json5"], },}- एकल फ़ाइल: शामिल ऑब्जेक्ट को बदल देती है
- फ़ाइलों की ऐरे: क्रम में डीप-मर्ज की जाती है (बाद वाली जीतती है)
- सिब्लिंग कुंजियाँ: includes के बाद मर्ज की जाती हैं (शामिल मानों को ओवरराइड करती हैं)
- नेस्टेड includes: 10 स्तरों की गहराई तक समर्थित
- सापेक्ष पथ: शामिल करने वाली फ़ाइल के सापेक्ष रिज़ॉल्व किए जाते हैं
- पथ फ़ॉर्मेट: include पथों में null bytes नहीं होने चाहिए और रिज़ॉल्यूशन से पहले और बाद में 4096 वर्णों से सख्ती से छोटे होने चाहिए
- OpenClaw-स्वामित्व वाले लेखन: जब कोई लेखन केवल एक top-level सेक्शन बदलता है
जो
plugins: { $include: "./plugins.json5" }जैसे single-file include द्वारा समर्थित हो, OpenClaw उस शामिल फ़ाइल को अपडेट करता है औरopenclaw.jsonको जस का तस छोड़ देता है - असमर्थित write-through: root includes, include arrays, और sibling overrides वाले includes OpenClaw-स्वामित्व वाले लेखन के लिए कॉन्फ़िग को flatten करने के बजाय fail closed करते हैं
- सीमाबद्धता:
$includeपथों को उस डायरेक्टरी के अंतर्गत रिज़ॉल्व होना चाहिए जिसमेंopenclaw.jsonहै। मशीनों या उपयोगकर्ताओं के बीच tree साझा करने के लिए,OPENCLAW_INCLUDE_ROOTSको अतिरिक्त डायरेक्टरियों की path-list (:POSIX पर,;Windows पर) पर सेट करें जिन्हें includes संदर्भित कर सकते हैं। Symlinks को रिज़ॉल्व करके फिर से जाँचा जाता है, इसलिए जो पथ शाब्दिक रूप से config dir में रहता है लेकिन जिसका वास्तविक target हर allowed root से बाहर निकलता है, वह फिर भी अस्वीकार किया जाता है। - त्रुटि प्रबंधन: गुम फ़ाइलों, parse errors, circular includes, अमान्य पथ फ़ॉर्मेट, और अत्यधिक लंबाई के लिए स्पष्ट त्रुटियाँ
कॉन्फ़िग hot reload
Gateway ~/.openclaw/openclaw.json को देखता है और बदलावों को अपने-आप लागू करता है - अधिकांश सेटिंग्स के लिए मैनुअल restart की आवश्यकता नहीं होती।
सीधे फ़ाइल संपादन तब तक अविश्वसनीय माने जाते हैं जब तक वे validate न हो जाएँ। watcher
editor temp-write/rename churn के शांत होने की प्रतीक्षा करता है, अंतिम फ़ाइल पढ़ता है, और
अमान्य बाहरी संपादनों को openclaw.json दोबारा लिखे बिना अस्वीकार करता है। OpenClaw-स्वामित्व वाले config
writes लिखने से पहले वही schema gate उपयोग करते हैं; gateway.mode हटाने या
फ़ाइल को आधे से अधिक छोटा करने जैसे destructive clobbers अस्वीकार किए जाते हैं और
निरीक्षण के लिए .rejected.* के रूप में सहेजे जाते हैं।
यदि आपको config reload skipped (invalid config) दिखाई दे या startup Invalid config रिपोर्ट करे, तो config की जाँच करें, openclaw config validate चलाएँ, फिर मरम्मत के लिए openclaw doctor --fix चलाएँ। चेकलिस्ट के लिए Gateway समस्या निवारण
देखें।
Reload मोड
| मोड | व्यवहार |
|---|---|
hybrid (डिफ़ॉल्ट) |
सुरक्षित बदलावों को तुरंत hot-apply करता है। महत्वपूर्ण बदलावों के लिए अपने-आप restart करता है। |
hot |
केवल सुरक्षित बदलावों को hot-apply करता है। restart की आवश्यकता होने पर चेतावनी लॉग करता है - आप उसे संभालते हैं। |
restart |
किसी भी config बदलाव पर Gateway को restart करता है, चाहे वह सुरक्षित हो या नहीं। |
off |
फ़ाइल watching अक्षम करता है। बदलाव अगले मैनुअल restart पर प्रभावी होते हैं। |
{ gateway: { reload: { mode: "hybrid", debounceMs: 300 }, },}क्या hot-apply होता है बनाम किसे restart चाहिए
अधिकांश फ़ील्ड downtime के बिना hot-apply होते हैं। hybrid मोड में, restart-आवश्यक बदलाव अपने-आप संभाले जाते हैं।
| श्रेणी | फ़ील्ड | पुनरारंभ आवश्यक? |
|---|---|---|
| चैनल | channels.*, web (WhatsApp) - सभी अंतर्निहित और Plugin चैनल |
नहीं |
| एजेंट और मॉडल | agent, agents, models, routing |
नहीं |
| ऑटोमेशन | hooks, cron, agent.heartbeat |
नहीं |
| सत्र और संदेश | session, messages |
नहीं |
| टूल और मीडिया | tools, browser, skills, mcp, audio, talk |
नहीं |
| UI और विविध | ui, logging, identity, bindings |
नहीं |
| Gateway सर्वर | gateway.* (port, bind, auth, tailscale, TLS, HTTP) |
हाँ |
| इन्फ्रास्ट्रक्चर | discovery, plugins |
हाँ |
रीलोड योजना
जब आप $include के माध्यम से संदर्भित किसी स्रोत फ़ाइल को संपादित करते हैं, OpenClaw
रीलोड की योजना स्रोत-लिखित लेआउट से बनाता है, न कि समतल किए गए इन-मेमोरी दृश्य से।
इससे हॉट-रीलोड निर्णय (हॉट-अप्लाई बनाम पुनरारंभ) पूर्वानुमेय रहते हैं, भले ही कोई
एकल शीर्ष-स्तरीय सेक्शन अपनी अलग शामिल फ़ाइल में हो, जैसे
plugins: { $include: "./plugins.json5" }। यदि स्रोत लेआउट अस्पष्ट हो, तो रीलोड योजना सुरक्षित रूप से विफल होती है।
कॉन्फ़िग RPC (प्रोग्रामेटिक अपडेट)
Gateway API के ऊपर कॉन्फ़िग लिखने वाले टूलिंग के लिए, इस प्रवाह को प्राथमिकता दें:
- एक सबट्री का निरीक्षण करने के लिए
config.schema.lookup(उथला स्कीमा नोड + चाइल्ड सारांश) - मौजूदा स्नैपशॉट और
hashलाने के लिएconfig.get - आंशिक अपडेट के लिए
config.patch(JSON मर्ज पैच: ऑब्जेक्ट मर्ज होते हैं,nullहटाता है, ऐरे तभी बदलते हैं जबreplacePathsके साथ स्पष्ट रूप से पुष्टि की गई हो, यदि प्रविष्टियाँ हटाई जाएँगी) config.applyकेवल तब जब आप पूरा कॉन्फ़िग बदलना चाहते हों- स्पष्ट सेल्फ़-अपडेट और पुनरारंभ के लिए
update.run; जब पुनरारंभ के बाद वाले सत्र को एक फ़ॉलो-अप टर्न चलाना हो, तोcontinuationMessageशामिल करें - नवीनतम अपडेट पुनरारंभ सेंटिनल देखने और पुनरारंभ के बाद चल रहे संस्करण की पुष्टि करने के लिए
update.status
एजेंटों को सटीक फ़ील्ड-स्तरीय दस्तावेज़ और सीमाओं के लिए config.schema.lookup को
पहला पड़ाव मानना चाहिए। जब उन्हें व्यापक कॉन्फ़िग मैप, डिफ़ॉल्ट, या समर्पित
सब-सिस्टम संदर्भों के लिंक चाहिए हों, तो कॉन्फ़िगरेशन संदर्भ
का उपयोग करें।
आंशिक पैच का उदाहरण:
openclaw gateway call config.get --params '{}' # capture payload.hashopenclaw gateway call config.patch --params '{ "raw": "{ channels: { telegram: { groups: { \"*\": { requireMention: false } } } } }", "baseHash": "<hash>"}'config.apply और config.patch दोनों raw, baseHash, sessionKey,
note, और restartDelayMs स्वीकार करते हैं। जब कोई कॉन्फ़िग पहले से मौजूद हो,
तो दोनों विधियों के लिए baseHash आवश्यक है।
config.patch replacePaths भी स्वीकार करता है, जो उन कॉन्फ़िग पथों की ऐरे है जिनका ऐरे
प्रतिस्थापन जानबूझकर किया गया है। यदि कोई पैच मौजूदा ऐरे को कम प्रविष्टियों के साथ बदल या हटा देगा,
तो Gateway लिखाई को अस्वीकार कर देता है, जब तक कि वही सटीक पथ
replacePaths में न हो; ऐरे प्रविष्टियों के अंतर्गत नेस्टेड ऐरे [] का उपयोग करते हैं, जैसे
agents.list[].skills। यह कटे हुए config.get स्नैपशॉट को
रूटिंग या अनुमति-सूची ऐरे को चुपचाप मिटाने से रोकता है। जब आप
पूरा कॉन्फ़िग बदलना चाहते हों, तो config.apply का उपयोग करें।
पर्यावरण चर
OpenClaw पैरेंट प्रक्रिया से env vars पढ़ता है, साथ ही:
- मौजूदा कार्यशील डायरेक्टरी से
.env(यदि मौजूद हो) ~/.openclaw/.env(वैश्विक फ़ॉलबैक)
कोई भी फ़ाइल मौजूदा env vars को ओवरराइड नहीं करती। आप कॉन्फ़िग में इनलाइन env vars भी सेट कर सकते हैं:
{ env: { OPENROUTER_API_KEY: "sk-or-...", vars: { GROQ_API_KEY: "gsk-..." }, },}Shell env import (optional)
यदि सक्षम हो और अपेक्षित कुंजियाँ सेट न हों, तो OpenClaw आपका लॉगिन शेल चलाता है और केवल अनुपलब्ध कुंजियाँ आयात करता है:
{env: { shellEnv: { enabled: true, timeoutMs: 15000 },},}Env var समकक्ष: OPENCLAW_LOAD_SHELL_ENV=1
Env var substitution in config values
किसी भी कॉन्फ़िग स्ट्रिंग मान में ${VAR_NAME} के साथ env vars संदर्भित करें:
{gateway: { auth: { token: "${OPENCLAW_GATEWAY_TOKEN}" } },models: { providers: { custom: { apiKey: "${CUSTOM_API_KEY}" } } },}नियम:
- केवल अपरकेस नाम मेल खाते हैं:
[A-Z_][A-Z0-9_]* - अनुपलब्ध/खाली vars लोड समय पर त्रुटि फेंकते हैं
- शाब्दिक आउटपुट के लिए
$${VAR}से एस्केप करें $includeफ़ाइलों के अंदर काम करता है- इनलाइन प्रतिस्थापन:
"${BASE}/v1"→"https://api.example.com/v1"
Secret refs (env, file, exec)
SecretRef ऑब्जेक्ट का समर्थन करने वाले फ़ील्डों के लिए, आप उपयोग कर सकते हैं:
{models: { providers: { openai: { apiKey: { source: "env", provider: "default", id: "OPENAI_API_KEY" } }, },},skills: { entries: { "image-lab": { apiKey: { source: "file", provider: "filemain", id: "/skills/entries/image-lab/apiKey", }, }, },},channels: { googlechat: { serviceAccountRef: { source: "exec", provider: "vault", id: "channels/googlechat/serviceAccount", }, },},}SecretRef विवरण (env/file/exec के लिए secrets.providers सहित) सीक्रेट प्रबंधन में हैं।
समर्थित क्रेडेंशियल पथ SecretRef क्रेडेंशियल सतह में सूचीबद्ध हैं।
पूर्ण प्राथमिकता क्रम और स्रोतों के लिए पर्यावरण देखें।
पूर्ण संदर्भ
पूर्ण फ़ील्ड-दर-फ़ील्ड संदर्भ के लिए, कॉन्फ़िगरेशन संदर्भ देखें।
संबंधित: कॉन्फ़िगरेशन उदाहरण · कॉन्फ़िगरेशन संदर्भ · Doctor