docs/book/src/setup/macos.md
Install, update, run as a LaunchAgent, and uninstall on macOS (Intel or Apple Silicon).
install.sh is the preferred path; Homebrew is a reasonable alternative if you want brew services integration.
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
Gets you brew services integration. Binary lives at $HOMEBREW_PREFIX/bin/zeroclaw.
Workspace location gotcha: with Homebrew, the service user and the CLI user may be different, so the workspace lives at $HOMEBREW_PREFIX/var/zeroclaw/ rather than ~/.zeroclaw/. Point CLI invocations at the same workspace:
export ZEROCLAW_WORKSPACE="$HOMEBREW_PREFIX/var/zeroclaw"
Add that to your shell profile if you want it permanent.
Most features work with a stock macOS install. Optional extras:
| Feature | Install |
|---|---|
| Docs translation | brew install gettext |
| Browser tool | Playwright pulls Chromium automatically on first use |
| Hardware | No native GPIO on macOS; use a USB peripheral like Aardvark. See Hardware → Aardvark |
| iMessage channel | Requires macOS 11+. See Channels → Other chat platforms |
zeroclaw service install # writes ~/Library/LaunchAgents/com.zeroclaw.daemon.plist
zeroclaw service start
zeroclaw service status
Logs go to ~/Library/Logs/ZeroClaw/:
tail -f ~/Library/Logs/ZeroClaw/zeroclaw.log
For Homebrew installs, prefer:
brew services start zeroclaw
brew services info zeroclaw
Both methods produce the same end state — a loaded LaunchAgent that starts on login. Pick one and stick with it.
Full details: Service management.
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
zeroclaw service restart
Or from a clone:
cd /path/to/zeroclaw
git pull
./install.sh --skip-onboard
zeroclaw service restart
If installed via Homebrew instead:
brew update && brew upgrade zeroclaw
brew services restart zeroclaw
# stop and unregister the service
zeroclaw service stop
zeroclaw service uninstall
# Homebrew
brew uninstall zeroclaw
# bootstrap / cargo
rm ~/.cargo/bin/zeroclaw
Remove config and workspace (optional — this deletes conversation history):
# Homebrew workspace
rm -rf "$HOMEBREW_PREFIX/var/zeroclaw"
# Default workspace
rm -rf ~/.zeroclaw ~/.config/zeroclaw
# Logs
rm -rf ~/Library/Logs/ZeroClaw
brew services daemon reads $HOMEBREW_PREFIX/var/zeroclaw/config.toml, not ~/.zeroclaw/config.toml. If your service is reading stale config, check which one the daemon sees.