There are three supported ways to supervise heyvmd.
systemd (Linux)
The unit at infra/heyvmd.service runs the daemon as your user (it needs
~/.heyo/token.json):
[Service]
Type=simple
ExecStart=/usr/local/bin/heyvmd
Restart=on-failure
RestartSec=5
It is heavily hardened (ProtectSystem=strict, ProtectHome=read-only,
ReadWritePaths=~/.heyo, NoNewPrivileges=true,
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX) and is ordered
After/Wants the companion heyvm.service, which runs heyvm --api with
CAP_NET_ADMIN/CAP_NET_RAW for Firecracker TAP networking. Both source
/etc/heyvm/env.
systemctl --user enable --now heyvmd # user service
# or, system-wide:
sudo systemctl enable --now heyvmd
make restart-heyvmd restarts whichever form is running after a reinstall.
launchd (macOS)
Copy mvm-ctrl/install/com.heyo.heyvmd.plist to ~/Library/LaunchAgents/, replace the
REPLACE_ME binary path, and load it:
launchctl load ~/Library/LaunchAgents/com.heyo.heyvmd.plist
The agent uses RunAtLoad, KeepAlive on crash, a 5-second throttle, and logs to
/tmp/heyvmd.log. It only starts heyvmd; the heyvm API runs separately.
Desktop app
The Heyo desktop app spawns and supervises heyvmd for you, captures its output to
~/.heyo/heyvmd.log, and shows online/stale/offline status. It hands the daemon
HEYO_CLOUD_URL, HEYO_AUTH_SERVER_URL, and HEYO_ACCESS_TOKEN, and refuses to
start it when you are not signed in. See Desktop App.