Skip to main content

Host Commands

Manage hosts in your Clawrium fleet.

clm host <command> [options]

Commands

CommandDescription
clm host initInitialize a host for Clawrium management
clm host addAdd a new host to the fleet
clm host listList all registered hosts
clm host removeRemove a host from the fleet
clm host statusCheck status of a host
clm host resetReset a host, removing all claws and users

clm host init

Initialize a host for Clawrium management.

clm host init <hostname> [--user USER]

Generates a per-host SSH keypair and attempts to configure the xclm management user on the remote host. If SSH access fails, displays manual setup commands.

Arguments

ArgumentDescription
hostnameHost IP or hostname to initialize

Options

OptionShortDescription
--user-uSSH user for initial connection (default: current user)

Example

$ clm host init 192.168.1.100
Generating SSH keypair for '192.168.1.100'...
Keypair created: /home/user/.config/clawrium/keys/192.168.1.100.pub

Attempting connection to 192.168.1.100 as user...
Connection successful!
Setting up xclm management user...

Verifying xclm access...
xclm user configured successfully!

Next step: clm host add 192.168.1.100

Manual Setup

If automatic setup fails, the command displays manual instructions:

# Create xclm user
sudo useradd -m -s /bin/bash xclm

# Grant passwordless sudo
echo "xclm ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/xclm
sudo chmod 440 /etc/sudoers.d/xclm

# Setup SSH access
sudo mkdir -p /home/xclm/.ssh
sudo chmod 700 /home/xclm/.ssh
echo 'ssh-ed25519 AAAA...' | sudo tee /home/xclm/.ssh/authorized_keys
sudo chmod 600 /home/xclm/.ssh/authorized_keys
sudo chown -R xclm:xclm /home/xclm/.ssh

Exit Codes

CodeMeaning
0Host initialized successfully
1Initialization failed or requires manual setup

clm host add

Add a new host to the fleet.

clm host add <hostname> [options]

Requires keypair to exist (run clm host init first). Tests SSH connection before saving and detects hardware capabilities automatically.

Arguments

ArgumentDescription
hostnameHost IP address or hostname

Options

OptionShortDescription
--port-pSSH port (default: 22)
--user-uSSH user (default: xclm)
--alias-aFriendly name for this host
--tags-tComma-separated tags

Example

$ clm host add 192.168.1.100 --alias pi-lab --tags production,arm
Testing connection to 192.168.1.100:22 as xclm...
Connection successful!
Detecting hardware capabilities...
Hardware detected: aarch64, 4 cores, 4096MB RAM

Host 'pi-lab' added successfully!

Host Key Verification

On first connection to a new host, Clawrium prompts for host key verification:

Unknown host key for 192.168.1.100
Key type: ssh-ed25519
Fingerprint: SHA256:abc123...

Warning: Verify this fingerprint matches the host's actual key.

Accept this host key and continue? [y/N]:

Exit Codes

CodeMeaning
0Host added successfully
1Connection failed, host already exists, or keypair missing

clm host list

List all registered hosts.

clm host list

Example

$ clm host list
Registered Hosts
┏━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Alias ┃ Host ┃ Architecture ┃ Cores ┃ Memory (GB) ┃ Tags ┃
┡━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ pi-lab │ 192.168.1.100 │ aarch64 │ 44.0 │ production │
│ nuc-01 │ 192.168.1.101 │ x86_64 │ 816.0 │ dev │
│ - │ 10.0.0.50 │ x86_64 │ 48.0 │ - │
└─────────┴─────────────────┴──────────────┴───────┴─────────────┴────────────┘

clm host remove

Remove a host from the fleet.

clm host remove <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

$ clm host remove 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

clm host status

Check status of a host.

clm 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

$ clm 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:

$ clm 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

clm host reset

Reset a host, removing all claws and users.

clm 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:

$ clm 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:

$ clm 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:

$ clm 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