Run microVMs locally to sandbox workloads.# install (macOS only, Linux coming soon)
curl -sSL https://smolmachines.com/install.sh | bash
# sandbox - ephemeral isolated environments
smolvm sandbox run --net alpine:latest -- echo "hello"
smolvm sandbox run --net -v /tmp:/workspace alpine:latest -- ls /workspace # mount host directory with microvm
smolvm sandbox run --net python:3.12-alpine python -V # use any container as a base
#
# microvm - persistent linux VMs
smolvm microvm start
smolvm microvm exec -- echo "hello" # use it for anything, it's a linux virtual machine.
smolvm microvm stop
# pack - portable, executable virtual machine
smolvm pack alpine:latest -o ./my-sandbox # creates ./my-sandbox + ./my-sandbox.smolmachine
smolvm pack alpine:latest -o ./my-sandbox --single-file # single executable, no sidecar
./my-sandbox echo "hello"
smolvm pack python:3.12-alpine -o ./my-pythonvm
./my-pythonvm python3 -c "import sys; print(sys.version)"
# uninstall
curl -sSL https://smolmachines.com/install.sh | bash -s -- --uninstallmicroVMs are lightweight VMs - security and isolation of VMs with the speed of containers.
They are used to sandbox multitenant workloads in AWS Lambda and Fly.io, but are inaccessible to the average developer due to setup and operational complexity.
smolVM makes microVMs easy to install, with <250ms boot, and a set of features to get running fast.
smolVM is designed for running local (on your machine), persistent (long running and stateful), and interactive (communicate with workload/vm in real time) workloads.
| Containers | QEMU (VM) | Firecracker | Kata | smolvm | |
|---|---|---|---|---|---|
| kernel isolation | shared with host [1] | separate | separate | separate | separate |
| boot time | ~100ms [2] | ~15-30s [3] | <125ms [4] | ~500ms [5] | <250ms |
| setup | easy | complex | complex | complex | easy |
| Linux | yes | yes | yes | yes | yes |
| macOS | via Docker VM | yes | no [6] | no [7] | yes |
| guest rootfs | layered images | disk image | DIY [8] | bundled + DIY | bundled |
| embeddable | no | no | no | no | yes |
| distribution | daemon + CLI [9] | multiple binaries | binary + rootfs | runtime stack [10] | single binary |
[1] container isolation · [2] containerd benchmark · [3] QEMU boot time · [4] Firecracker website · [5] Kata boot time · [6] Firecracker requires KVM · [7] Kata macOS support · [8] Firecracker rootfs setup · [9] Docker daemon docs · [10] Kata installation
libkrun VMM + Hypervisor.framework (macOS) / KVM (Linux) + crun container runtime.
| host | guest | requirements |
|---|---|---|
| macOS Apple Silicon | arm64 Linux | macOS 11+ |
| macOS Intel | x86_64 Linux | macOS 11+ (untested) |
| Linux x86_64 | x86_64 Linux | KVM (/dev/kvm) |
| Linux aarch64 | aarch64 Linux | KVM (/dev/kvm) |
made by @binsquare · twitter · github