Install, update, run as a service, and uninstall, all Linux distributions.
./install.shThat is the whole install. Run it from a clone, or pipe it from curl:
The installer detects your distribution and architecture, picks a prebuilt binary or builds from source (interactive by default; non-interactive shells take the prebuilt when available), installs to ~/.cargo/bin/zeroclaw, and offers to run zeroclaw quickstart for first-time setup. Pass --help for the full flag reference, or --skip-quickstart to install only.
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.
A multi-instance NixOS module is shipped in-tree. See NixOS.
Neither works yet. cargo binstall zeroclaw resolves crate metadata from
crates.io, but ZeroClaw is not published there (publish = false), so there is
nothing for it to fetch; nix run github:zeroclaw-labs/zeroclaw does not launch
the agent because the flake exposes only a dev toolchain, not a runnable package
(#5987). install.sh
already does what binstall would (download a prebuilt release binary), so it
remains the supported one-liner.
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 |
| 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 |
The hardware feature (GPIO / I2C / SPI on a Pi) uses the pure-Rust rppal driver and needs no extra system library; it talks to /dev/gpiomem, /dev/spidev*, and /dev/i2c-* directly. What it does need is device access: enable the SPI/I2C interfaces and put the service user in the gpio, spi, and i2c groups (see SBC / Raspberry Pi below).
Most deployments don't need any of these.
Systemd is the default. OpenRC is detected and supported as a fallback.
Logs go to the systemd journal by default:
Full details: Service management.
On a Raspberry Pi or similar SBC, build with the hardware feature:
For hardware access without running as root, the service user needs the gpio, spi, and i2c groups. The user-level unit that zeroclaw service install writes does not set these; use the system-level Pi unit template at scripts/zeroclaw.service, which includes SupplementaryGroups=gpio spi i2c. Either way, 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 effectRe-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-quickstartOr from a clone:
If installed via Homebrew instead:
After updating, restart the service:
Stop and remove the service:
Remove the binary:
Remove config and workspace (optional: this deletes conversation history):
- Service management: systemd unit details, logs, auto-start
- Quickstart: once installed, getting talking
- Operations → Overview: running in production