iOS App
iOS node app: connect to the Gateway, pairing, Canvas, and troubleshooting.
Availability: Internal preview. iOS app is not yet publicly distributed.
What it can do
- Connect to Gateway via WebSocket (same LAN or tailnet).
- Expose node capabilities: Canvas, screenshot, camera capture, location, walkie-talkie mode, voice wake.
- Receive ''node.invoke'' commands and report node status events.
Prerequisites
- Gateway must be running on another device (macOS, Linux, or Windows via WSL2).
- Network path meets one of:
- Same LAN, discovered via Bonjour, or
- Via tailnet using unicast DNS-SD (example domain: ''openclaw.internal.''), ''or''
- Manual host/port (fallback)
Quick start (pairing + connection)
1. Start Gateway:
openclaw gateway --port 18789
2. Open Settings in iOS app, select discovered gateway (or enable Manual Host and fill in host/port).
3. Approve pairing request on gateway host:
openclaw nodes pending openclaw nodes approve '<requestId>'
4. Verify connection:
openclaw nodes status
openclaw gateway call node.list --params "{'}"Discovery paths
#
Bonjour (LAN)
Gateway broadcasts ''_openclaw-gw._tcp'' on ''local.'' iOS app automatically lists these gateways.
#
Tailnet (cross-network)
If mDNS is blocked, use unicast DNS-SD zone (choose a domain, e.g. ''openclaw.internal.''), and configure Tailscale split DNS.
See ''Bonjour'' for CoreDNS example.
#
Manual host/port
Enable ''Manual Host'' in Settings and enter gateway's host + port (default ''18789'').
Canvas + A2UI
iOS node uses WKWebView to render canvas. Can be driven via ''node.invoke'':
openclaw nodes invoke --node "iOS Node" --command canvas.navigate --params {"url":"http://<gateway-host>:18793/__openclaw__/canvas/"}Notes:
- Gateway canvas host serves ''/__openclaw__/canvas/'' and ''/__openclaw__/a2ui/''.
- iOS node automatically navigates to A2UI when canvas host URL is discovered on connection.
- Use ''canvas.navigate'' with ''{"url":""}'' to return to built-in scaffold.
#
Canvas eval / snapshot
openclaw nodes invoke --node "iOS Node" --command canvas.eval --params {"javaScript":"(() => { const {ctx} = window.__openclaw; ctx.clearRect(0,0,innerWidth,innerHeight); ctx.lineWidth=6; ctx.strokeStyle=\"#ff2d55\"; ctx.beginPath(); ctx.moveTo(40,40); ctx.lineTo(innerWidth-40, innerHeight-40); ctx.stroke(); return \"ok\"; })()"}openclaw nodes invoke --node "iOS Node" --command canvas.snapshot --params {"maxWidth":900,"format":"jpeg"}Voice wake and walkie-talkie mode
- Voice wake and talk mode can be enabled in Settings.
- iOS may suspend audio in background; when app is not in foreground, voice features should be considered best-effort.
Common errors
- ''NODE_BACKGROUND_UNAVAILABLE'': Bring iOS app to foreground (canvas/camera/screen commands require foreground).
- ''A2UI_HOST_NOT_CONFIGURED'': Gateway not broadcasting canvas host URL; check ''canvasHost'' in ''Gateway configuration''.
- No pairing prompt: Run ''openclaw nodes pending'' and approve manually.
- Cannot reconnect after reinstall: Pairing token in Keychain is cleared; need to re-pair.