> ## 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 (الخيار ب)

في الإقران المملوك لـ Gateway، تكون **Gateway** هي مصدر الحقيقة بشأن العُقد المسموح لها بالانضمام. واجهات المستخدم (تطبيق macOS، العملاء المستقبليون) هي مجرد واجهات أمامية تعتمد أو ترفض الطلبات المعلّقة.

**مهم:** تستخدم عُقد WS **إقران الجهاز** (الدور `node`) أثناء `connect`.
يُعدّ `node.pair.*` مخزن إقران منفصل ولا يقوم **بتقييد** مصافحة WS.
فقط العملاء الذين يستدعون صراحةً `node.pair.*` يستخدمون هذا التدفق.

## المفاهيم

* **طلب معلّق**: عُقدة طلبت الانضمام؛ تتطلب موافقة.
* **عُقدة مقترنة**: عُقدة تمت الموافقة عليها مع إصدار رمز مصادقة.
* **النقل**: نقطة نهاية WS الخاصة بـ Gateway تقوم بتمرير الطلبات لكنها لا تقرر العضوية. (دعم جسر TCP القديم مُهمل/تمت إزالته).

## كيفية عمل الإقران

1. تتصل عُقدة بـ Gateway WS وتطلب الإقران.
2. تخزّن Gateway **طلبًا معلّقًا** وتُطلق `node.pair.requested`.
3. تقوم بالموافقة على الطلب أو رفضه (عبر CLI أو واجهة المستخدم).
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`، و
* يستطيع التطبيق التحقق من اتصال SSH بمضيف Gateway باستخدام المستخدم نفسه.

إذا فشل الاعتماد الصامت، يعود إلى مطالبة «اعتماد/رفض» المعتادة.

## التخزين (محلي، خاص)

تُخزَّن حالة الإقران ضمن دليل حالة Gateway (الافتراضي `~/.openclaw`):

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

إذا قمت بتجاوز `OPENCLAW_STATE_DIR`، ينتقل مجلد `nodes/` معه.

ملاحظات أمنية:

* الرموز أسرار؛ تعامل مع `paired.json` على أنه حساس.
* يتطلب تدوير الرمز إعادة الاعتماد (أو حذف إدخال العُقدة).

## سلوك النقل

* النقل **عديم الحالة**؛ لا يخزّن العضوية.
* إذا كانت Gateway غير متصلة أو كان الإقران معطّلًا، فلن تتمكن العُقد من الإقران.
* إذا كانت Gateway في وضع بعيد، فسيظل الإقران يحدث مقابل مخزن Gateway البعيد.
