---
read_when:
    - Створення або налагодження клієнтів Node (режим Node для iOS/Android/macOS)
    - Дослідження збоїв автентифікації під час сполучення або для мосту
    - Аудит поверхні Node, відкритої Gateway
summary: 'Історичний протокол мосту (застарілі вузли): TCP JSONL, сполучення, RPC з областю дії'
title: Протокол моста
x-i18n:
    generated_at: "2026-06-27T17:30:33Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 485d18f94b731018c6e0df493068b0b6aceff9afba6bebf1350db63c04cee98c
    source_path: gateway/bridge-protocol.md
    workflow: 16
---

<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)
