> ## 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.

# IPC macOS

# Архитектура IPC OpenClaw для macOS

**Текущая модель:** локальный Unix-сокет соединяет **службу хоста узла** с **приложением для macOS** для подтверждений выполнения команд + `system.run`. Для проверки обнаружения/подключения существует отладочный CLI `openclaw-mac`; действия агента по‑прежнему проходят через WebSocket Gateway (шлюз) и `node.invoke`. Автоматизация UI использует PeekabooBridge.

## Цели

* Единственный экземпляр GUI‑приложения, который выполняет всю работу, связанную с TCC (уведомления, запись экрана, микрофон, речь, AppleScript).
* Небольшая поверхность для автоматизации: Gateway (шлюз) + команды узла, плюс PeekabooBridge для автоматизации UI.
* Предсказуемые разрешения: всегда один и тот же подписанный bundle ID, запуск через launchd, чтобы разрешения TCC сохранялись.

## Как это работает

### Транспорт Gateway (шлюз) + узел

* Приложение запускает Gateway (шлюз) (локальный режим) и подключается к нему как узел.
* Действия агента выполняются через `node.invoke` (например, `system.run`, `system.notify`, `canvas.*`).

### Служба узла + IPC приложения

* Безголовая служба хоста узла подключается к WebSocket Gateway (шлюз).
* Запросы `system.run` пересылаются в приложение для macOS по локальному Unix‑сокету.
* Приложение выполняет exec в контексте UI, при необходимости запрашивает подтверждение и возвращает вывод.

Диаграмма (SCI):

```
Agent -> Gateway -> Node Service (WS)
                      |  IPC (UDS + token + HMAC + TTL)
                      v
                  Mac App (UI + TCC + system.run)
```

### PeekabooBridge (автоматизация UI)

* Автоматизация UI использует отдельный UNIX‑сокет с именем `bridge.sock` и JSON‑протокол PeekabooBridge.
* Порядок предпочтений хостов (на стороне клиента): Peekaboo.app → Claude.app → OpenClaw\.app → локальное выполнение.
* Безопасность: хосты моста требуют разрешённый TeamID; отладочный обход с тем же UID (только DEBUG) защищён `PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1` (соглашение Peekaboo).
* См.: [использование PeekabooBridge](/platforms/mac/peekaboo) для подробностей.

## Операционные потоки

* Перезапуск/пересборка: `SIGN_IDENTITY="Apple Development: <Developer Name> (<TEAMID>)" scripts/restart-mac.sh`
  * Завершает существующие экземпляры
  * Сборка Swift + упаковка
  * Запись/инициализация/перезапуск LaunchAgent
* Единственный экземпляр: приложение завершает работу на раннем этапе, если уже запущен другой экземпляр с тем же bundle ID.

## Заметки о твердости

* Предпочтительно требовать совпадение TeamID для всех привилегированных поверхностей.
* PeekabooBridge: `PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1` (только DEBUG) может разрешать вызовы от процессов с тем же UID для локальной разработки.
* Вся коммуникация остаётся только локальной; сетевые сокеты не открываются.
* Запросы TCC инициируются только из GUI‑приложения; поддерживайте стабильный подписанный bundle ID между пересборками.
* Усиление IPC: режим сокета `0600`, токен, проверки UID пира, HMAC‑challenge/response, короткий TTL.
