docs/book/src/setup/linux.md
Install, update, run as a service, and uninstall — all Linux distributions.
install.sh is the preferred path on every Linux distro. Pipe it from curl, or clone and run it locally — both do the same thing.
install.sh via curl (fastest)curl -fsSL https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash
install.sh from a clonegit clone https://github.com/zeroclaw-labs/zeroclaw.git
cd zeroclaw
./install.sh
~/.cargo/bin/zeroclawzeroclaw onboard to complete first-time setupFlags:
./install.sh --prebuilt # always prebuilt, skip the prompt
./install.sh --source # always build from source
./install.sh --minimal # kernel only (~6.6 MB)
./install.sh --source --features agent-runtime,channel-discord # custom features
./install.sh --skip-onboard # install only; run `zeroclaw onboard` later
./install.sh --list-features # print available features and exit
./install.sh --help # full flag reference
brew install zeroclaw
zeroclaw onboard
Homebrew-on-Linux installs follow Homebrew's service path convention — your workspace lives under $HOMEBREW_PREFIX/var/zeroclaw/ instead of ~/.zeroclaw/. See Service management for why this matters.
The core binary is statically linked where possible. Some features require system libraries:
| Feature | Package (Debian/Ubuntu) | Package (Arch) | Package (Fedora) |
|---|---|---|---|
Docs translation (cargo mdbook sync) | gettext | gettext | gettext |
| Hardware (GPIO / I2C / SPI) | libgpiod-dev | libgpiod | libgpiod-devel |
| Browser tool (playwright) | libnss3, libatk1.0-0, libcups2 (see playwright --help) | nss, atk, cups | nss, atk, cups |
| Audio (TTS, voice channels) | libasound2-dev | alsa-lib | alsa-lib-devel |
Most deployments don't need any of these.
Systemd is the default. OpenRC is detected and supported as a fallback.
zeroclaw service install
zeroclaw service start
zeroclaw service status
Logs go to the systemd journal by default:
journalctl --user -u zeroclaw -f
Full details: Service management.
On a Raspberry Pi or similar SBC, build with the hardware feature:
./install.sh --source --features hardware
The stock systemd unit includes SupplementaryGroups=gpio spi i2c so the service user can access hardware without running as root. Verify your user is in those groups:
getent group gpio spi i2c
sudo usermod -aG gpio,spi,i2c $USER
# re-login for group changes to take effect
Re-run the installer — it detects the existing install and upgrades in place:
curl -fsSL https://raw.githubusercontent.com/zeroclaw-labs/zeroclaw/master/install.sh | bash -s -- --skip-onboard
Or from a clone:
cd /path/to/zeroclaw
git pull
./install.sh --skip-onboard
If installed via Homebrew instead:
brew update && brew upgrade zeroclaw
After updating, restart the service:
zeroclaw service restart
Stop and remove the service:
zeroclaw service stop
zeroclaw service uninstall
Remove the binary:
# cargo install / bootstrap
rm ~/.cargo/bin/zeroclaw
# Homebrew
brew uninstall zeroclaw
Remove config and workspace (optional — this deletes conversation history):
rm -rf ~/.zeroclaw ~/.config/zeroclaw