openclaw nodes
Manage paired nodes (devices) and invoke node capabilities.
Related: Nodes overview - Camera nodes - Image nodes
Common options on every subcommand: --url <url>, --token <token>, --timeout <ms> (default 10000), --json.
Status
status and list both accept --connected (only connected nodes) and --last-connected <duration> (e.g. 24h, 7d; only nodes that connected within the duration). list shows pending and paired nodes in separate tables, with paired rows including the most recent connect age (Last Connect); status shows one merged table with per-node capability and version detail. describe prints one node’s capabilities, permissions, and effective/pending invoke commands.
Pairing
node.pair.* store, separate from device pairing (openclaw devices approve) that gates the node’s WS connect handshake. See Nodes for how the two relate.
removerevokes the node’s paired-role entry. For a device-backed node this revokes thenoderole in the device pairing store and disconnects its node-role sessions: a mixed-role device keeps its row and only loses thenoderole, a node-only device row is deleted. It also clears any matching legacy gateway-owned node pairing record.pendingonly needsoperator.pairingscope.gateway.nodes.pairing.autoApproveCidrscan skip the pending step for explicitly trusted, first-timerole: nodedevice pairing. Off by default; does not approve role upgrades.approvescope requirements follow the pending request’s declared commands:- commandless request:
operator.pairing - non-exec node commands:
operator.pairing+operator.write system.run/system.run.prepare/system.which:operator.pairing+operator.admin
- commandless request:
removescope:operator.pairingcan remove non-operator node rows; a device-token caller revoking its own node role on a mixed-role device additionally needsoperator.admin.
Invoke
--command <command>(required): e.g.canvas.eval.--params <json>: JSON object string (default{}).--invoke-timeout <ms>: node invoke timeout (default15000).--idempotency-key <key>: optional idempotency key.
system.run and system.run.prepare are blocked here; use the exec tool with host=node for shell execution instead. system.which is allowed through invoke.
Notify, push, location, screen
notifysends a local notification on a node (macOS only). Requires--titleor--body. Options:--sound <name>,--priority <passive|active|timeSensitive>,--delivery <system|overlay|auto>(defaultsystem),--invoke-timeout <ms>(default15000).pushsends an APNs test push to an iOS node. Options:--title <text>(defaultOpenClaw),--body <text>,--environment <sandbox|production>to override the detected APNs environment.location getfetches the node’s current location. Options:--max-age <ms>(reuse a cached fix),--accuracy <coarse|balanced|precise>,--location-timeout <ms>(default10000),--invoke-timeout <ms>(default20000).screen recordcaptures a short clip and prints the saved path (or writes JSON with--json). Options:--screen <index>(default0),--duration <ms|10s>(default10000),--fps <fps>(default10),--no-audio,--out <path>,--invoke-timeout <ms>(default120000).
openclaw nodes canvas as a compatibility mount point.