Get started

क्लाउड वर्कर्स

Status: active

क्लाउड वर्कर किसी सत्र के एजेंट लूप को अस्थायी क्लाउड मशीन पर चलने देते हैं, जबकि सत्र से जुड़ी हर चीज़ वहीं रहती है जहाँ वह हमेशा थी: साइडबार में दिखाई देती हुई, लाइव स्ट्रीम होती हुई, और ट्रांसक्रिप्ट का स्वामित्व Gateway के पास। Gateway एक बॉक्स लीज़ पर लेता है, उस पर OpenClaw की पिन की गई प्रति इंस्टॉल करता है, सत्र के वर्कस्पेस को वहाँ सिंक करता है, और टर्न लूप को प्रतिबंधित openclaw worker प्रक्रिया को सौंप देता है। मॉडल कॉल Gateway के माध्यम से वापस प्रॉक्सी किए जाते हैं, इसलिए प्रोवाइडर क्रेडेंशियल कभी आपकी मशीन से बाहर नहीं जाते, और प्रॉम्प्ट कैशिंग काम करती रहती है क्योंकि प्रोवाइडर को एक सतत स्ट्रीम दिखाई देती है।

काम पूरा होने पर (या बॉक्स के बंद हो जाने पर), मशीन हटा दी जाती है। टिकाऊ स्थिति — ट्रांसक्रिप्ट, वर्कस्पेस कमिट, प्लेसमेंट रिकॉर्ड — Gateway के पास रहती है।

क्या कहाँ चलता है

विषय स्थान
एजेंट लूप + टूल (exec, read, write, edit, …) क्लाउड वर्कर बॉक्स
मॉडल इन्फ़रेंस और प्रोवाइडर क्रेडेंशियल Gateway ({provider, model} संदर्भ द्वारा प्रॉक्सी किया गया)
ट्रांसक्रिप्ट (टिकाऊ, सत्र स्टोर) Gateway
साइडबार में लाइव स्ट्रीमिंग Gateway फ़ैनआउट, जिसे वर्कर की पुनः चलाने योग्य इवेंट स्ट्रीम से फ़ीड मिलता है
वर्कस्पेस git इतिहास बॉक्स पर बिना क्रेडेंशियल के बनाया गया; Gateway कमिट अपनाता है और पुश/PR का स्वामी होता है

बॉक्स को sshd के अतिरिक्त किसी इनबाउंड पोर्ट की आवश्यकता नहीं होती: Gateway पिन किए गए SSH के माध्यम से आउटबाउंड कनेक्शन बनाता है, और रिवर्स टनल वर्कर के WebSocket को वापस लाती है। बंडल किया गया Crabbox प्रोवाइडर सार्वजनिक SSH रूट को अनिवार्य करता है और प्रबंधित Tailscale नामांकन अक्षम करता है। आउटबाउंड इंटरनेट एक्सेस प्रोवाइडर की नीति है; डिफ़ॉल्ट AWS प्रोफ़ाइल इंटरनेट तक पहुँच सकती है, जब तक कि आप उसके नेटवर्क या सिक्योरिटी ग्रुप को प्रतिबंधित न करें।

आवश्यकताएँ

  • एक वर्कर प्रोवाइडर Plugin। बंडल किया गया crabbox Plugin Crabbox CLI को चलाता है, जो क्लाउड बैकएंड (AWS, Hetzner और अन्य) पर लीज़ की मध्यस्थता करता है। crabbox बाइनरी PATH पर उपलब्ध होनी चाहिए (या settings.binary सेट करें), और प्रोवाइडर क्रेडेंशियल पहले से कॉन्फ़िगर होने चाहिए। AWS में प्रवेश के लिए Crabbox 0.38.1 या नया संस्करण आवश्यक है।
  • Crabbox AWS वर्कर के लिए, प्रभावी aws.instanceProfile खाली होना चाहिए। प्रोवाइडर आवंटन से पहले crabbox config show --json की जाँच करता है, फिर आवश्यक करता है कि crabbox inspect --json, EC2 DescribeInstances से providerMetadata.instanceProfileAttached: false की रिपोर्ट करे। इंस्टेंस रोल वाली या प्रामाणिक मेटाडेटा के बिना लीज़ रोककर अस्वीकार कर दी जाती हैं।
  • लीज़ पर ली गई मशीन पर Node.js। सामान्य क्लाउड इमेज में प्रायः यह नहीं होता — इसे प्रोफ़ाइल की setup कमांड में इंस्टॉल करें।
  • सत्र के स्वामित्व वाला प्रबंधित वर्कट्री रखने वाला सत्र (इसे worktree: true से बनाएँ)। डिस्पैच उस वर्कट्री की सामग्री स्थानांतरित करता है; साधारण डायरेक्टरी मैनिफ़ेस्ट मिरर के रूप में सिंक होती हैं।

कॉन्फ़िगरेशन

openclaw.json में cloudWorkers.profiles के अंतर्गत एक प्रोफ़ाइल जोड़ें:

json
{  "cloudWorkers": {    "profiles": {      "aws": {        "provider": "crabbox",        "install": "bundle",        "settings": {          "provider": "aws",          "class": "standard",          "ttl": "8h",          "idleTimeout": "45m",          "setup": "test -x /usr/bin/node || (curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs)"        }      }    }  }}

प्रोफ़ाइल फ़ील्ड:

कुंजी अर्थ
provider किसी Plugin द्वारा पंजीकृत वर्कर प्रोवाइडर आईडी (बंडल किए गए Plugin के लिए crabbox)।
install bundle (डिफ़ॉल्ट) चल रहे Gateway का बिल्ड भेजता है; npm पिन की गई इंटीग्रिटी के साथ जारी किए गए Gateway का सटीक संस्करण इंस्टॉल करता है। npm के लिए Gateway का पैकेज की गई रिलीज़ से चलना आवश्यक है।
settings प्रोवाइडर के स्वामित्व वाला JSON। crabbox के लिए: provider (बैकएंड), class (मशीन क्लास), ttl, idleTimeout (Go अवधियाँ), वैकल्पिक setup और पूर्ण binary पथ। OpenClaw इन लीज़ के लिए सार्वजनिक SSH को अनिवार्य करता है और प्रबंधित Tailscale को अक्षम करता है।
lifetime वैकल्पिक संग्रहीत नीति (idleTimeoutMinutes, maxLifetimeMinutes)।

सेटअप कमांड

settings.setup लीज़ पर लिए गए बॉक्स के SSH-तैयार होने के बाद और OpenClaw इंस्टॉल होने से पहले चलता है। यह प्रावधान के प्रत्येक प्रयास पर चलता है (बाधित डिस्पैच के बाद पुनः चलाए जाने पर भी), इसलिए इसे आइडेम्पोटेंट होना चाहिए — उदाहरण की तरह इंस्टॉल को command -v/test -x जाँच से सुरक्षित करें। यदि सेटअप विफल होता है, तो प्रोवाइडर लीज़ रोक देता है और डिस्पैच सुरक्षित रूप से विफल हो जाता है; कोई आधा-कॉन्फ़िगर किया हुआ बॉक्स चलता नहीं रहता।

इंस्टॉल चैनल

  • bundle चल रहे Gateway के dist, छँटे हुए package.json, और बिल्ड द्वारा संदर्भित सभी वर्कस्पेस पैकेज को पैक करता है, जिन सभी को एक कंटेंट हैश कवर करता है। बॉक्स उस हैश के विरुद्ध अपरिवर्तित बंडल को सत्यापित करता है, फिर प्रोडक्शन npm डिपेंडेंसी इंस्टॉल करता है (स्क्रिप्ट अक्षम रहती हैं)। इसी तरह वर्कर पर डेवलपमेंट बिल्ड चलाया जाता है।
  • npm प्रमाणित करता है कि रिलीज़ सार्वजनिक रजिस्ट्री में मौजूद है, उसकी SHA-512 इंटीग्रिटी को पिन करता है, और Gateway से सटीक मेल खाने वाला openclaw@<version> इंस्टॉल करता है।

सत्र डिस्पैच करना

Control UI में नया सत्र खोलें, ऐसा एजेंट चुनें जिसका कॉन्फ़िगर किया गया रनटाइम OpenClaw हो, कहाँ मेनू से कॉन्फ़िगर किया गया क्लाउड · प्रोफ़ाइल लक्ष्य चुनें, और कार्य शुरू करें। क्लाउड चयन आवश्यक प्रबंधित वर्कट्री को स्वचालित रूप से सक्षम करता है; Gateway सत्र बनाता है, डिस्पैच पूरा करता है, और उसके बाद ही पहला टर्न भेजता है। सत्र साइडबार में सर्वर बैज टिकाऊ प्लेसमेंट स्थिति दिखाता है। बाहरी CLI सत्र कैटलॉग के लिए क्लाउड लक्ष्य उपलब्ध नहीं कराए जाते।

समतुल्य RPC प्रवाह यह है:

प्रबंधित वर्कट्री के साथ सत्र बनाएँ, फिर उसे डिस्पैच करें (RPC के लिए operator.admin आवश्यक है और यह केवल प्रोफ़ाइल कॉन्फ़िगर होने पर मौजूद होता है):

क्लाउड वर्कर OpenClaw एजेंट रनटाइम चलाते हैं। ऐसा openai/* या अन्य मॉडल चुनें जो उस रनटाइम पर रिज़ॉल्व होता हो; claude-cli जैसे बाहरी CLI रनटाइम के लिए कॉन्फ़िगर किए गए सत्र डिस्पैच नहीं किए जा सकते।

bash
openclaw gateway call sessions.create \  --params '{"key":"agent:main:big-refactor","worktree":true,"cwd":"/path/to/repo","worktreeName":"big-refactor"}' openclaw gateway call sessions.dispatch \  --timeout 1500000 \  --params '{"key":"agent:main:big-refactor","profileId":"aws"}'

sessions.dispatch स्थानीय टर्न प्रवेश बंद करता है, सक्रिय कार्य के पूरा होने की प्रतीक्षा करता है, लीज़ का प्रावधान करता है, सेटअप चलाता है, OpenClaw को बूटस्ट्रैप करता है, वर्कस्पेस सिंक करता है, और प्लेसमेंट के active वर्कर स्वामित्व तक पहुँचने पर लौटता है। पहले डिस्पैच के लिए कई मिनट का समय रखें; जहाँ प्रोवाइडर समर्थन करता है, वहाँ लीज़ और इंस्टॉल कैश किए जाते हैं। इसके बाद सत्र से सामान्य रूप से बातचीत करें — टर्न स्वचालित रूप से वर्कर को रूट किए जाते हैं।

पूर्ण हो चुके वर्कर टर्न, टर्न क्लेम जारी होने से पहले पात्र और आकार-सीमित वर्कस्पेस फ़ाइलों को सत्र के प्रबंधित वर्कट्री में वापस समन्वित करते हैं। टर्मिनल वर्कर इवेंट को स्वीकार किए जाने से पहले वह एक टिकाऊ लंबित-परिणाम अवरोध बनाता है, ताकि Gateway पुनरारंभ से होने वाली रिकवरी दूरस्थ वर्कस्पेस को वापस खींच सके, इससे पहले कि पुराने टर्न की सफ़ाई उसके स्वामी को नष्ट कर सके। समन्वयन वर्कर मैनिफ़ेस्ट को प्रमाणित करता है और किसी भी पक्ष को अधिलेखित करने के बजाय स्थानीय विचलन पर रुक जाता है। फ़ाइलें बदलने से पहले, Gateway अपने SQLite स्थिति डेटाबेस में सीमित रोलबैक जर्नल संग्रहीत करता है; बाधित Gateway प्रक्रिया के बाद पुनः प्रयास उस जर्नल को रिकवर करता है। वर्कस्पेस परिणाम Git फ़ाइल सिमैंटिक्स का उपयोग करते हैं: नियमित फ़ाइलें, एक्ज़ीक्यूटेबल बिट, सिमलिंक, जोड़, बदलाव और हटाव बनाए रखे जाते हैं, जबकि खाली डायरेक्टरी और अन्य डायरेक्टरी मोड नहीं रखे जाते। दूरस्थ कमिट ऑब्जेक्ट बनाए नहीं रखे जाते; परिणामी फ़ाइल बदलाव सामान्य समीक्षा और कमिट के लिए प्रबंधित वर्कट्री में रहते हैं।

जब काम पूरा हो जाए और कोई टर्न न चल रहा हो, तो सत्र मेनू खोलें और क्लाउड वर्कर रोकें… चुनें। Gateway वातावरण नष्ट करने से पहले एक अंतिम वर्कस्पेस समन्वयन करता है। जो प्लेसमेंट पहले से draining या reconciling में है, उसका विघटन पूरा हो रहा है; सत्र हटाने से पहले उसके बैज के reclaimed होने की प्रतीक्षा करें।

खराब या अनियंत्रित संलग्न वर्कर के लिए, ऑपरेटर अंतिम उपाय के रूप में { "force": true } के साथ environments.destroy कॉल कर सकता है। बलपूर्वक विघटन प्लेसमेंट को टिकाऊ रूप से विफल चिह्नित करता है और वातावरण नष्ट करने से पहले किसी भी असमन्वित दूरस्थ परिणाम को छोड़ देता है।

समतुल्य प्रशासनिक RPC यह है:

bash
openclaw gateway call sessions.reclaim \  --timeout 600000 \  --params '{"key":"agent:main:big-refactor"}'

प्लेसमेंट एक टिकाऊ स्टेट मशीन (local → requested → provisioning → syncing → starting → active) से होकर गुजरता है, इसलिए डिस्पैच के बीच Gateway पुनरारंभ होने पर मशीनें लीक होने के बजाय समन्वयन होता है। विफल मॉडल टर्न सक्रिय प्लेसमेंट को पुनः प्रयास के लिए उपलब्ध रखता है। यदि इनबाउंड वर्कस्पेस समन्वयन विफल होता है, तो वर्कर भी सक्रिय रहता है ताकि ऑपरेटर स्थानीय टकराव हल कर सके और दूरस्थ परिणाम खोए बिना पुनः प्रयास कर सके; इसके विपरीत जीवनचक्र विफलताएँ प्लेसमेंट को त्रुटि या पुनः प्राप्त स्थिति में ले जाती हैं और उनका डायग्नोस्टिक अंतिम अंश सुरक्षित रखती हैं।

सुरक्षा मॉडल

  • बंद वर्कर इनग्रेस। वर्कर टनल किए गए सॉकेट पर बंद मेथड अनुमतिसूची वाले समर्पित प्रोटोकॉल से संचार करते हैं — कोई वर्कर ऑपरेटर RPC कॉल नहीं कर सकता।
  • निर्मित क्रेडेंशियल, स्थायी संग्रह में हैश किए गए। प्रत्येक डिस्पैच एक वर्कर क्रेडेंशियल बनाता है; Gateway केवल उसका हैश संग्रहीत करता है। क्रेडेंशियल रोटेशन और ओनर-एपॉक फेंसिंग प्रत्येक सत्र के लिए अधिकतम एक सक्रिय स्वामी सुनिश्चित करते हैं — पुनः कनेक्ट होने वाले पुराने वर्कर को अलग कर दिया जाता है, कभी मर्ज नहीं किया जाता।
  • होस्ट-की पिनिंग। प्रोवाइडर को प्रावधान के समय बॉक्स की SSH होस्ट कुंजी उपलब्ध करानी होगी; बूटस्ट्रैप सख़्त पिनिंग के साथ कनेक्ट करता है और इसके बिना सुरक्षित रूप से विफल हो जाता है।
  • बॉक्स पर कोई स्थायी मॉडल, फोर्ज या क्लाउड क्रेडेंशियल नहीं। मॉडल प्रमाणीकरण Gateway पर रहता है (इन्फ़रेंस {provider, model} संदर्भ से यात्रा करता है), वर्कस्पेस git कमिट फोर्ज क्रेडेंशियल के बिना बनाए जाते हैं, और सेटअप से पहले इंस्टेंस रोल के लिए Crabbox AWS लीज़ मेटाडेटा की प्रामाणिक रूप से जाँच की जाती है। सेटअप कमांड को भी क्रेडेंशियल-मुक्त रखें।
  • प्रोवाइडर के स्वामित्व वाला इग्रेस। रिवर्स टनल प्रत्यक्ष मॉडल एक्सेस की OpenClaw की आवश्यकता समाप्त करती है, लेकिन OpenClaw प्रोवाइडर फ़ायरवॉल को पुनर्लेखित नहीं करता। कार्य की आवश्यकता होने पर वर्कर प्रोवाइडर में आउटबाउंड ट्रैफ़िक प्रतिबंधित करें।
  • टिकाऊ, ठीक-एक-बार ट्रांसक्रिप्ट। वर्कर सत्र के लीफ़ के विरुद्ध कंपेयर-एंड-स्वैप प्रोटोकॉल के माध्यम से ट्रांसक्रिप्ट बैच कमिट करता है; पुराना बेस भुगतान किए गए आउटपुट की नकल या रीबेस करने के बजाय रन को तुरंत रोक देता है।

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

  • sessions.dispatch एक अज्ञात विधि है — कोई cloudWorkers.profiles कॉन्फ़िगर नहीं है, या कॉलर के पास operator.admin नहीं है।
  • "क्लाउड वर्कर टर्न के लिए OpenClaw रनटाइम आवश्यक है" — ऐसा मॉडल चुनें जिसका कॉन्फ़िगर किया गया रनटाइम OpenClaw हो। claude-cli जैसे बाहरी CLI रनटाइम वर्कर इन्फ़रेंस का समर्थन नहीं करते।
  • "वर्कर बूटस्ट्रैप के लिए लीज़ किए गए होस्ट पर Node.js आवश्यक है"settings.setup में Node इंस्टॉलेशन जोड़ें (ऊपर देखें)।
  • AWS इंस्टेंस-रोल सत्यापन विफल होता हैaws.instanceProfile को साफ़ करें (और यदि सेट हो, तो CRABBOX_AWS_INSTANCE_PROFILE को भी)। Crabbox 0.38.1 या नया संस्करण इंस्टॉल करें; पुराने बाइनरी AWS प्रवेश के लिए आवश्यक प्रामाणिक providerMetadata.instanceProfileAttached अनुबंध उपलब्ध नहीं कराते।
  • प्रोवाइडर त्रुटि के साथ डिस्पैच विफल होता है — प्लेसमेंट रिकॉर्ड और environments.list अंतिम त्रुटि को बनाए रखते हैं, जिसमें सेटअप/बूटस्ट्रैप stderr का अंतिम भाग भी शामिल है। विफलता पर बॉक्स नष्ट कर दिए जाते हैं, इसलिए वह अंतिम भाग प्राथमिक फॉरेंसिक साक्ष्य है।
  • डिस्पैच के दौरान क्लाइंट टाइमआउटopenclaw gateway call डिफ़ॉल्ट रूप से 10s टाइमआउट का उपयोग करता है; --timeout के लिए पर्याप्त बड़ा मान दें (डिस्पैच किसी भी स्थिति में सर्वर की ओर चलता रहता है, और प्रोविज़निंग के दौरान पुनः प्रयास को session cannot dispatch from placement provisioning के साथ अस्वीकार कर दिया जाता है)।
  • लीज़ रखरखावcrabbox list --provider <backend> सक्रिय लीज़ दिखाता है; crabbox stop --provider <backend> --id <lease> किसी एक को मैन्युअल रूप से रिलीज़ करता है। निष्क्रिय लीज़ प्रोफ़ाइल के idleTimeout पर समाप्त हो जाती हैं।

संबंधित

Was this useful?
On this page

On this page