Documentation Index
Fetch the complete documentation index at: https://openclaw.zhcndoc.com/llms.txt
Use this file to discover all available pages before exploring further.
Remote OpenClaw (macOS ⇄ remote host)
This flow lets the macOS app act as a full remote controller for an OpenClaw gateway running on another host (desktop/server). It powers the app’s Remote over SSH mode. All features—health probes, Voice Wake forwarding, and Web Chat—reuse the same remote SSH configuration from Settings → General.Modes
- Local (this Mac): everything runs on the laptop. No SSH involved.
- Remote over SSH (default): OpenClaw commands execute on the remote host. The mac app opens one SSH connection using
-o BatchModeplus your chosen identity/key and local port forwarding. - Remote direct (ws/wss): no SSH tunnel. The mac app connects straight to the gateway URL (for example via Tailscale Serve or a public HTTPS reverse proxy).
Remote transport
Remote mode supports two transports:- SSH tunnel (default): uses
ssh -N -L ...to forward the gateway port to localhost. Because the tunnel is loopback, the gateway sees node IPs as127.0.0.1. - Direct (ws/wss): connects straight to the gateway URL. The gateway sees the real client IP.
gateway.remote.sshTarget. The app keeps gateway.remote.url set to the local
tunnel endpoint, such as ws://127.0.0.1:18789, so the CLI, Web Chat, and the
local node-host service all share the same secure loopback transport.
Browser automation in remote mode is handled by the CLI node host rather than
the native macOS app node. The app will launch an installed node host service
when possible; if you need browser control from that Mac, install/start it with
openclaw node install ... and openclaw node start (or run
openclaw node run ... in the foreground) and target that browser-capable
node.
Remote host prerequisites
- Install Node + pnpm and build/install the OpenClaw CLI (
pnpm install && pnpm build && pnpm link --global). - Make sure
openclawis on PATH in non-interactive shells (symlink into/usr/local/binor/opt/homebrew/binif needed). - Enable SSH with key auth. We recommend using a Tailscale IP so the host stays reachable off-LAN.
macOS app setup
- Open Settings → General.
- Under How OpenClaw runs, choose Remote over SSH and configure:
- Transport: SSH tunnel or Remote direct (ws/wss).
- SSH target:
user@host(optional:port).- If the gateway is on the same LAN and advertises Bonjour, choose it from the discovered list to autofill this field.
- Gateway URL (direct only):
wss://gateway.example.ts.net(orws://...for local/LAN). - Identity file (advanced): path to your key.
- Project root (advanced): remote checkout path used for commands.
- CLI path (advanced): optional path to the runnable
openclawentrypoint/binary (autofilled when a broadcast is available).
- Click Test Remote. Success means the remote
openclaw status --jsonruns correctly. Failures usually mean a PATH/CLI issue; exit code 127 means the CLI wasn’t found remotely. - Health probes and Web Chat now run automatically through this SSH path.
Web Chat
- SSH tunnel: Web Chat connects to the gateway over the forwarded WebSocket control port (default 18789).
- Direct (ws/wss): Web Chat connects straight to the configured gateway URL.
- There is no separate WebChat HTTP server anymore.
Permissions
- The remote host needs the same TCC grants as local (Automation, Accessibility, Screen Recording, Microphone, Speech Recognition, Notifications). Run onboarding on that machine once to grant them.
- Nodes report permission state via
node.list/node.describeso the agent knows what is available.
Security notes
- Prefer loopback binds on the remote host and connect through SSH or Tailscale.
- SSH tunneling uses strict host key checking; trust the host key first so it exists in
~/.ssh/known_hosts. - If you bind the Gateway to a non-loopback interface, require real Gateway auth: token, password, or an identity-aware reverse proxy with
gateway.auth.mode: "trusted-proxy". - See Security and Tailscale.
WhatsApp login flow (remote)
- Run
openclaw channels login --verboseon the remote host. Scan the QR code with WhatsApp on your phone. - If auth expires, rerun login on that host. Health probes surface link issues.
Troubleshooting
- exit 127 / not found:
openclaw不在非登录 shell 的 PATH 中。将其添加到/etc/paths、你的 shell rc,或建立符号链接到/usr/local/bin//opt/homebrew/bin。 - Health probe failed: 检查 SSH 可达性、PATH,以及 Baileys 是否已登录(
openclaw status --json)。 - Web Chat stuck: 确认 gateway 正在远程主机上运行,且转发端口与 gateway 的 WS 端口匹配;UI 需要健康的 WS 连接。
- Node IP shows 127.0.0.1: 使用 SSH 隧道时这是预期行为。如果你希望 gateway 看到真实的客户端 IP,请将 Transport 切换为 Direct (ws/wss)。
- Dashboard works but Mac capabilities are offline: 这表示应用的 operator/control 连接是健康的,但 companion node 连接未连接或缺少其命令接口。打开菜单栏设备部分,检查该 Mac 是否显示为
paired · disconnected。对于wss://*.ts.net的 Tailscale Serve 端点,应用会在证书轮换后检测到陈旧的旧版 TLS 叶子 pin,并在 macOS 信任新证书时清除陈旧 pin,然后自动重试。如果证书不被系统信任,或者主机不是 Tailscale Serve 名称,请检查证书,或切换到 Remote over SSH。 - Voice Wake: 触发短语会在远程模式下自动转发;不需要单独的转发器。
通知声音
可从脚本中使用openclaw 和 node.invoke 为每条通知选择声音,例如: