Skip to main content

Host Commands

Manage hosts in your Clawrium fleet.

clawctl host <command> [options]

Commands​

CommandDescription
clawctl host createRegister a new host with the fleet
clawctl host editEdit a host's properties (alias, IP address, description)
clawctl host getList all registered hosts
clawctl host deleteRemove a host from the fleet
clawctl host statusCheck status of a host
clawctl host resetReset a host, removing all agents and users
clawctl host validateValidate NemoClaw sandbox health on a host
clawctl host addressManage multiple addresses for a host

clawctl host create​

Register a host with the fleet.

clawctl host create <hostname> --user xclm [--alias NAME] [--port PORT]

On first run for a hostname, this command generates a per-host SSH keypair under ~/.config/clawrium/keys/<hostname>/ and tries to verify SSH access as xclm. If that fails (typical on a fresh host where xclm does not yet exist), it prints the Linux and macOS manual setup commands — with your freshly-generated public key embedded inline — and exits non-zero.

Run those commands on the host (see Host Preparation), then re-run clawctl host create to actually register the host.

The --bootstrap flag was removed in #547. It promised automatic xclm setup but required the bootstrap user to already have passwordless sudo, which was the same precondition manual setup ends with.

Arguments​

ArgumentDescription
hostnameHost IP address or hostname

Options​

OptionShortDescription
--port-pSSH port (default: 22)
--user-uManagement user on the host (must be xclm)
--alias-aFriendly name for this host

Example — first run (xclm not yet set up)​

$ clawctl host create 192.168.1.100 --user xclm --alias pi-lab
Generating SSH keypair for '192.168.1.100'...
Keypair created: /home/user/.config/clawrium/keys/192.168.1.100/xclm_ed25519.pub
xclm SSH verification failed: Authentication failed - check SSH keys

Manual setup required. Log into the host with a sudo-capable user and
run the block that matches its OS:

## Linux
sudo useradd -m -s /bin/bash xclm
…

## macOS
sudo dscl . -create /Users/xclm
…
sudo dseditgroup -o edit -a xclm -t user com.apple.access_ssh

Then re-run: clawctl host create 192.168.1.100 --user xclm

Example — re-run (xclm configured)​

$ clawctl host create 192.168.1.100 --user xclm --alias pi-lab
host/pi-lab created on 192.168.1.100:22

Host Key Verification​

If the host key is unknown, the command surfaces a prompt and exits non-zero. Run ssh -p <port> xclm@<hostname> once to record the key, then re-run clawctl host create.

Exit Codes​

CodeMeaning
0Host registered (or already exists with matching settings)
1xclm SSH verification failed (manual setup needed), or host already exists with different settings

clawctl host edit​

Edit a host record in place — update the SSH user, SSH port, alias, IP address, or description.

clawctl host edit <hostname> [options]

The host is identified by its existing name or alias (the positional HOSTNAME argument). At least one option must be provided.

Arguments​

ArgumentDescription
hostnameExisting host name or alias to edit

Options​

OptionShortDescription
--user-uNew SSH user
--port-pNew SSH port (1–65535)
--alias-aNew friendly name for this host
--hostnameNew IP address or hostname (e.g. after a DHCP lease renewal). key_id is preserved.
--description-dFree-form description for the host. Pass "" to clear it.

Example — change SSH user​

$ clawctl host edit mybox --user ops

Example — change SSH port​

$ clawctl host edit mybox --port 2222

Example — change alias​

$ clawctl host edit mybox --alias lab-pi-4

Example — change IP address (DHCP renewal)​

$ clawctl host edit mybox --hostname 10.0.0.55

When --hostname is used, hostname and the primary addresses[] entry are updated atomically; the host's key_id (and therefore the SSH key) is preserved so per-agent secrets stored under the host remain valid. Confirm the public key is still present in authorized_keys on the new address.

Example — set description​

$ clawctl host edit mybox --description "primary lab box"

Example — change several fields at once​

$ clawctl host edit mybox --user ops --port 2222 --alias lab-pi-4 --description "production server"

Exit Codes​

CodeMeaning
0Host updated successfully
1Host not found or invalid input

clawctl host get​

List all registered hosts.

clawctl host get

Example​

$ clawctl host get
Registered Hosts
┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Alias ┃ Host ┃ Architecture ┃ Cores ┃ Memory (GB) ┃ Tags ┃
┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ pi-lab │ 192.168.1.100 │ aarch64 │ 4 │ 4.0 │ production │
│ nuc-01 │ 192.168.1.101 │ x86_64 │ 8 │ 16.0 │ dev │
│ - │ 10.0.0.50 │ x86_64 │ 4 │ 8.0 │ - │
└─────────┴─────────────────┴──────────────┴───────┴─────────────┴────────────┘

clawctl host delete​

Remove a host from the fleet.

clawctl host delete <hostname> [--force]

Prompts for confirmation unless --force is specified. Also deletes the host's SSH keypair.

Arguments​

ArgumentDescription
hostnameHost hostname or alias to remove

Options​

OptionShortDescription
--force-fSkip confirmation prompt

Example​

$ clawctl host delete pi-lab
Remove host 'pi-lab'? This cannot be undone. [y/N]: y
Host 'pi-lab' removed successfully.
Keypair for '192.168.1.100' deleted.

Exit Codes​

CodeMeaning
0Host removed successfully or operation cancelled by user
1Host not found or removal failed

clawctl host status​

Check status of a host.

clawctl host status <hostname> [--refresh]

Shows connection status, hardware information, and metadata. Use --refresh to update hardware information.

Arguments​

ArgumentDescription
hostnameHost hostname or alias to check

Options​

OptionShortDescription
--refresh-rRe-detect hardware capabilities

Example​

$ clawctl host status pi-lab
Checking status of 'pi-lab'...
Host Status: pi-lab
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Property ┃ Value ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ Connection │ Connected │
│ Hostname │ 192.168.1.100 │
│ Port │ 22 │
│ User │ xclm │
│ Added │ 2026-04-01T10:30:00Z │
│ Last Seen │ 2026-04-05T08:15:00Z │
│ Tags │ production │
│ Architecture │ aarch64 │
│ CPU Cores │ 4 │
│ Memory │ 4.0 GB │
│ GPU │ None detected │
└──────────────┴─────────────────────────────┘

Refresh hardware information:

$ clawctl host status pi-lab --refresh
Checking status of 'pi-lab'...
Refreshing hardware information...
Hardware information updated.

Exit Codes​

CodeMeaning
0Host is connected
1Host not found or disconnected

clawctl host reset​

Reset a host, removing all agents and users.

clawctl host reset <hostname> [options]

This command will:

  • Stop and remove all *claw services
  • Remove all users with uid >= 1000 (except xclm)
  • Clean clawrium configuration paths

Arguments​

ArgumentDescription
hostnameHost hostname or alias to reset

Options​

OptionShortDescription
--yes-ySkip confirmation prompt
--dry-run-nShow what would be removed without executing
--untrackAlso remove host from Clawrium tracking after reset

Example​

Dry run to preview changes:

$ clawctl host reset pi-lab --dry-run
Scanning 'pi-lab' for targets...

Users to remove (2):
- zc-work
- oc-home

Services to remove (2):
- zeroclaw-work.service
- openclaw-home.service

Paths to clean (1):
- /home/zc-work/.config/zeroclaw

Dry run - no changes made

Execute reset:

$ clawctl host reset pi-lab --yes
Scanning 'pi-lab' for targets...
Resetting 'pi-lab'...
Reset complete!
Users removed: 2
Services removed: 2
Paths cleaned: 1

Reset and untrack:

$ clawctl host reset pi-lab --yes --untrack
...
Reset complete!
Untracking 'pi-lab'...
Host removed from tracking.

Exit Codes​

CodeMeaning
0Reset completed successfully
1Host not found, reset failed, or user aborted

clawctl host validate​

Read-only aggregation of NemoClaw sandbox health for every openclaw agent on the host. Since v26.7.3, every openclaw runs inside a NemoClaw sandbox — this command runs nemoclaw status <sandbox> for each one and reports the collective health.

clawctl host validate <hostname> [options]

Arguments​

ArgumentDescription
hostnameHost hostname or alias to validate

Options​

OptionShortDescription
--output-oOutput format: table (default), json, yaml
--no-headersOmit the header row (table mode only)

Example​

$ clawctl host validate pi-lab
AGENT SANDBOX STATUS DETAIL
opc-work opc-work-sbx healthy
opc-lab opc-lab-sbx unhealthy sandbox not running

When the host has no openclaw agents, nothing is probed:

$ clawctl host validate lab2
host 'lab2': no openclaw agents to validate

Status Values​

StatusMeaning
healthynemoclaw status <sandbox> succeeded
unhealthyThe status probe failed; DETAIL carries the error
legacyThe agent record has no sandbox_name — remove and re-create the agent
errorThe probe could not be dispatched at all

Exit Codes​

CodeMeaning
0All sandboxes healthy, or no openclaw agents on the host
1One or more sandboxes are not healthy

Related:


Address Subcommands​

Manage multiple network addresses for a single host. Useful when hosts are reachable via different addresses depending on network context (LAN, VPN, Tailscale, etc.).

clawctl host address <command> [options]
CommandDescription
clawctl host address addAdd an address to a host
clawctl host address removeRemove an address from a host
clawctl host address listList all addresses for a host
clawctl host address set-primarySet a different address as primary

clawctl host address add​

Add an address to a host.

clawctl host address add <host> <address> [--label LABEL]

The first address added to a host is automatically the primary. Additional addresses can be used to reach the host from different network contexts.

Arguments​

ArgumentDescription
hostHost hostname or alias
addressAddress as IPv4, IPv6, or hostname (e.g., 192.168.1.1, myhost.local)

Options​

OptionShortDescription
--label-lLabel for the address (e.g., lan, vpn, external)

Example​

$ clawctl host address add pi-lab 100.64.0.50 --label tailscale
Address '100.64.0.50' (tailscale) added to host 'pi-lab'

Exit Codes​

CodeMeaning
0Address added successfully
1Host not found or address already exists

clawctl host address remove​

Remove an address from a host.

clawctl host address remove <host> <address>

Cannot remove the primary address. Use set-primary to switch to a different address first.

Arguments​

ArgumentDescription
hostHost hostname or alias
addressAddress to remove

Example​

$ clawctl host address remove pi-lab 100.64.0.50
Address '100.64.0.50' removed from host 'pi-lab'

Exit Codes​

CodeMeaning
0Address removed successfully
1Host not found, address not found, or cannot remove primary

clawctl host address list​

List all addresses for a host.

clawctl host address list <host>

Shows the primary address (used for all downstream commands) and any secondary addresses for different network contexts.

Arguments​

ArgumentDescription
hostHost hostname or alias

Example​

$ clawctl host address list pi-lab
Addresses for pi-lab
┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓
┃ Address ┃ Primary ┃ Label ┃ Added ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩
│ 192.168.1.100 │ * │ lan │ 2026-04-01 10:30 │
│ 100.64.0.50 │ │ tailscale │ 2026-04-05 14:15 │
└─────────────────┴─────────┴───────────┴──────────────────┘

Exit Codes​

CodeMeaning
0Addresses listed successfully
1Host not found

clawctl host address set-primary​

Set a different address as the primary for a host.

clawctl host address set-primary <host> <address>

The primary address is used for all downstream commands (agent install, configure, status checks, etc.). Changing the primary updates the host's hostname field.

Arguments​

ArgumentDescription
hostHost hostname or alias
addressAddress to make primary

Example​

$ clawctl host address set-primary pi-lab 100.64.0.50
Primary address for 'pi-lab' set to '100.64.0.50'

Exit Codes​

CodeMeaning
0Primary address updated successfully
1Host not found or address not found