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://
Deep links
Приложение регистрирует 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
Что дальше
- Агенты: обзор — архитектура и workspace
- Ноды и медиа — подключённые устройства
- Конфигурация Gateway — настройка