Fast, persistent, per-directory matchlock microVMs with one-shot provisioning. Written in rugo.
~/code/my-project
❯ yolo
[yolo] starting fedora:44 VM cwd-7259073de3 for /home/rubiojr/code/my-project
[yolo] applying fedora-go to vm-b1e68449
==> [yolo:fedora-go] installing Go 1.26.3 (amd64)
…
[root@cwd-7259073de3 work]# go version
go version go1.26.3 linux/amd64
[root@cwd-7259073de3 work]# exit
~/code/my-project
❯ yolo # <1s, attaches to the same VM
[root@cwd-7259073de3 work]#
- Per-directory persistent microVMs. Each
$PWDgets its own long-lived Firecracker VM, keyed by a sha1 of the path. Re-runningyoloreattaches in under a second. - Auto-heal. If the VM was stopped or removed (host reboot, manual
matchlock rm, …)yolonotices and recreates it transparently. - Auto-detected provisioning.
yolosniffs your project forgo.mod/Cargo.toml/Gemfile/build.gradleand applies a matching built-in provisioner. Project-specific tooling lives in an optionalYolofile. - Named VMs. Run several persistent VMs side-by-side with
-n NAME. - Your code is mounted live.
$PWDshows up inside the guest as/work(read-write), so edits on either side are immediately visible on the other. - Snapshot & share.
yolo export/yolo importmove a fully provisioned VM between hosts. - Sensible network defaults. Plain NAT by default with real
upstream TLS, so
dnf install,curl https://…,go install, andgit clonejust work. Opt into matchlock's allow-list MITM policy viaYOLO_ALLOW=….
- Linux with KVM (
/dev/kvmreadable and writable) matchlockonPATH- For end users: just the prebuilt
yolobinary (~2 MB static; no other runtime deps — provisioners are plain bash run inside the guest). - For building from source:
rugo.
# One-step install on Fedora or Ubuntu 26.04 LTS (matchlock + yolo)
curl -fsSL https://yolo.rbel.co/install.sh | bash
# From source
rugo build yolo.rugo
install -m 0755 yolo ~/.local/bin/yolo# Interactive shell in this directory's VM (creates it the first time)
yolo
# Run a single command inside the VM
yolo -- go test ./...
# Open a separate persistent named VM
yolo -n notes
# List everything yolo is tracking
yolo ls
# Stop or remove
yolo stop # preserves rootfs
yolo rm # removes the VM and its name bindingFull subcommand reference: docs/02-usage.md (or
yolo --help).
A chapter-by-chapter tour lives in docs/:
- Getting started
- Daily usage
- Configuration
- Provisioners
- Yolofile reference
- Networking
- Export & import
- Troubleshooting
For internals (auto-heal, state file layout, provisioner markers,
source layout) see docs/architecture.md.
MIT.