* docs(cli): apply STE structural fixes to small CLI reference pages * docs(cli): STE structural fixes for cron and browser reference * docs(cli): STE structural fixes for migrate and triage reference * docs(concepts): STE structural fixes for architecture, agent, presence, mantis runbook * docs(concepts): STE structural fixes for session-state and models * docs(concepts): STE structural fixes for user-model * docs(concepts): STE structural fixes for mantis * docs(concepts): STE fixes and person-noun normalization for multi-user * docs(concepts): STE fixes and failover term normalization for model-failover * docs(concepts): define Mantis runbook terms * docs(gateway): STE structural fixes for logging, local-models, tailscale, multiple-gateways * docs(gateway): normalize Configuration reference naming and STE fixes * docs(gateway): STE fixes and workspace term normalization for openshell * docs(gateway): split semicolon-joined sentences in operator-scopes, restart-recovery, heartbeat, cli-backends * docs(gateway): finish semicolon splits in gateway reference pages * docs(gateway): normalize Gateway, heartbeat, tombstone and profile terminology * docs(gateway): split remaining multi-clause sentences in heartbeat and cli-backends * docs(gateway): split semicolon in heartbeat transcript-markers paragraph from main --------- Co-authored-by: Vincent Koc <vincent@openclaw.org>
8.3 KiB
| summary | read_when | title | ||
|---|---|---|---|---|
| CLI reference for `openclaw nodes` (status, pairing, invoke, camera/screen/location/notify and the macOS widget panel) |
|
Nodes CLI |
openclaw nodes
Manage paired nodes (devices) and invoke node capabilities.
Related: Nodes overview - Active computer presence - Camera nodes - Image nodes
Common options on every subcommand: --url <url>, --token <token>, --timeout <ms> (default varies by command), --json.
For numeric options such as --location-timeout, --max-age, and --quality, omit
the flag to use its default. An explicit empty or whitespace-only value is invalid
and fails before node lookup or Gateway requests.
Status
openclaw nodes status
openclaw nodes status --connected
openclaw nodes status --last-connected 24h
openclaw nodes list
openclaw nodes describe --node <idOrNameOrIp>
status and list both accept --connected (only connected nodes) and --last-connected <duration> (for example 24h or 7d, matching only nodes that connected within the duration). Both use the Gateway's recorded last connection time, including recent reconnects and disconnected nodes with known connection history. list shows pending and paired nodes in separate tables. Paired rows carry the most recent connect age (Last Connect). status shows one merged table with per-node capability, version, and last-input detail. A connected macOS node reports last input only after the user enables Active computer detection and grants Accessibility. The freshest row is marked active. See Active computer presence. describe prints one node's capabilities, permissions, activity, and effective/pending invoke commands.
When host stats are available, status includes a detail fragment such as
load 3.2/24 · mem 151/192 GB · disk 1.2 TB free. describe shows the same
summary in its Stats row. Load is the 1-minute average followed by CPU count,
memory is used/total, and byte values use binary scaling with GB/TB labels.
Unavailable load or disk readings are omitted. Offline nodes show the saved
snapshot with an age such as (last known 27d ago), measured from the snapshot's
original timestamp. See Node host stats.
--node accepts an exact ID, IP address, display name, or ID prefix of at least six characters. Exact ID and IP matches take precedence over names and prefixes. Within the strongest match, connected nodes take precedence. If current clients share a name, use an exact ID to disambiguate. Client type does not choose the target. The legacy migration exception prefers a unique OpenClaw client only when every other tied entry is a known Clawdbot or Moldbot client.
Pairing
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>
These commands manage the node's approved command/capability surface on its paired-device record. Device pairing (openclaw devices approve) gates the node's WebSocket connect handshake.
For manual enrollment, first approve the device request, then restart or rerun
a node paused on PAIRING_REQUIRED. Its reconnect creates the separate request
shown by nodes pending. Approve that node request, whose ID differs from the
device request ID. See Node pairing and status
for the complete sequence.
removerevokes the device'snoderole and clears its approved and pending command/capability surfaces. It disconnects the device's node-role sessions. A mixed-role device keeps its record and other roles. A node-only device record is deleted.- Removal stays effective even if worker cleanup reports an error: revoked node connections still close.
pendingonly needsoperator.pairingscope.gateway.nodes.pairing.autoApproveCidrscan approve explicitly trusted, first-timerole: nodedevice pairing. It is off by default and does not approve role upgrades or the separate command surface. That request still appears innodes pending.gateway.nodes.pairing.sshVerifyis on by default. It auto-approves first-timerole: nodedevice pairing when the gateway can verify the device key over SSH to the node host. The first capability surface is approved in the same step. See Node pairing.approvescope requirements follow the pending request's declared commands:- commandless request:
operator.pairing - ordinary node commands:
operator.pairing+operator.write - admin-sensitive commands (
system.run,system.run.prepare,system.which,browser.proxy,browser.proxy.upload.v1,fs.listDir, andsystem.execApprovals.get/set):operator.pairing+operator.admin
- commandless request:
- These requirements classify node commands relayed through
node.invoke. The top-level Gatewayfs.listDirRPC needsoperator.writefor workspace-contained host browsing andoperator.adminwhennodeIdis present. 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
openclaw nodes invoke --node <id> --command system.which --params '{"bins":["uname"]}'
Flags:
--command <command>(required): e.g.device.info.--params <json>: JSON object string (default{}).--invoke-timeout <ms>: node invoke timeout as a positive integer (default15000).--timeout <ms>: Gateway transport timeout (default30000). For a positive invoke timeout, the effective transport timeout ismax(timeout, invokeTimeout + 10000), allowing transport grace beyond the node's invoke deadline.--idempotency-key <key>: optional idempotency key.
The invocation timeout covers Gateway checks, node wake-up, readiness retries, and the node response. Clock adjustments do not reset or extend this elapsed-time budget.
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
openclaw nodes notify --node <id> --title "Build" --body "Done" --priority timeSensitive
openclaw nodes push --node <id> --title "OpenClaw" --environment sandbox
openclaw nodes location get --node <id> --accuracy precise
openclaw nodes screen record --node <id> --duration 10s --fps 10 --out ./clip.mp4
notifysends a local notification on a node that declaressystem.notify, including macOS, iOS, Android, and direct watchOS nodes. Direct watchOS delivery requires OpenClaw to be active. 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. Accepted delivery exits0. A typed APNs rejection preserves the complete text or JSON diagnostic and exits non-zero.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).- Explicit screen output paths are staged beside the destination. They replace it only after a complete write. A failed write leaves an existing file unchanged.
Camera and macOS widget-panel commands have their own docs: Camera nodes, Widget panel. The bundled experimental Canvas plugin registers openclaw nodes canvas with the surviving present, hide, and navigate subcommands.