Gateway
कॉन्फ़िगरेशन
OpenClaw ~/.openclaw/openclaw.json से वैकल्पिक JSON5 कॉन्फ़िग पढ़ता है।
सक्रिय कॉन्फ़िग पथ एक नियमित फ़ाइल होना चाहिए। Symlink किए गए openclaw.json
लेआउट OpenClaw-स्वामित्व वाली writes के लिए समर्थित नहीं हैं; atomic write
symlink को सुरक्षित रखने के बजाय पथ को बदल सकती है। यदि आप कॉन्फ़िग को
डिफ़ॉल्ट state directory के बाहर रखते हैं, तो OPENCLAW_CONFIG_PATH को सीधे वास्तविक फ़ाइल पर इंगित करें।
यदि फ़ाइल मौजूद नहीं है, तो OpenClaw सुरक्षित डिफ़ॉल्ट इस्तेमाल करता है। कॉन्फ़िग जोड़ने के सामान्य कारण:
- चैनल कनेक्ट करें और नियंत्रित करें कि bot को कौन संदेश भेज सकता है
- मॉडल, tools, sandboxing, या automation (cron, hooks) सेट करें
- sessions, media, networking, या UI को ट्यून करें
हर उपलब्ध फ़ील्ड के लिए पूर्ण संदर्भ देखें।
Agents और automation को कॉन्फ़िग संपादित करने से पहले सटीक field-level
docs के लिए config.schema.lookup इस्तेमाल करना चाहिए। task-oriented मार्गदर्शन के लिए यह पेज और विस्तृत
field map और defaults के लिए
कॉन्फ़िगरेशन संदर्भ इस्तेमाल करें।
न्यूनतम कॉन्फ़िग
// ~/.openclaw/openclaw.json{ agents: { defaults: { workspace: "~/.openclaw/workspace" } }, channels: { whatsapp: { allowFrom: ["+15555550123"] } },}कॉन्फ़िग संपादित करना
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 खोलें और कॉन्फ़िग 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 करता है और बदलावों को अपने-आप लागू करता है (hot reload देखें)।
सख्त validation
openclaw config schema Control UI
और validation द्वारा इस्तेमाल किया जाने वाला canonical JSON Schema print करता है। config.schema.lookup drill-down tooling के लिए एक single path-scoped node और
child summaries fetch करता है। Field title/description docs metadata
nested objects, wildcard (*), array-item ([]), और anyOf/
oneOf/allOf branches तक carry होता है। Runtime plugin और channel schemas तब merge होते हैं जब
manifest registry loaded हो।
जब validation fail होता है:
- Gateway boot नहीं होता
- केवल diagnostic commands काम करती हैं (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - सटीक issues देखने के लिए
openclaw doctorचलाएँ - repairs लागू करने के लिए
openclaw doctor --fix(या--yes) चलाएँ
Gateway हर सफल startup के बाद एक trusted last-known-good copy रखता है,
लेकिन startup और hot reload उसे अपने-आप restore नहीं करते। यदि openclaw.json
validation fail करता है (plugin-local validation सहित), तो Gateway startup fail होता है या
reload skip हो जाता है और current runtime आखिरी 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
Set up a channel (WhatsApp, Telegram, Discord, etc.)
हर 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 }, },}Choose and configure models
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 करती हैं।- मौजूदा 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 देखें।
Control who can message the bot
DM access हर channel के लिए dmPolicy के जरिए नियंत्रित होता है:
"pairing"(default): unknown senders को approve करने के लिए one-time pairing code मिलता है"allowlist": केवलallowFromमें मौजूद senders (या paired allow store)"open": सभी inbound DMs allow करें (allowFrom: ["*"]आवश्यक)"disabled": सभी DMs ignore करें
groups के लिए, groupPolicy + groupAllowFrom या channel-specific allowlists इस्तेमाल करें।
per-channel details के लिए पूर्ण संदर्भ देखें।
Set up group chat mention gating
Group messages default रूप से mention require करते हैं। हर agent के लिए trigger patterns configure करें। सामान्य group/channel replies अपने-आप post होते हैं; shared rooms के लिए message-tool path opt into करें जहाँ 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 के लिए पूर्ण संदर्भ देखें।
Restrict skills per agent
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, और कॉन्फ़िगरेशन संदर्भ देखें।
Tune gateway channel health monitoring
Gateway stale दिखने वाले channels को कितनी 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 के लिए पूर्ण संदर्भ देखें।
Tune gateway WebSocket handshake timeout
loaded या low-powered hosts पर pre-auth WebSocket handshake पूरा करने के लिए local clients को अधिक समय दें:
{ gateway: { handshakeTimeoutMs: 30000, },}- Default
15000milliseconds है। - one-off service या shell overrides के लिए
OPENCLAW_HANDSHAKE_TIMEOUT_MSअब भी precedence लेता है। - पहले startup/event-loop stalls ठीक करना prefer करें; यह knob उन hosts के लिए है जो healthy हैं लेकिन warmup के दौरान slow हैं।
Configure sessions and resets
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का समर्थन करता है)।- स्कोपिंग, पहचान लिंक, और भेजने की नीति के लिए सत्र प्रबंधन देखें।
- सभी फ़ील्ड के लिए पूरा संदर्भ देखें।
Enable sandboxing
एजेंट सत्रों को अलग-थलग सैंडबॉक्स रनटाइम में चलाएं:
{ agents: { defaults: { sandbox: { mode: "non-main", // off | non-main | all scope: "agent", // session | agent | shared }, }, },}पहले इमेज बनाएं - स्रोत चेकआउट से scripts/sandbox-setup.sh चलाएं, या npm इंस्टॉल से सैंडबॉक्सिंग § इमेज और सेटअप में इनलाइन docker build कमांड देखें।
पूरी गाइड के लिए सैंडबॉक्सिंग और सभी विकल्पों के लिए पूरा संदर्भ देखें।
Enable relay-backed push for official iOS builds
सार्वजनिक App Store/TestFlight बिल्ड के लिए रिले-समर्थित पुश होस्ट किए गए 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 से मेल खाना चाहिए, ताकि रजिस्ट्रेशन और भेजने का ट्रैफ़िक उसी रिले डिप्लॉयमेंट तक पहुंचे।
एंड-टू-एंड प्रवाह:
- आधिकारिक/TestFlight 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 ऐप और रिले सुरक्षा मॉडल के लिए प्रमाणीकरण और भरोसा प्रवाह देखें।
Set up heartbeat (periodic check-ins)
{ 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 देखें।
Configure cron jobs
{ 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 जॉब देखें।
Set up webhooks (hooks)
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, }, ], },}सुरक्षा नोट:
- सभी hook/Webhook पेलोड सामग्री को अविश्वसनीय इनपुट मानें।
- समर्पित
hooks.tokenका उपयोग करें; सक्रिय Gateway auth सीक्रेट (gateway.auth.token/OPENCLAW_GATEWAY_TOKENयाgateway.auth.password/OPENCLAW_GATEWAY_PASSWORD) का पुनः उपयोग न करें। - Hook auth केवल हेडर-आधारित है (
Authorization: Bearer ...याx-openclaw-token); query-string टोकन अस्वीकार किए जाते हैं। hooks.path/नहीं हो सकता; Webhook इनग्रेस को/hooksजैसे समर्पित सबपाथ पर रखें।- असुरक्षित-सामग्री बायपास फ़्लैग (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent) अक्षम रखें, जब तक कि बहुत सीमित दायरे में डीबगिंग न कर रहे हों। - यदि आप
hooks.allowRequestSessionKeyसक्षम करते हैं, तो कॉलर-चयनित सत्र कुंजियों को सीमित करने के लिएhooks.allowedSessionKeyPrefixesभी सेट करें। - Hook-चालित एजेंटों के लिए, मजबूत आधुनिक मॉडल टियर और सख्त टूल नीति को प्राथमिकता दें (उदाहरण के लिए केवल मैसेजिंग और जहां संभव हो सैंडबॉक्सिंग)।
सभी मैपिंग विकल्पों और Gmail इंटीग्रेशन के लिए पूरा संदर्भ देखें।
Configure multi-agent routing
अलग वर्कस्पेस और सत्रों के साथ कई अलग-थलग एजेंट चलाएं:
{ 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" } }, ],}बाइंडिंग नियमों और प्रति-एजेंट एक्सेस प्रोफ़ाइल के लिए Multi-Agent और पूरा संदर्भ देखें।
Split config into multiple files ($include)
बड़े कॉन्फ़िग व्यवस्थित करने के लिए $include का उपयोग करें:
// ~/.openclaw/openclaw.json{ gateway: { port: 18789 }, agents: { $include: "./agents.json5" }, broadcast: { $include: ["./clients/a.json5", "./clients/b.json5"], },}- एकल फ़ाइल: कंटेनिंग ऑब्जेक्ट को बदल देती है
- फ़ाइलों की एरे: क्रम में डीप-मर्ज की जाती है (बाद वाली जीतती है)
- सिब्लिंग कुंजियां: includes के बाद मर्ज की जाती हैं (शामिल मानों को ओवरराइड करती हैं)
- नेस्टेड includes: 10 स्तर गहराई तक समर्थित
- सापेक्ष पथ: include करने वाली फ़ाइल के सापेक्ष हल किए जाते हैं
- पथ फ़ॉर्मैट: include पथों में null bytes नहीं होने चाहिए और resolution से पहले और बाद में 4096 वर्णों से सख्ती से छोटे होने चाहिए
- OpenClaw-स्वामित्व वाले लेखन: जब कोई लेखन केवल एक शीर्ष-स्तरीय सेक्शन बदलता है
जो
plugins: { $include: "./plugins.json5" }जैसे single-file include द्वारा समर्थित हो, OpenClaw उस शामिल फ़ाइल को अपडेट करता है औरopenclaw.jsonको जस का तस छोड़ देता है - असमर्थित write-through: root includes, include arrays, और sibling overrides वाले includes OpenClaw-स्वामित्व वाले लेखन के लिए कॉन्फ़िग को flatten करने के बजाय fail closed होते हैं
- Confinement:
$includeपथ उस डायरेक्टरी के अंदर हल होने चाहिए जिसमेंopenclaw.jsonहै। मशीनों या उपयोगकर्ताओं के बीच ट्री साझा करने के लिए,OPENCLAW_INCLUDE_ROOTSको अतिरिक्त डायरेक्टरी की path-list (:POSIX पर,;Windows पर) पर सेट करें जिन्हें includes संदर्भित कर सकते हैं। Symlinks हल किए जाते हैं और फिर से जांचे जाते हैं, इसलिए कोई पथ जो लेक्सिकली config dir में रहता है लेकिन जिसका वास्तविक लक्ष्य हर अनुमत root से बाहर निकलता है, फिर भी अस्वीकार किया जाता है। - त्रुटि प्रबंधन: गुम फ़ाइलों, parse errors, circular includes, अमान्य path format, और अत्यधिक लंबाई के लिए स्पष्ट त्रुटियां
कॉन्फ़िग hot reload
Gateway ~/.openclaw/openclaw.json को देखता है और बदलावों को स्वतः लागू करता है - अधिकांश सेटिंग्स के लिए मैनुअल restart की आवश्यकता नहीं होती।
सीधे फ़ाइल संपादन को तब तक अविश्वसनीय माना जाता है जब तक वे validate न हो जाएं। watcher editor temp-write/rename churn के शांत होने की प्रतीक्षा करता है, अंतिम फ़ाइल पढ़ता है, और अमान्य बाहरी संपादनों को openclaw.json फिर से लिखे बिना अस्वीकार करता है। OpenClaw-स्वामित्व वाले config लेखन, लिखने से पहले उसी schema gate का उपयोग करते हैं; gateway.mode हटाने या फ़ाइल को आधे से अधिक छोटा करने जैसे destructive clobbers अस्वीकार किए जाते हैं और निरीक्षण के लिए .rejected.* के रूप में सहेजे जाते हैं।
यदि आपको config reload skipped (invalid config) दिखता है या startup Invalid config रिपोर्ट करता है, तो config निरीक्षण करें, openclaw config validate चलाएं, फिर repair के लिए openclaw doctor --fix चलाएं। चेकलिस्ट के लिए Gateway troubleshooting देखें।
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 और मॉडल | agent, agents, models, routing |
नहीं |
| स्वचालन | hooks, cron, agent.heartbeat |
नहीं |
| सत्र और संदेश | session, messages |
नहीं |
| टूल और मीडिया | tools, browser, skills, mcp, audio, talk |
नहीं |
| UI और विविध | ui, logging, identity, bindings |
नहीं |
| Gateway सर्वर | gateway.* (पोर्ट, बाइंड, ऑथ, 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
Agents को सटीक फ़ील्ड-स्तरीय दस्तावेज़ और सीमाओं के लिए 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 स्नैपशॉट को
रूटिंग या allowlist ऐरे को चुपचाप ओवरराइट करने से रोकता है। जब आप
पूरा कॉन्फ़िग बदलना चाहते हों, तो 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