macOS App
The OpenClaw macOS app is a menubar companion that manages the Gateway, handles permissions, and exposes macOS capabilities as a node.Features
- Menu bar integration: Native notifications and status indicator
- Bundled Gateway: Runs the Gateway locally via LaunchAgent or connects to remote instances
- Voice wake: Hands-free “Hey OpenClaw” activation with local speech recognition
- Canvas: WebView-based UI automation and screen rendering
- System integration: Camera, screen recording, AppleScript automation
- Permission management: Handles all TCC prompts (Notifications, Accessibility, Screen Recording, Microphone, Speech Recognition)
- Remote mode: Connect to remote Gateway over SSH/Tailscale while exposing local node capabilities
Installation
Download from releases
- Download
OpenClaw-YYYY.M.D.zipfrom GitHub Releases - Extract and move
OpenClaw.appto/Applications - Launch the app (right-click → Open on first launch to bypass Gatekeeper)
- Complete the permissions checklist when prompted
Build from source
Requirements:- Xcode 16+
- Node.js 22+
- pnpm
--no-sign: Fastest dev mode with ad-hoc signing (TCC permissions don’t persist)--sign: Force code signing with available certificate
Gateway modes
Local mode (default)
The app manages a local Gateway via LaunchAgent:- Label:
bot.molt.gateway(orbot.molt.<profile>when using profiles) - The app enables the service via
openclaw gateway installif not present - Start/stop/restart via app menu or:
Remote mode
Connect to a remote Gateway over SSH/Tailscale:- The app connects to remote Gateway WebSocket
- Local node host service runs to expose macOS capabilities to remote Gateway
- SSH tunnel handles WebSocket port forwarding (default 18789)
- Voice wake commands forward to remote Gateway
Voice wake
“Hey OpenClaw” hands-free activation:- Uses on-device speech recognition (no network required)
- Configurable wake words and forwarding patterns
- Commands forwarded to CLI:
openclaw-mac agent --message "${text}" --thinking low - Replies delivered to last active channel (WhatsApp/Telegram/Discord/WebChat)
- Enable/disable wake detection
- Customize wake word phrases
- Set command forwarding template
- Test wake detection
Canvas support
The macOS app exposes Canvas via WKWebView:- Commands:
canvas.present,canvas.navigate,canvas.eval,canvas.snapshot,canvas.a2ui.* - Serves content from Gateway at
http://localhost:18789/__openclaw__/canvas/ - Supports A2UI (agent-to-UI) protocol for dynamic interfaces
- Live reload when workspace files change
Node capabilities
The macOS app registers as a node with these commands:- Canvas:
canvas.present,canvas.navigate,canvas.eval,canvas.snapshot,canvas.a2ui.* - Camera:
camera.snap,camera.clip - Screen:
screen.record - System:
system.run(controlled by exec approvals),system.notify
permissions map so agents can check what’s allowed before invoking.
Permissions
Required TCC permissions:- Notifications: For agent alerts and responses
- Accessibility: For
system.runAppleScript automation - Screen Recording: For screen capture and Canvas screenshots
- Microphone: For voice wake and talk mode
- Speech Recognition: For voice wake processing
Exec approvals (system.run)
system.run is gated by Exec approvals (Settings → Exec approvals):
- Security modes:
deny,allowlist,ask,allow - Ask policy:
never,on-miss,always - Allowlist: Glob patterns for approved binary paths
- Stored locally:
~/.openclaw/exec-approvals.json
Deep links
The app registersopenclaw:// URL scheme:
openclaw://agent
Trigger agent requests from anywhere:
message(required): The message to sendsessionKey(optional): Target sessionthinking(optional): Thinking leveldeliver/to/channel(optional): Delivery targetkey(optional): Unattended mode key (skips confirmation prompt)
- Without
key: Prompts for confirmation and limits message length - With valid
key: Runs unattended (for personal automations)
Troubleshooting
Gateway won’t start
- Check LaunchAgent status:
- View logs:
- Reinstall service:
Voice wake not working
- Verify permissions: Settings → Privacy & Security → Speech Recognition
- Enable “Discovery Debug Logs” in app Settings → Voice Wake
- Check logs for wake detection events:
Canvas commands fail
- Ensure Canvas window is visible (bring to front)
- Check Screen Recording permission
- Verify Gateway canvas host is configured:
Remote mode connection issues
- Test SSH connectivity:
- Verify Gateway is listening:
- Check tunnel status in app Settings → Gateway → Connection Status
Logging
View macOS app logs:bot.molt
Categories: GatewayDiag, WebChatSwiftUI, VoiceWake, Canvas, PermissionManager
See macOS Logging for filtering options.

