> ## Documentation Index
> Fetch the complete documentation index at: https://openclaw.veiseule.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Gateway-स्वामित्व वाला पेयरिंग

# Gateway-स्वामित्व वाला पेयरिंग (विकल्प B)

Gateway-स्वामित्व वाली pairing में, **Gateway** यह तय करने का स्रोत है कि कौन से nodes जुड़ने की अनुमति रखते हैं। UIs (macOS ऐप, भविष्य के क्लाइंट) केवल फ्रंटएंड हैं जो लंबित अनुरोधों को
स्वीकृत या अस्वीकार करते हैं।

**महत्वपूर्ण:** WS nodes `connect` के दौरान **device pairing** (role `node`) का उपयोग करते हैं।
`node.pair.*` एक अलग pairing स्टोर है और WS handshake को **gate** नहीं करता।
केवल वे क्लाइंट जो स्पष्ट रूप से `node.pair.*` कॉल करते हैं, इस फ़्लो का उपयोग करते हैं।

## अवधारणाएँ

* **लंबित अनुरोध**: किसी नोड ने जुड़ने का अनुरोध किया; अनुमोदन आवश्यक है।
* **पेयर किया गया नोड**: अनुमोदित नोड जिसके लिए एक auth टोकन जारी किया गया है।
* **Transport**: Gateway WS endpoint अनुरोधों को फ़ॉरवर्ड करता है, लेकिन सदस्यता तय नहीं करता। (लेगेसी TCP ब्रिज समर्थन अप्रचलित/हटा दिया गया है।)

## पेयरिंग कैसे काम करता है

1. एक नोड Gateway WS से जुड़ता है और पेयरिंग का अनुरोध करता है।
2. Gateway एक **लंबित अनुरोध** संग्रहीत करता है और `node.pair.requested` उत्सर्जित करता है।
3. आप अनुरोध को स्वीकृत या अस्वीकृत करते हैं (CLI या UI)।
4. स्वीकृति पर, Gateway एक **नया टोकन** जारी करता है (री‑पेयर पर टोकन रोटेट होते हैं)।
5. नोड टोकन का उपयोग करके पुनः कनेक्ट होता है और अब “पेयर” हो जाता है।

लंबित अनुरोध **5 मिनट** बाद स्वचालित रूप से समाप्त हो जाते हैं।

## CLI वर्कफ़्लो (हेडलैस‑फ्रेंडली)

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
openclaw nodes pending
openclaw nodes approve <requestId>
openclaw nodes reject <requestId>
openclaw nodes status
openclaw nodes rename --node <id|name|ip> --name "Living Room iPad"
```

`nodes status` पेयर किए गए/कनेक्टेड नोड्स और उनकी क्षमताएँ दिखाता है।

## API सतह (gateway प्रोटोकॉल)

इवेंट्स:

* `node.pair.requested` — नया लंबित अनुरोध बनाए जाने पर उत्सर्जित।
* `node.pair.resolved` — अनुरोध के स्वीकृत/अस्वीकृत/समाप्त होने पर उत्सर्जित।

मेथड्स:

* `node.pair.request` — एक लंबित अनुरोध बनाएँ या पुनः उपयोग करें।
* `node.pair.list` — लंबित + पेयर किए गए नोड्स की सूची।
* `node.pair.approve` — एक लंबित अनुरोध को स्वीकृत करें (टोकन जारी करता है)।
* `node.pair.reject` — एक लंबित अनुरोध को अस्वीकृत करें।
* `node.pair.verify` — `{ nodeId, token }` सत्यापित करें।

नोट्स:

* `node.pair.request` प्रति नोड आइडेम्पोटेंट है: बार‑बार कॉल करने पर वही
  लंबित अनुरोध लौटाया जाता है।
* स्वीकृति **हमेशा** एक नया टोकन उत्पन्न करती है; `node.pair.request` से कभी भी
  टोकन वापस नहीं किया जाता।
* अनुरोधों में स्वचालित‑अनुमोदन फ्लो के लिए संकेत के रूप में `silent: true` शामिल हो सकता है।

## स्वचालित‑अनुमोदन (macOS ऐप)

macOS ऐप वैकल्पिक रूप से **साइलेंट अनुमोदन** का प्रयास कर सकता है जब:

* अनुरोध `silent` के रूप में चिह्नित हो, और
* ऐप उसी उपयोगकर्ता का उपयोग करके Gateway होस्ट से SSH कनेक्शन सत्यापित कर सके।

यदि साइलेंट अनुमोदन विफल होता है, तो यह सामान्य “Approve/Reject” प्रॉम्प्ट पर वापस आ जाता है।

## भंडारण (स्थानीय, निजी)

पेयरिंग स्थिति Gateway स्टेट डायरेक्टरी के अंतर्गत संग्रहीत होती है (डिफ़ॉल्ट `~/.openclaw`):

* `~/.openclaw/nodes/paired.json`
* `~/.openclaw/nodes/pending.json`

यदि आप `OPENCLAW_STATE_DIR` को ओवरराइड करते हैं, तो `nodes/` फ़ोल्डर उसके साथ स्थानांतरित हो जाता है।

सुरक्षा नोट्स:

* टोकन गुप्त होते हैं; `paired.json` को संवेदनशील मानें।
* टोकन रोटेट करने के लिए पुनः‑अनुमोदन आवश्यक है (या नोड एंट्री हटानी होगी)।

## परिवहन व्यवहार

* परिवहन **स्टेटलेस** है; यह सदस्यता संग्रहीत नहीं करता।
* यदि Gateway ऑफ़लाइन है या पेयरिंग अक्षम है, तो नोड्स पेयर नहीं कर सकते।
* यदि Gateway रिमोट मोड में है, तो भी पेयरिंग रिमोट Gateway के स्टोर के विरुद्ध ही होती है।
