# iOS App (Node)

## Overview

The iOS app connects to a Gateway via WebSocket, exposing node capabilities including Canvas rendering, screen snapshots, camera capture, location access, and voice features.

## Key Requirements

A Gateway must run on a separate device (macOS, Linux, or Windows via WSL2). Connection options include same-network Bonjour discovery, Tailnet via DNS-SD, or manual host/port entry.

## Setup Process

Users start the Gateway on port 18789, select it in iOS Settings, then approve the pairing request via command line. The `openclaw nodes status` command verifies successful connection.

## Discovery Methods

The system supports three connection approaches:

- **Bonjour**: Advertises `_openclaw-gw._tcp` on `local.` for LAN environments
- **Tailnet**: Uses unicast DNS-SD for cross-network scenarios
- **Manual**: Configuration as a fallback

## Canvas Functionality

The iOS node uses WKWebView for rendering. Users can navigate to URLs, execute JavaScript through `canvas.eval`, and capture snapshots using the node invocation system.

## Voice Capabilities

Voice wake and talk mode options appear in Settings, though background audio suspension may limit reliability when the app isn't active.

## Troubleshooting

Common issues include:

- `NODE_BACKGROUND_UNAVAILABLE` - Requires foreground app status
- Missing canvas host configuration
- Pairing prompts not appearing
- Reconnection failures after reinstall due to cleared Keychain tokens
