macOS: приложение, разрешения, Canvas, Gateway

macOS-приложение OpenClaw — это menu-bar компаньон. Он управляет разрешениями, запускает или подключается к Gateway и предоставляет macOS-специфичные возможности (Canvas, камера, запись экрана) как нода.

Что делает приложение

  • Показывает статус и уведомления в menu bar
  • Управляет TCC-разрешениями (уведомления, Accessibility, запись экрана, микрофон, AppleScript)
  • Запускает или подключается к Gateway (local или remote)
  • Предоставляет macOS-инструменты: Canvas, Camera, Screen Recording, system.run
  • Устанавливает CLI (openclaw) через npm/pnpm/bun

Local vs Remote

Режим Поведение
Local (по умолчанию) Подключается к локальному Gateway или запускает его через launchd
Remote Подключается к удалённому Gateway через SSH/Tailscale. Запускает node host service

В remote-режиме приложение не запускает Gateway как дочерний процесс — только node service для доступа удалённого Gateway к Mac.

Установка

1. Установить и запустить OpenClaw.app

2. Пройти чеклист разрешений (TCC)

3. Убедиться что Local-режим активен и Gateway запущен

4. (Опционально) Установить CLI для терминала

CLI (обязательно для local)

npm install -g openclaw

macOS-приложение предпочитает npm, затем pnpm, затем bun.

Launchd

Приложение управляет per-user LaunchAgent: ai.openclaw.gateway

# Перезапустить
launchctl kickstart -k gui/$UID/ai.openclaw.gateway

# Остановить
launchctl bootout gui/$UID/ai.openclaw.gateway

Логи: /tmp/openclaw/openclaw-gateway.log

  • Закрытие приложения не останавливает Gateway (launchd поддерживает)
  • Если Gateway уже запущен на нужном порту — приложение подключается к нему

Разрешения macOS

macOS-разрешения (TCC) привязаны к code signature, bundle ID и пути приложения. Если что-то из этого меняется — macOS сбрасывает гранты.

Необходимые разрешения

Разрешение Для чего
Notifications Уведомления от агента
Accessibility Автоматизация UI
Screen Recording Скриншоты, запись экрана
Microphone Голосовые вызовы
Speech Recognition Распознавание речи
Automation (AppleScript) Управление другими приложениями

Когда пропадают промпты

1. Закройте приложение

2. Удалите запись в System Settings → Privacy & Security

3. Перезапустите приложение из того же пути

4. Если не помогло: sudo tccutil reset Accessibility ai.openclaw.mac

5. Перезагрузите macOS

Файлы и папки (Desktop/Documents/Downloads)

macOS может блокировать доступ к Desktop, Documents и Downloads для фоновых процессов. Решение:

  • Дать доступ процессу (Terminal, LaunchAgent)
  • Переместить файлы в workspace (~/.openclaw/workspace)

Node capabilities (mac)

macOS-приложение работает как нода и предоставляет:

Команда Что делает
canvas.present/navigate/eval/snapshot Управление Canvas
camera.snap/clip Камера
screen.snapshot/record Запись экрана
system.run Запуск команд
system.notify Системные уведомления

Exec approvals (system.run)

system.run контролируется через Exec approvals (Settings → Exec approvals).

{
  "version": 1,
  "defaults": {
    "security": "deny",
    "ask": "on-miss"
  },
  "agents": {
    "main": {
      "security": "allowlist",
      "ask": "on-miss",
      "allowlist": [{ "pattern": "/opt/homebrew/bin/rg" }]
    }
  }
}

Файл: ~/.openclaw/exec-approvals.json

  • Shell-синтаксис (&&, ||, ;, |, $) считается промахом allowlist
  • «Always Allow» добавляет команду в allowlist
  • Env overrides фильтруются (блокируются PATH, DYLD_*, LD_*)

Canvas

Canvas — визуальная панель на WKWebView для HTML/CSS/JS и A2UI.

  • Хранение: ~/Library/Application Support/OpenClaw/canvas//
  • URL-схема: openclaw-canvas:///
  • Авто-перезагрузка при изменении файлов
  • Одна панель видима одновременно

Управление через CLI

openclaw nodes canvas present --node 
openclaw nodes canvas navigate --node  --url "/"
openclaw nodes canvas eval --node  --js "document.title"
openclaw nodes canvas snapshot --node 

A2UI

A2UI рендерится внутри Canvas. Хост: http://:18789/_openclaw_/a2ui/

Приложение регистрирует URL-схему openclaw://:

open 'openclaw://agent?message=Hello%20from%20deep%20link'

Без key — подтверждение. С key — unattended mode (для автоматизаций).

State dir

⚠️ Не используйте iCloud для state dir. Синхронизация добавляет latency и вызывает file-lock коллизии.

OPENCLAW_STATE_DIR=~/.openclaw

Что дальше