docs/cli/nodes.md
openclaw nodesManage paired nodes (devices) and invoke node capabilities.
Related:
Common options:
--url, --token, --timeout, --jsonopenclaw nodes list
openclaw nodes list --connected
openclaw nodes list --last-connected 24h
openclaw nodes pending
openclaw nodes approve <requestId>
openclaw nodes reject <requestId>
openclaw nodes remove --node <id|name|ip>
openclaw nodes rename --node <id|name|ip> --name <displayName>
openclaw nodes status
openclaw nodes status --connected
openclaw nodes status --last-connected 24h
nodes list prints pending/paired tables. Paired rows include the most recent connect age (Last Connect).
Use --connected to only show currently-connected nodes. Use --last-connected <duration> to
filter to nodes that connected within a duration (e.g. 24h, 7d).
Use nodes remove --node <id|name|ip> to delete a stale gateway-owned node pairing record.
Approval note:
openclaw nodes pending only needs pairing scope.gateway.nodes.pairing.autoApproveCidrs can skip the pending step only for
explicitly trusted, first-time role: node device pairing. It is off by
default and does not approve upgrades.openclaw nodes approve <requestId> inherits extra scope requirements from the
pending request:
system.run / system.run.prepare / system.which: pairing + adminopenclaw nodes invoke --node <id|name|ip> --command <command> --params <json>
Invoke flags:
--params <json>: JSON object string (default {}).--invoke-timeout <ms>: node invoke timeout (default 15000).--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.For shell execution on a node, use the exec tool with host=node instead of openclaw nodes run.
The nodes CLI is now capability-focused: direct RPC via nodes invoke, plus pairing, camera,
screen, location, canvas, and notifications.