Files
apress/deploy/uno-q/systemd/zeroclaw-daemon.service
T
Omar SobhandClaude Opus 4.8 1eb28c6e5e feat(uno-q): host-daemon provisioning (full hardware access) replaces App Lab
The App Lab container can't drive the board — proven on-hardware: I2C/SPI
blocked by the device cgroup + missing i2cdetect, no arduino-cli/Zephyr
toolchain for flashing, and /admin/reload refused (container NAT hides
loopback). Running the ZeroClaw daemon on the host fixes all of it: native
/dev, arduino-cli + toolchain, loopback reload.

- provision-host-daemon.sh: deploy the binary, write the cloud-token
  env-file (raw token + the ZEROCLAW_…api_key config override), install
  Arduino_RouterBridge (Zephyr core prereq), a udev rule for I2C/SPI perms,
  and install+enable zeroclaw-daemon.service. Also tears down the App Lab
  container + clears its default app so it won't grab :8080 on boot.
- zeroclaw-daemon.service: EnvironmentFile for the token (kept off the repo,
  non-fatal if absent) + WorkingDirectory.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-07-22 08:39:26 -07:00

24 lines
879 B
Desktop File

[Unit]
Description=ZeroClaw daemon (gateway + agent runtime)
After=network.target zeroclaw-llama.service
Wants=zeroclaw-llama.service
[Service]
Type=simple
User=arduino
WorkingDirectory=/home/arduino
# Cloud credential — kept off-disk in the repo; provisioned into this env file on
# the board. Sets BOTH the raw token and the ZeroClaw config-override that wires
# providers.models.anthropic.max.api_key (the config TOML carries no key). The
# leading `-` makes it non-fatal if the file is absent (offline/local agent).
EnvironmentFile=-/home/arduino/.zeroclaw/daemon.env
# Use `daemon`, NOT `gateway start`: only the daemon/agent/channel arms register
# the peripheral tools (uno_q_flash etc.). `gateway start` on an older build
# leaves the agent unable to flash.
ExecStart=/home/arduino/zeroclaw daemon
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target