> ## 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](/ru/gateway/protocol) для всех клиентов узлов и операторов.
</Warning>

## Зачем он существовал

* **Граница безопасности**: мост предоставляет небольшой список разрешений вместо
  полной поверхности API Gateway.
* **Сопряжение + идентичность узла**: допуск узла контролируется Gateway и привязан
  к токену для конкретного узла.
* **UX обнаружения**: узлы могут обнаруживать Gateway через Bonjour в LAN или подключаться
  напрямую через tailnet.
* **Loopback 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`: сигналы узла (голосовая расшифровка, запрос агента, подписка на чат, жизненный цикл exec)

Gateway → Клиент:

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

Устаревшее применение списка разрешений находилось в `src/gateway/server-bridge.ts` (удалено).

## События жизненного цикла exec

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

Поля полезной нагрузки (все необязательны, если не указано иное):

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

## Историческое использование tailnet

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

## Версионирование

Мост был **неявной v1** (без согласования min/max). Этот раздел приведен
только для исторической справки; текущие клиенты узлов и операторов используют WebSocket
[Протокол Gateway](/ru/gateway/protocol).

## Связанные материалы

* [Протокол Gateway](/ru/gateway/protocol)
* [Узлы](/ru/nodes)
