The Daemon

Running heyvmd

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.