Installation
This guide covers installing Clawrium on your management machine (the computer you'll use to control your agent fleet).
What You'll Need
| Requirement | Version | How to Check |
|---|---|---|
| Python | 3.10 or higher | python3 --version |
| uv | Any | uv --version |
Check Python Version
python3 --version
Python 3.11.4
If your version is below 3.10, upgrade Python first.
Install uv
Clawrium is distributed as a Python package and installed via uv. If you don't have uv, install it:
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
Downloading uv...
Installing to ~/.cargo/bin/uv
✓ uv installed successfully
Run 'source ~/.bashrc' or restart your shell to use uv.
Or using Homebrew on macOS:
brew install uv
See the uv installation docs for other platforms and options.
Install Clawrium
Install Permanently (Recommended)
uv tool install clawrium
Resolved 1 package in 523ms
Installed 1 package in 12ms
+ clawrium==26.6.0
Run Without Installing
uvx --from clawrium clawctl --help
This runs the latest version without permanent installation - useful for trying it out.
Verify Installation
Run the clawctl command to verify installation:
clawctl --help
You should see:
Usage: clawctl [OPTIONS] COMMAND [ARGS]...
clawctl — manage your AI assistant fleet, kubectl-style.
╭─ Commands ───────────────────────────────────────────────────────────────────╮
│ service System-level lifecycle ops (init, snapshot, ...) │
│ host Manage hosts in your fleet │
│ provider Manage inference providers (LLM APIs) │
│ integration Manage external service integrations │
│ channel Manage chat-channel attachables (Discord, Slack, ...) │
│ skill Browse the skills catalog │
│ agent Manage agents in your fleet │
│ tui Launch the interactive TUI dashboard │
│ gui Launch the local web GUI dashboard │
│ version Show clawctl version and exit │
│ completion Emit a shell-completion script │
╰──────────────────────────────────────────────────────────────────────────────╯
Check the version:
clawctl --version
clawctl 26.6.0
Initialize Clawrium
Run clawctl service init to create the configuration directory and check dependencies:
clawctl service init
✓ Configuration directory created at ~/.config/clawrium/
✓ Ansible found: ansible [core 2.15.0]
✓ SSH client found: OpenSSH_9.0p1
✓ Dependencies validated
Clawrium is ready! Next: clawctl host create <hostname> --user xclm --alias <name>
This creates:
~/.config/clawrium/directory structure- Validates that Ansible and SSH are available
macOS targets
Clawrium can manage macOS hosts (Apple Silicon, macOS 14+) alongside the
Linux fleet. The control machine (where you run clawctl) can be either
Linux or macOS.
Target prerequisites
On the macOS host you want to manage:
- A user with
sudoaccess for the manualxclmsetup. See Host Preparation for the exact commands — macOS usesdscl,dseditgroup(including the criticalcom.apple.access_sshgroup membership), andsudoers.d. Password sudo is fine; you only run the commands once, interactively. - Xcode Command Line Tools. The base playbook installs them
automatically if missing, but the first install takes 5–15 minutes
and downloads ~700MB. Pre-installing with
xcode-select --installbeforehand is faster if you're rebuilding hosts often.
Register the host
Follow Host Preparation — the same flow works for Linux and macOS hosts. In short:
clawctl host create <mac-ip> --user xclm --alias <name>
The first invocation generates a per-host keypair and prints the
macOS-specific manual commands (with the public key inlined). Paste those
on the Mac, then re-run the same clawctl host create command to register
the host.
Install an agent
clawctl agent create <name> --type hermes --host <alias>
Behind the scenes, clawrium installs Homebrew (if missing), then
node, ripgrep, ffmpeg, and uv via brew, and runs the upstream
hermes installer under a per-agent macOS user (/Users/<agent_name>/).
Configure, start, chat — same commands as Linux:
clawctl agent provider attach <provider> --agent <name>
clawctl agent configure <name> --stage providers --provider <provider>
clawctl agent start <name>
clawctl agent chat <name>
Lifecycle differences
On macOS the lifecycle backend uses launchctl in the system domain
(plists land in /Library/LaunchDaemons/, not ~/Library/LaunchAgents/).
This is deliberate — daemons must survive user logout and reboot. See
docs/operations/hermes-macos-upstream-quirks.md
for the upstream hermes defects clawrium routes around.
Manual cleanup (if you tear a Mac host down by hand)
# Remove the xclm management user
sudo dscl . -delete /Users/xclm
sudo rm -f /etc/sudoers.d/xclm
# Remove a hermes agent named <agent>
sudo launchctl bootout system/ai.clawrium.hermes.<agent>
sudo launchctl bootout system/ai.clawrium.hermes.<agent>.dashboard
sudo rm -f /Library/LaunchDaemons/ai.clawrium.hermes.<agent>*.plist
sudo dscl . -delete /Users/<agent>
sudo rm -rf /Users/<agent>
Troubleshooting
"command not found: clawctl"
The uv tools directory isn't in your PATH. Add it:
# Add to ~/.bashrc or ~/.zshrc
export PATH="$HOME/.local/bin:$PATH"
Then restart your shell or run source ~/.bashrc.
"Ansible not found"
Install Ansible:
# macOS
brew install ansible
# Ubuntu/Debian
sudo apt install ansible
# Using pip
pip install ansible
"Permission denied" during init
The config directory location isn't writable. Check permissions:
ls -la ~/.config/
# Should show your user owns the directory