OpenClawSkills
GitHub
Plataformas • 5 min de lectura

IPC de macOS

Arquitectura IPC de macOS para la app OpenClaw, transporte de nodo del gateway, y PeekabooBridge

''Modelo actual:'' un socket Unix local conecta el ''servicio host de nodo'' a la ''app macOS'' para aprobaciones de exec + ''system.run''. Existe un CLI de debug ''openclaw-mac'' para verificaciones de descubrimiento/conexión; las acciones del agente aún fluyen a través del WebSocket del Gateway y ''node.invoke''. La automatización de UI usa PeekabooBridge.

Tutorial.step

Objetivos

- Instancia única de app GUI que posee todo el trabajo facing-TCC (notificaciones, grabación de pantalla, micrófono, voz, AppleScript).

- Una superficie pequeña para automatización: comandos de Gateway + nodo, más PeekabooBridge para automatización de UI.

- Permisos predecibles: siempre el mismo bundle ID firmado, lanzado por launchd, para que las concesiones TCC persistan.

Tutorial.step

Cómo funciona

#

Tutorial.step

Transporte de Gateway + nodo

- La app ejecuta el Gateway (modo local) y se conecta a él como un nodo.

- Las acciones del agente se realizan vía ''node.invoke'' (ej. ''system.run'', ''system.notify'', ''canvas.*'').

#

Tutorial.step

Servicio de nodo + IPC de app

- Un servicio host de nodo headless se conecta al WebSocket del Gateway.

- Las solicitudes ''system.run'' se reenvían a la app macOS sobre un socket Unix local.

- La app ejecuta el exec en contexto de UI, solicita si es necesario, y retorna la salida.

Diagrama (SCI):

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

#

Tutorial.step

PeekabooBridge (automatización de UI)

- La automatización de UI usa un socket UNIX separado llamado ''bridge.sock'' y el protocolo JSON de PeekabooBridge.

- Orden de preferencia de host (lado cliente): Peekaboo.app → Claude.app → OpenClaw.app → ejecución local.

- Seguridad: los hosts del bridge requieren un TeamID permitido; el escape hatch same-UID solo-DEBUG está protegido por ''PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1'' (convención de Peekaboo).

- Ver: ''Uso de PeekabooBridge'' para detalles.

Tutorial.step

Flujos operacionales

- Reiniciar/reconstruir: ''SIGN_IDENTITY="Apple Development: <Nombre de Desarrollador> (<TEAMID>)" scripts/restart-mac.sh''

- Mata instancias existentes

- Build Swift + empaquetado

- Escribe/bootstrap/kickstart el LaunchAgent

- Instancia única: la app termina temprano si otra instancia con el mismo bundle ID está ejecutándose.

Tutorial.step

Notas de endurecimiento

- Preferir requerir coincidencia de TeamID para todas las superficies privilegiadas.

- PeekabooBridge: ''PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1'' (solo DEBUG) puede permitir llamadores same-UID para desarrollo local.

- Toda comunicación permanece solo local; no se exponen sockets de red.

- Los prompts de TCC se originan solo desde el bundle de la app GUI; mantén el bundle ID firmado estable entre reconstrucciones.

- Endurecimiento de IPC: modo de socket ''0600'', token, verificaciones de peer-UID, challenge/response HMAC, TTL corto.