Gateway सेवा रनबुक¶
अंतिम अपडेट: 2025-12-09
यह क्या है¶
- हमेशा चालू रहने वाली प्रक्रिया जो एकल Baileys/Telegram कनेक्शन और नियंत्रण/इवेंट प्लेन की मालिक है।
- लीगेसी
gatewayकमांड को प्रतिस्थापित करता है। CLI एंट्री पॉइंट:openclaw gateway। - रोके जाने तक चलती रहती है; घातक त्रुटियों पर non-zero के साथ बाहर निकलती है ताकि सुपरवाइज़र इसे पुनः आरंभ करे।
कैसे चलाएँ (लोकल)¶
openclaw gateway --port 18789
# for full debug/trace logs in stdio:
openclaw gateway --port 18789 --verbose
# if the port is busy, terminate listeners then start:
openclaw gateway --force
# dev loop (auto-reload on TS changes):
pnpm gateway:watch
- कॉन्फ़िग हॉट रीलोड
~/.openclaw/openclaw.json(याOPENCLAW_CONFIG_PATH) पर नज़र रखता है। - डिफ़ॉल्ट मोड:
gateway.reload.mode="hybrid"(सुरक्षित बदलावों को हॉट-अप्लाई, महत्वपूर्ण पर रीस्टार्ट)। - हॉट रीलोड आवश्यकता होने पर SIGUSR1 के माध्यम से इन-प्रोसेस रीस्टार्ट का उपयोग करता है।
gateway.reload.mode="off"के साथ अक्षम करें।- WebSocket कंट्रोल प्लेन को
127.0.0.1:<port>(डिफ़ॉल्ट 18789) पर बाइंड करता है। - वही पोर्ट HTTP (कंट्रोल UI, हुक्स, A2UI) भी सर्व करता है। सिंगल-पोर्ट मल्टीप्लेक्स।
- OpenAI Chat Completions (HTTP):
/v1/chat/completions। - OpenResponses (HTTP):
/v1/responses। - Tools Invoke (HTTP):
/tools/invoke। - डिफ़ॉल्ट रूप से
canvasHost.port(डिफ़ॉल्ट18793) पर Canvas फ़ाइल सर्वर शुरू करता है, जो~/.openclaw/workspace/canvasसेhttp://<gateway-host>:18793/__openclaw__/canvas/सर्व करता है।canvasHost.enabled=falseयाOPENCLAW_SKIP_CANVAS_HOST=1के साथ अक्षम करें। - stdout पर लॉग करता है; इसे जीवित रखने और लॉग रोटेट करने के लिए launchd/systemd का उपयोग करें।
- समस्या-निवारण के समय लॉग फ़ाइल से stdio में डीबग लॉगिंग (हैंडशेक, req/res, इवेंट्स) मिरर करने के लिए
--verboseपास करें। --forceचुने गए पोर्ट पर लिसनर्स खोजने के लिएlsofका उपयोग करता है, SIGTERM भेजता है, जो मारा उसे लॉग करता है, फिर Gateway शुरू करता है (lsofगायब होने पर तेज़ी से विफल होता है)।- यदि आप किसी सुपरवाइज़र (launchd/systemd/mac ऐप चाइल्ड-प्रोसेस मोड) के अंतर्गत चलाते हैं, तो stop/restart आमतौर पर SIGTERM भेजता है; पुराने बिल्ड्स इसे
pnpmELIFECYCLEएग्ज़िट कोड 143 (SIGTERM) के रूप में दिखा सकते हैं, जो सामान्य शटडाउन है, क्रैश नहीं। - SIGUSR1 अधिकृत होने पर इन-प्रोसेस रीस्टार्ट ट्रिगर करता है (gateway टूल/कॉन्फ़िग अप्लाई/अपडेट, या मैनुअल रीस्टार्ट के लिए
commands.restartसक्षम करें)। - डिफ़ॉल्ट रूप से Gateway auth आवश्यक है:
gateway.auth.token(याOPENCLAW_GATEWAY_TOKEN) याgateway.auth.passwordसेट करें। Tailscale Serve identity का उपयोग न करने पर क्लाइंट्स कोconnect.params.auth.token/passwordभेजना होगा। - विज़ार्ड अब loopback पर भी डिफ़ॉल्ट रूप से एक टोकन जनरेट करता है।
- पोर्ट प्राथमिकता:
--port>OPENCLAW_GATEWAY_PORT>gateway.port> डिफ़ॉल्ट18789।
रिमोट एक्सेस¶
- Tailscale/VPN वरीय; अन्यथा SSH टनल:
bash
ssh -N -L 18789:127.0.0.1:18789 user@host
-
इसके बाद क्लाइंट्स टनल के माध्यम से
ws://127.0.0.1:18789से कनेक्ट करते हैं। -
यदि टोकन कॉन्फ़िगर है, तो क्लाइंट्स को टनल के ऊपर भी
connect.params.auth.tokenमें इसे शामिल करना होगा।
कई Gateway (एक ही होस्ट)¶
आमतौर पर अनावश्यक: एक Gateway कई मैसेजिंग चैनल्स और एजेंट्स को सर्व कर सकता है। एक से अधिक Gateways का उपयोग केवल रिडंडेंसी या कड़े आइसोलेशन (उदा: rescue bot) के लिए करें।
यदि आप स्टेट + कॉन्फ़िग को अलग रखते हैं और यूनिक पोर्ट्स का उपयोग करते हैं तो समर्थित है। पूर्ण गाइड: Multiple gateways।
सेवा नाम प्रोफ़ाइल-अवेयर होते हैं:
- macOS:
bot.molt.<profile>(legacycom.openclaw.*अभी भी मौजूद हो सकता है) - Linux:
openclaw-gateway-<profile>.service - Windows:
OpenClaw Gateway (<profile>)
इंस्टॉल मेटाडेटा सेवा कॉन्फ़िग में एम्बेडेड होता है:
OPENCLAW_SERVICE_MARKER=openclawOPENCLAW_SERVICE_KIND=gatewayOPENCLAW_SERVICE_VERSION=<version>
Rescue-Bot पैटर्न: अपने स्वयं के प्रोफ़ाइल, स्टेट डायरेक्टरी, वर्कस्पेस और बेस पोर्ट स्पेसिंग के साथ एक दूसरा Gateway आइसोलेटेड रखें। पूर्ण गाइड: Rescue-bot guide।
Dev प्रोफ़ाइल (--dev)¶
फ़ास्ट पाथ: प्राथमिक सेटअप को छुए बिना पूरी तरह आइसोलेटेड dev इंस्टेंस (कॉन्फ़िग/स्टेट/वर्कस्पेस) चलाएँ।
openclaw --dev setup
openclaw --dev gateway --allow-unconfigured
# then target the dev instance:
openclaw --dev status
openclaw --dev health
डिफ़ॉल्ट्स (env/flags/config के माध्यम से ओवरराइड किए जा सकते हैं):
OPENCLAW_STATE_DIR=~/.openclaw-devOPENCLAW_CONFIG_PATH=~/.openclaw-dev/openclaw.jsonOPENCLAW_GATEWAY_PORT=19001(Gateway WS + HTTP)- ब्राउज़र कंट्रोल सेवा पोर्ट =
19003(व्युत्पन्न:gateway.port+2, केवल loopback) canvasHost.port=19005(व्युत्पन्न:gateway.port+4)agents.defaults.workspaceका डिफ़ॉल्ट~/.openclaw/workspace-devबन जाता है जब आप--devके तहतsetup/onboardचलाते हैं।
व्युत्पन्न पोर्ट्स (रूल्स ऑफ़ थम्ब):
- बेस पोर्ट =
gateway.port(याOPENCLAW_GATEWAY_PORT/--port) - ब्राउज़र कंट्रोल सेवा पोर्ट = बेस + 2 (केवल loopback)
canvasHost.port = base + 4(याOPENCLAW_CANVAS_HOST_PORT/ कॉन्फ़िग ओवरराइड)- ब्राउज़र प्रोफ़ाइल CDP पोर्ट्स
browser.controlPort + 9 .. + 108से ऑटो-अलॉकेट होते हैं (प्रोफ़ाइल प्रति स्थायी)।
प्रति-इंस्टेंस चेकलिस्ट:
- यूनिक
gateway.port - यूनिक
OPENCLAW_CONFIG_PATH - यूनिक
OPENCLAW_STATE_DIR - यूनिक
agents.defaults.workspace - अलग WhatsApp नंबर (यदि WA का उपयोग कर रहे हों)
प्रोफ़ाइल के अनुसार सेवा इंस्टॉल:
openclaw --profile main gateway install
openclaw --profile rescue gateway install
उदाहरण:
OPENCLAW_CONFIG_PATH=~/.openclaw/a.json OPENCLAW_STATE_DIR=~/.openclaw-a openclaw gateway --port 19001
OPENCLAW_CONFIG_PATH=~/.openclaw/b.json OPENCLAW_STATE_DIR=~/.openclaw-b openclaw gateway --port 19002
प्रोटोकॉल (ऑपरेटर दृश्य)¶
- पूर्ण दस्तावेज़: Gateway protocol और Bridge protocol (legacy)।
- क्लाइंट से अनिवार्य पहला फ़्रेम:
req {type:"req", id, method:"connect", params:{minProtocol,maxProtocol,client:{id,displayName?,version,platform,deviceFamily?,modelIdentifier?,mode,instanceId?}, caps, auth?, locale?, userAgent? 41. } }. संरचित प्रेज़ेन्स एंट्रीज़:{host, ip, version, platform?, deviceFamily?, modelIdentifier?, mode, lastInputSeconds?, ts, reason?, tags?[], instanceId? 43. }(WS क्लाइंट्स के लिए,instanceIdconnect.client.instanceIdसे आता है)। - Gateway
res {type:"res", id, ok:true, payload:hello-ok }का उत्तर देता है (या त्रुटि के साथok:false, फिर बंद करता है)। - हैंडशेक के बाद:
- अनुरोध:
{type:"req", id, method, params}→{type:"res", id, ok, payload|error} - इवेंट्स:
{type:"event", event, payload, seq?, stateVersion?} node.invoke— किसी नोड पर कमांड इनवोक करें (उदा.canvas.*,camera.*)।shutdown— Gateway बाहर निकल रहा है; payload मेंreasonऔर वैकल्पिकrestartExpectedMsशामिल होते हैं।agentप्रतिक्रियाएँ दो-चरणीय होती हैं: पहलेresack{runId,status:"accepted"}, फिर रन पूरा होने के बाद अंतिमres{runId,status:"ok"|"error",summary}; स्ट्रीम्ड आउटपुटevent:"agent"के रूप में आता है।
मेथड्स (प्रारंभिक सेट)¶
health— पूर्ण हेल्थ स्नैपशॉट (आकारopenclaw health --jsonजैसा)।status— संक्षिप्त सारांश।system-presence— वर्तमान presence सूची।system-event— presence/सिस्टम नोट पोस्ट करें (संरचित)।send— सक्रिय चैनल(ों) के माध्यम से संदेश भेजें।agent— एजेंट टर्न चलाएँ (इसी कनेक्शन पर इवेंट्स स्ट्रीम करता है)।node.list— पेयर्ड + वर्तमान में जुड़े नोड्स सूचीबद्ध करें (इसमेंcaps,deviceFamily,modelIdentifier,paired,connected, और विज्ञापितcommandsशामिल हैं)।node.describe— किसी नोड का वर्णन करें (क्षमताएँ + समर्थितnode.invokeकमांड्स; पेयर्ड नोड्स और वर्तमान में जुड़े अनपेयर्ड नोड्स दोनों के लिए काम करता है)।- क्लाइंट्स को पुनः कनेक्ट करना चाहिए।
node.pair.*— पेयरिंग जीवनचक्र (request,list,approve,reject,verify)।
यह भी देखें: presence कैसे उत्पन्न/डीड्यूप होती है और स्थिर client.instanceId क्यों महत्वपूर्ण है—इसके लिए Presence।
इवेंट्स¶
agent— एजेंट रन से स्ट्रीम्ड टूल/आउटपुट इवेंट्स (seq-टैग्ड)।presence— presence अपडेट्स (stateVersion के साथ डेल्टा) सभी जुड़े क्लाइंट्स को पुश किए जाते हैं।tick— लिवनेस की पुष्टि के लिए आवधिक keepalive/no-op।- एरर्स
{ code, message, details?, retryable?, retryAfterMs? 48. }का उपयोग करते हैं। इवेंट्स रीप्ले नहीं किए जाते।
WebChat एकीकरण¶
- WebChat एक नेटिव SwiftUI UI है जो इतिहास, भेजने, abort और इवेंट्स के लिए सीधे Gateway WebSocket से बात करता है।
- रिमोट उपयोग उसी SSH/Tailscale टनल से होता है; यदि gateway टोकन कॉन्फ़िगर है, तो क्लाइंट
connectके दौरान इसे शामिल करता है। - macOS ऐप एकल WS (शेयर्ड कनेक्शन) के माध्यम से कनेक्ट होता है; यह प्रारंभिक स्नैपशॉट से presence हाइड्रेट करता है और UI अपडेट करने के लिए
presenceइवेंट्स सुनता है।
टाइपिंग और वैलिडेशन¶
- सर्वर हर इनबाउंड फ़्रेम को प्रोटोकॉल परिभाषाओं से उत्सर्जित JSON Schema के विरुद्ध AJV से वैलिडेट करता है।
- क्लाइंट्स (TS/Swift) जनरेटेड टाइप्स का उपभोग करते हैं (TS सीधे; Swift रिपॉज़िटरी के जनरेटर के माध्यम से)।
- प्रोटोकॉल परिभाषाएँ सत्य का स्रोत हैं; स्कीमा/मॉडल्स पुनः जनरेट करें:
pnpm protocol:genpnpm protocol:gen:swift
कनेक्शन स्नैपशॉट¶
hello-okमें एकsnapshotशामिल होता है, जिसमेंpresence,health,stateVersion, औरuptimeMsके साथpolicy {maxPayload,maxBufferedBytes,tickIntervalMs}भी होता है ताकि क्लाइंट्स अतिरिक्त अनुरोधों के बिना तुरंत रेंडर कर सकें।health/system-presenceमैनुअल रिफ़्रेश के लिए उपलब्ध रहते हैं, लेकिन कनेक्ट समय पर आवश्यक नहीं हैं।
त्रुटि कोड (res.error shape)¶
- क्लाइंट्स seq गैप्स का पता लगाते हैं और आगे बढ़ने से पहले रिफ़्रेश (
health+system-presence) करना चाहिए। }`. - मानक कोड:
NOT_LINKED— WhatsApp प्रमाणीकृत नहीं है।AGENT_TIMEOUT— एजेंट ने कॉन्फ़िगर की गई समय-सीमा के भीतर प्रतिक्रिया नहीं दी।INVALID_REQUEST— स्कीमा/पैरामीटर वैलिडेशन विफल।UNAVAILABLE— Gateway बंद हो रहा है या कोई निर्भरता उपलब्ध नहीं है।
Keepalive व्यवहार¶
tickइवेंट्स (या WS ping/pong) आवधिक रूप से उत्सर्जित होते हैं ताकि ट्रैफ़िक न होने पर भी क्लाइंट्स जान सकें कि Gateway जीवित है।- send/agent acknowledgements अलग प्रतिक्रियाएँ रहती हैं; sends के लिए ticks का दुरुपयोग न करें।
रीप्ले / गैप्स¶
- Events are not replayed. Clients detect seq gaps and should refresh (
health+system-presence) before continuing. 1. WebChat और macOS क्लाइंट अब गैप होने पर अपने-आप रीफ़्रेश हो जाते हैं।
सुपरविज़न (macOS उदाहरण)¶
- सेवा को जीवित रखने के लिए launchd का उपयोग करें:
- Program:
openclawका पाथ - Arguments:
gateway - KeepAlive: true
- StandardOut/Err: फ़ाइल पाथ्स या
syslog - विफलता पर launchd पुनः आरंभ करता है; घातक मिसकॉनफ़िग को बाहर निकलते रहना चाहिए ताकि ऑपरेटर नोटिस करे।
- LaunchAgents प्रति-यूज़र होते हैं और लॉग-इन सत्र की आवश्यकता होती है; हेडलेस सेटअप्स के लिए कस्टम LaunchDaemon का उपयोग करें (शिप नहीं किया गया)।
-
openclaw gateway install~/Library/LaunchAgents/bot.molt.gateway.plistलिखता है (याbot.molt.<profile>3. .plist; पुरानाcom.openclaw.*` साफ़ कर दिया जाता है)।
openclaw doctorLaunchAgent कॉन्फ़िग का ऑडिट करता है और इसे वर्तमान डिफ़ॉल्ट्स पर अपडेट कर सकता है।
Gateway सेवा प्रबंधन (CLI)¶
इंस्टॉल/स्टार्ट/स्टॉप/रीस्टार्ट/स्टेटस के लिए Gateway CLI का उपयोग करें:
openclaw gateway status
openclaw gateway install
openclaw gateway stop
openclaw gateway restart
openclaw logs --follow
नोट्स:
gateway statusडिफ़ॉल्ट रूप से सेवा के रेज़ॉल्व्ड पोर्ट/कॉन्फ़िग का उपयोग करके Gateway RPC को प्रोब करता है (--urlसे ओवरराइड करें)।gateway status --deepसिस्टम-स्तरीय स्कैन (LaunchDaemons/system units) जोड़ता है।gateway status --no-probeRPC प्रोब को स्किप करता है (नेटवर्किंग डाउन होने पर उपयोगी)।gateway status --jsonस्क्रिप्ट्स के लिए स्थिर है।gateway statussupervisor runtime (launchd/systemd चल रहा) को RPC reachability (WS कनेक्ट + स्टेटस RPC) से अलग रिपोर्ट करता है।gateway status“localhost बनाम LAN bind” भ्रम और प्रोफ़ाइल मिसमैच से बचने के लिए कॉन्फ़िग पाथ + प्रोब टार्गेट प्रिंट करता है।gateway statusसेवा चलती दिखने पर भी पोर्ट बंद होने की स्थिति में अंतिम gateway त्रुटि पंक्ति शामिल करता है।logsRPC के माध्यम से Gateway फ़ाइल लॉग को टेल करता है (मैनुअलtail/grepकी आवश्यकता नहीं)।-
- यदि अन्य gateway-जैसी सेवाएँ पाई जाती हैं, तो CLI चेतावनी देता है, जब तक कि वे OpenClaw प्रोफ़ाइल सेवाएँ न हों।
- अधिकांश सेटअप के लिए हम अब भी प्रति मशीन एक gateway की सिफ़ारिश करते हैं; redundancy या rescue bot के लिए isolated profiles/ports का उपयोग करें। 6. देखें Multiple gateways।
- क्लीनअप:
openclaw gateway uninstall(वर्तमान सेवा) औरopenclaw doctor(लीगेसी माइग्रेशन)। gateway installपहले से इंस्टॉल होने पर no-op है; पुनः इंस्टॉल के लिएopenclaw gateway install --forceका उपयोग करें (प्रोफ़ाइल/env/पाथ परिवर्तन)।
बंडल्ड mac ऐप:
-
- OpenClaw.app एक Node-आधारित gateway relay को बंडल कर सकता है और per-user LaunchAgent इंस्टॉल कर सकता है जिसका लेबल
bot.molt.gatewayहोता है (याbot.molt.<profile>8.; पुरानेcom.openclaw.*` लेबल भी साफ़-सुथरे ढंग से unload हो जाते हैं)।
- OpenClaw.app एक Node-आधारित gateway relay को बंडल कर सकता है और per-user LaunchAgent इंस्टॉल कर सकता है जिसका लेबल
- इसे साफ़-साफ़ रोकने के लिए
openclaw gateway stop(याlaunchctl bootout gui/$UID/bot.molt.gateway) का उपयोग करें। - पुनः आरंभ के लिए
openclaw gateway restart(याlaunchctl kickstart -k gui/$UID/bot.molt.gateway) का उपयोग करें। launchctlकेवल तभी काम करता है जब LaunchAgent इंस्टॉल हो; अन्यथा पहलेopenclaw gateway installका उपयोग करें।-
- नामित प्रोफ़ाइल चलाते समय लेबल को
bot.molt.<profile>से बदलें।10. ` जब running a named profile।
- नामित प्रोफ़ाइल चलाते समय लेबल को
सुपरविज़न (systemd यूज़र यूनिट)¶
- OpenClaw Linux/WSL2 पर डिफ़ॉल्ट रूप से एक systemd user service इंस्टॉल करता है। 12. हम single-user मशीनों के लिए user services की सिफ़ारिश करते हैं (सरल env, per-user कॉन्फ़िग)।
-
multi-user या हमेशा-चालू सर्वरों के लिए system service का उपयोग करें (linger की आवश्यकता नहीं, साझा supervision)।
-
openclaw gateway installuser unit लिखता है। 15.openclaw doctorunit का ऑडिट करता है और इसे वर्तमान अनुशंसित डिफ़ॉल्ट्स से मेल कराने के लिए अपडेट कर सकता है।
~/.config/systemd/user/openclaw-gateway[-<profile>].service बनाएँ:
[Unit]
Description=OpenClaw Gateway (profile: <profile>, v<version>)
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/openclaw gateway --port 18789
Restart=always
RestartSec=5
Environment=OPENCLAW_GATEWAY_TOKEN=
WorkingDirectory=/home/youruser
[Install]
WantedBy=default.target
Lingering सक्षम करें (आवश्यक ताकि यूज़र सेवा लॉगआउट/आइडल के बाद भी जीवित रहे):
sudo loginctl enable-linger youruser
- Onboarding इसे Linux/WSL2 पर चलाता है (sudo के लिए पूछ सकता है;
/var/lib/systemd/lingerलिखता है)। - फिर सेवा सक्षम करें:
systemctl --user enable --now openclaw-gateway[-<profile>].service
- Alternative (system service) - हमेशा-चालू या multi-user सर्वरों के लिए, आप user unit के बजाय systemd system unit इंस्टॉल कर सकते हैं (linger की आवश्यकता नहीं)।
/etc/systemd/system/openclaw-gateway[-<profile>].serviceबनाएँ (ऊपर दिए गए unit की कॉपी करें,WantedBy=multi-user.targetपर स्विच करें,User=+WorkingDirectory=सेट करें), फिर:
sudo systemctl daemon-reload
sudo systemctl enable --now openclaw-gateway[-<profile>].service
Windows (WSL2)¶
Windows इंस्टॉलेशन्स को WSL2 का उपयोग करना चाहिए और ऊपर दिए गए Linux systemd अनुभाग का पालन करना चाहिए।
ऑपरेशनल चेक्स¶
- Liveness: WS खोलें और
req:connectभेजें →resकी अपेक्षा करें जिसमेंpayload.type="hello-ok"(स्नैपशॉट के साथ) हो। - Readiness:
healthकॉल करें →ok: trueऔरlinkChannelमें लिंक्ड चैनल की अपेक्षा करें (जहाँ लागू हो)। - Debug:
tickऔरpresenceइवेंट्स को सब्सक्राइब करें; सुनिश्चित करें किstatusलिंक्ड/ऑथ आयु दिखाता है; presence एंट्रीज़ Gateway होस्ट और जुड़े क्लाइंट्स दिखाती हैं।
सुरक्षा गारंटी¶
- डिफ़ॉल्ट रूप से प्रति होस्ट एक Gateway मानें; यदि कई प्रोफ़ाइल चलाते हैं, तो पोर्ट्स/स्टेट को अलग रखें और सही इंस्टेंस को टार्गेट करें।
- सीधे Baileys कनेक्शनों पर कोई फ़ॉलबैक नहीं; यदि Gateway डाउन है, तो sends तेज़ी से विफल होते हैं।
- non-connect प्रथम फ़्रेम या malformed JSON अस्वीकृत किए जाते हैं और सॉकेट बंद कर दिया जाता है।
- ग्रेसफ़ुल शटडाउन: बंद करने से पहले
shutdownइवेंट उत्सर्जित करें; क्लाइंट्स को close + reconnect संभालना चाहिए।
CLI सहायक¶
openclaw gateway health|status— Gateway WS पर हेल्थ/स्टेटस अनुरोध करें।openclaw message send --target <num> --message "hi" [--media ...]— Gateway के माध्यम से भेजें (WhatsApp के लिए idempotent)।openclaw agent --message "hi" --to <num>— एजेंट टर्न चलाएँ (डिफ़ॉल्ट रूप से फ़ाइनल का इंतज़ार करता है)।openclaw gateway call <method> --params '{"k":"v"}'— डीबगिंग के लिए रॉ मेथड इनवोकर।openclaw gateway stop|restart— सुपरवाइज़्ड gateway सेवा (launchd/systemd) को stop/restart करें।- Gateway हेल्पर सबकमांड्स
--urlपर चल रहे gateway को मानते हैं; वे अब स्वतः कोई नया स्पॉन नहीं करते।
माइग्रेशन मार्गदर्शन¶
openclaw gatewayऔर लीगेसी TCP कंट्रोल पोर्ट के उपयोग को सेवानिवृत्त करें।- क्लाइंट्स को WS प्रोटोकॉल बोलने के लिए अपडेट करें जिसमें अनिवार्य connect और संरचित presence शामिल हो।