> nodes & devices

Nodes are companion apps — macOS, iOS, Android — that connect to the gateway with role: node and expose device capabilities: camera, screen, Canvas, location, notifications, and raw RPC. Pairing is a two-step approval (a pending request you approve with openclaw devices approve), and risky commands stay off until you opt in per command. Read-only actions are permissive; anything that captures or sends requires the app foregrounded and an explicit allowCommands entry.

// nodes & devices

5 commands

// faq

How do I pair my phone as a node?

Install the node app and point it at your gateway; it creates a pending pairing request. Run openclaw nodes pending (or openclaw devices list) to see it, then openclaw devices approve <requestId>. Requests expire five minutes after the last retry, and reconnecting with changed auth creates a new requestId, so approve the current entry.

Why do camera and screen commands fail with NODE_BACKGROUND_UNAVAILABLE?

Capture commands only work with the node app in the foreground — a backgrounded phone returns NODE_BACKGROUND_UNAVAILABLE. Bring the app forward and retry. These commands also need an explicit opt-in (see the next answer).

How do I enable risky node commands like sms.send?

Sensitive commands (camera.snap, screen.record, contacts.add, calendar.add, sms.send) are refused unless you opt in via gateway.nodes.allowCommands in openclaw.json. gateway.nodes.denyCommands always overrides an allow, so a deny wins even if the command is also allowlisted. Read-only commands like device.status work without opt-in.

What can I do with the Canvas?

The Canvas is a controllable web surface on the node. openclaw nodes canvas present --target <url> shows a page, canvas navigate and canvas eval drive it (for example running document.title), and canvas snapshot captures an image. It is how agents show visual output or run browser workflows on a paired device.