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

# Протокол моста

<Warning>
  TCP-міст було **видалено**. Поточні збірки OpenClaw не постачають прослуховувач моста, а ключів конфігурації `bridge.*` більше немає в схемі. Цю сторінку збережено лише як історичну довідку. Використовуйте [протокол Gateway](/uk/gateway/protocol) для всіх клієнтів вузлів/операторів.
</Warning>

## Навіщо він існував

* **Межа безпеки**: міст відкриває невеликий список дозволеного замість
  повної поверхні API Gateway.
* **Сполучення + ідентичність вузла**: допуск вузла належить Gateway і прив’язаний
  до токена для окремого вузла.
* **UX виявлення**: вузли можуть виявляти Gateway через Bonjour у LAN або підключатися
  безпосередньо через tailnet.
* **Локальний WS**: повна площина керування WS залишається локальною, якщо її не тунельовано через SSH.

## Транспорт

* TCP, по одному JSON-об’єкту на рядок (JSONL).
* Необов’язковий TLS (коли `bridge.tls.enabled` має значення true).
* Історичний стандартний порт прослуховувача був `18790` (поточні збірки не запускають
  TCP-міст).

Коли TLS увімкнено, записи TXT виявлення містять `bridgeTls=1` плюс
`bridgeTlsSha256` як несекретну підказку. Зауважте, що записи TXT Bonjour/mDNS
не автентифікуються; клієнти не повинні вважати оголошений відбиток
авторитетним закріпленням без явного наміру користувача або іншої позасмугової перевірки.

## Рукостискання + сполучення

1. Клієнт надсилає `hello` з метаданими вузла + токеном (якщо вже сполучено).
2. Якщо не сполучено, Gateway відповідає `error` (`NOT_PAIRED`/`UNAUTHORIZED`).
3. Клієнт надсилає `pair-request`.
4. Gateway чекає на схвалення, потім надсилає `pair-ok` і `hello-ok`.

Історично `hello-ok` повертав `serverName`; розміщені поверхні Plugin тепер
оголошуються через `pluginSurfaceUrls`. Canvas/A2UI використовує
`pluginSurfaceUrls.canvas`; застарілий псевдонім `canvasHostUrl` не є частиною
переробленого протоколу.

## Фрейми

Клієнт → Gateway:

* `req` / `res`: обмежений за областю RPC Gateway (чат, сеанси, конфігурація, справність, voicewake, skills.bins)
* `event`: сигнали вузла (голосова транскрипція, запит агента, підписка на чат, життєвий цикл виконання)

Gateway → клієнт:

* `invoke` / `invoke-res`: команди вузла (`canvas.*`, `camera.*`, `screen.record`,
  `location.get`, `sms.send`)
* `event`: оновлення чату для сеансів із підпискою
* `ping` / `pong`: підтримання з’єднання

Застаріле застосування списку дозволеного містилося в `src/gateway/server-bridge.ts` (видалено).

## Події життєвого циклу виконання

Вузли можуть випромінювати події `exec.finished`, щоб показувати завершену активність `system.run`.
Вони зіставляються із системними подіями в Gateway. (Застарілі вузли все ще можуть випромінювати `exec.started`.)
Вузли можуть випромінювати `exec.denied` для відхилених спроб `system.run`; Gateway приймає
подію як кінцеву відмову й не ставить системну подію в чергу та не пробуджує роботу агента.

Поля корисного навантаження (усі необов’язкові, якщо не зазначено інше):

* `sessionKey` (обов’язкове): сеанс агента для кореляції подій і, для
  `exec.finished`, доставки системної події.
* `runId`: унікальний ідентифікатор виконання для групування.
* `command`: сирий або форматований рядок команди.
* `exitCode`, `timedOut`, `success`, `output`: деталі завершення (лише завершені).
* `reason`: причина відмови (лише відхилені).

## Історичне використання tailnet

* Прив’язати міст до IP tailnet: `bridge.bind: "tailnet"` у
  `~/.openclaw/openclaw.json` (лише історично; `bridge.*` більше не є чинним).
* Клієнти підключаються через ім’я MagicDNS або IP tailnet.
* Bonjour **не** проходить між мережами; за потреби використовуйте ручний хост/порт або широкозонний DNS-SD.

## Версіювання

Міст був **неявною v1** (без узгодження мінімуму/максимуму). Цей розділ є
лише історичною довідкою; поточні клієнти вузлів/операторів використовують WebSocket
[протокол Gateway](/uk/gateway/protocol).

## Пов’язане

* [Протокол Gateway](/uk/gateway/protocol)
* [Вузли](/uk/nodes)
