preloop CLI, which also runs the engine. Every job runs inside a Linux microVM, so the install also places a Linux guest runner and a SmolVM runtime. This page covers what your host needs, the install methods, and how to keep the engine running. Quickstart then gets you to a first run.
Requirements
Windows
Preloop runs on Windows only inside WSL2. Install it in your Linux distribution, and follow the Linux instructions there. For microVM jobs, the distribution needs/dev/kvm. Enable nested virtualization in %UserProfile%\.wslconfig:
/dev/kvm is missing, preloop init fails its hypervisor check with exit code 3.
Install the CLI
Homebrew
npm
preloop binary from the same release. The Linux guest runner and the SmolVM runtime are separate; the next section covers them.
Installer script
The script downloads the release for your platform, checks its SHA-256 checksum, and installs into~/.local/bin. Fetch it from the release tag, read it, then run it:
If no release exists for your platform yet, the script builds from source instead. That path needs Git and Rust/Cargo; building the Linux guest runner also needs Zig and
cargo-zigbuild.
What the install provides
Each job runs in a microVM, which needs two pieces besides the CLI:- The Linux guest runner,
preloop-runner, stored at<prefix>/lib/preloop/runner/<triple>/preloop-runner. The installer script places it on Linux and macOS. On macOS,preloop updaterefreshes it. On Linux with Homebrew or npm, downloadpreloop-runner-<triple>from the release, save it aspreloop-runnerin a directory of your choice, and setPRELOOP_RUNNER_BUNDLEto that directory. - A compatible SmolVM runtime, which the installer script sets up. With Homebrew or npm, run
preloop updateonce to install it.
preloop serve still starts, but queued jobs fail after a grace period.
Check the host
Run the probe. It reads the host and changes nothing:arch, os, disk_free_bytes, data_root, hypervisor, smolvm, and the golden that serve would use. Then run preloop init to write the configuration.
Once you have configured a GitHub credential — GitHub App covers the manifest flow, engine-hosted and over SSH — preloop doctor checks it against GitHub:
doctor needs a configuration file and reports which credentials are set. Without --repo, it does not call GitHub.
Run as a background service
For a laptop,preloop serve in a terminal is enough. For a machine that should keep running, install the engine as a service. Pick a scope:
Per-user service
No root is needed. The service runs as your user and keeps state in~/.preloop.
- On Linux, the unit is a systemd user service. Run
sudo loginctl enable-linger $USERso it keeps running after you log out. - On macOS, the service is a LaunchAgent. It runs only while you are logged in.
System service
This runs at boot, with state in/var/lib/preloop. It needs root. On Linux, the service runs under a dedicated preloop account that is added to the kvm group.
--dry-run to print the files and commands without changing anything. preloop init --mode service runs the same installer as part of setup.
Remove the service
--purge-data to delete it too.
