docs/platforms/mac/peekaboo.md
OpenClaw can host PeekabooBridge as a local, permission-aware UI automation broker (PeekabooBridgeHostCoordinator, backed by the steipete/Peekaboo Swift package). This lets the peekaboo CLI drive UI automation while reusing the macOS app's TCC permissions.
peekaboo CLI (there is no separate openclaw ui ... surface).OpenClaw has three desktop-control paths that intentionally stay separate:
peekaboo CLI is the client and uses OpenClaw.app's macOS permissions for screenshots, clicks, menus, dialogs, Dock actions, and window management.codex plugin checks and can install Codex's computer-use MCP plugin (extensions/codex/src/app-server/computer-use.ts), then lets Codex own native desktop-control tool calls during Codex-mode turns. OpenClaw does not proxy those actions through PeekabooBridge.cua-driver MCP: OpenClaw can register TryCua's upstream cua-driver mcp server as a normal MCP server, giving agents the CUA driver's own schemas and pid/window/element-index workflow without routing through the Codex marketplace or the PeekabooBridge socket.Use Peekaboo for the broad macOS automation surface via OpenClaw.app's permission-aware bridge host. Use Codex Computer Use when a Codex-mode agent should rely on Codex's native plugin. Use direct cua-driver mcp to expose the CUA driver to any OpenClaw-managed runtime as a normal MCP server.
In the macOS app: Settings -> Enable Peekaboo Bridge.
When enabled, OpenClaw starts a local UNIX socket server at ~/Library/Application Support/OpenClaw/<socket-name>. If disabled, the host stops and peekaboo falls back to other available hosts. The coordinator also maintains legacy socket symlinks (clawdbot, clawdis, moltbot under Application Support) pointing at the current socket for older peekaboo installs.
Peekaboo clients typically try hosts in this order:
Use peekaboo bridge status --verbose to see which host is active and which socket path is in use. Override with:
export PEEKABOO_BRIDGE_SOCKET=/path/to/bridge.sock
node runtime for Accessibility. Granting Accessibility to node lets any package launched by that Node executable inherit GUI automation access; see macOS permissions.requestTimeoutSec: 10).Snapshots are stored in memory with a 10-minute validity window and a cap of 50 snapshots (InMemorySnapshotManager); artifacts are not deleted on cleanup. If you need longer retention, re-capture from the client.
peekaboo reports "bridge client is not authorized", ensure the client is properly signed or run the host with PEEKABOO_ALLOW_UNSIGNED_SOCKET_CLIENTS=1 in debug mode only.