Installation
The one-liner
Section titled “The one-liner”curl -fsSL https://agentarivm.com/install.sh | shThis is the recommended path on both macOS and Linux. It detects the platform and architecture, downloads the matching tarball, verifies it, and installs the agentarivm command. It is idempotent — safe to re-run for upgrades — and it never overwrites an existing configuration.
Manual installation
Section titled “Manual installation”Grab the tarball for your platform from the download page:
https://dl.agentarivm.com/releases/latest/agentarivm-<platform>-<arch>.tar.gzwhere <platform> is darwin or linux and <arch> is arm64 or x64. Each tarball has a .sha256 checksum file next to it; verify before unpacking:
curl -fsSLO https://dl.agentarivm.com/releases/latest/agentarivm-linux-x64.tar.gzcurl -fsSLO https://dl.agentarivm.com/releases/latest/agentarivm-linux-x64.tar.gz.sha256sha256sum -c agentarivm-linux-x64.tar.gz.sha256 # shasum -a 256 -c on macOStar -xzf agentarivm-linux-x64.tar.gzPut the agentarivm command somewhere on your PATH, then run agentarivm init to write a starter configuration and agentarivm doctor to check the machine. init comes first: every other command validates the configuration at boot, so until that file exists there is nothing to run.
Prerequisites the installer does not install
Section titled “Prerequisites the installer does not install”The manager orchestrates tools you must set up yourself, because each involves an account or a credential:
-
gh— authenticate withgh auth loginas the account the manager should act as. Everything the manager does on GitHub happens under this identity. Pin it in the config (github.expectedAccount) so a wrong login is refused at boot rather than silently doing everything under the wrong name. -
Claude Code — the agents need a subscription credential. Generate one with
claude setup-tokenand install it withagentarivm agent-token install(it reads the token from stdin only, never from an argument, so it never lands in shell history):Terminal window claude setup-tokenpbpaste | agentarivm agent-token installIt refuses an
sk-ant-api…API key on purpose: an API key bills pay-as-you-go credits and outranks the subscription token in Claude Code’s precedence, so installing one is worse than installing nothing. The manager runs oneclaudeprocess per task and talks to it over pipes.agentarivm initwritesagent.claudeExecutableas an absolute path resolved from your ownPATH; keep it absolute, because a daemon’s PATH will not find a bare name.
Running as a service
Section titled “Running as a service”A manager that only runs while a terminal is open is not a manager. agentarivm service generates and loads the right unit for the platform:
agentarivm service install # write the service definition and (re)load itagentarivm service status # loaded? running? what was the last exit?agentarivm service uninstall # unload it and remove the definitionservice install --dry-run prints the definition and touches nothing.
macOS: launchd
Section titled “macOS: launchd”service install writes a LaunchAgent at ~/Library/LaunchAgents/com.agentarivm.manager.plist and loads it. The job is KeepAlive — launchd restarts the manager if it crashes — and RunAtLoad, so it starts when the user logs in.
Two macOS realities worth knowing up front:
- A LaunchAgent needs its user logged in. After a reboot with FileVault on, nothing runs until the disk is unlocked and the user logs in. For a machine that reboots rarely, this is fine; the alternatives (a LaunchDaemon, or disabling FileVault) trade away either simplicity or disk encryption.
- launchd gives jobs a minimal PATH. This is the single most common deployment failure — see Troubleshooting.
Linux: systemd user units
Section titled “Linux: systemd user units”On Linux, service install manages a systemd user unit — the manager runs as your user, not as root, matching the security model. The usual commands apply:
systemctl --user status agentarivmjournalctl --user -u agentarivmBy default, systemd user units only run while that user has a session. On a headless box where nobody logs in, enable lingering once:
sudo loginctl enable-linger <user>With lingering on, the user’s units start at boot and keep running with no login — which is exactly what an always-on manager wants.
Upgrading
Section titled “Upgrading”Re-run the installer. It replaces the binary, leaves your configuration alone, and service install reloads the service against the new version. Run agentarivm doctor afterwards; it is cheap and it catches drift.