Skip to content
Run microVMs locally to sandbox workloads.

install + usage

bash
# 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 -- --uninstall

about

microVMs 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.

use this for

  • run coding agents locally and safely
  • run microVMs locally on both macOS and Linux with minimal setup
  • run containers within microvm for improved isolation
  • distribute self-contained sandboxed applications with all the dependencies packed into a '.smolmachine'

comparison

smolVM is designed for running local (on your machine), persistent (long running and stateful), and interactive (communicate with workload/vm in real time) workloads.

ContainersQEMU (VM)FirecrackerKatasmolvm
kernel isolationshared with host [1]separateseparateseparateseparate
boot time~100ms [2]~15-30s [3]<125ms [4]~500ms [5]<250ms
setupeasycomplexcomplexcomplexeasy
Linuxyesyesyesyesyes
macOSvia Docker VMyesno [6]no [7]yes
guest rootfslayered imagesdisk imageDIY [8]bundled + DIYbundled
embeddablenonononoyes
distributiondaemon + CLI [9]multiple binariesbinary + rootfsruntime 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

how it works

libkrun VMM + Hypervisor.framework (macOS) / KVM (Linux) + crun container runtime.

platform support

hostguestrequirements
macOS Apple Siliconarm64 LinuxmacOS 11+
macOS Intelx86_64 LinuxmacOS 11+ (untested)
Linux x86_64x86_64 LinuxKVM (/dev/kvm)
Linux aarch64aarch64 LinuxKVM (/dev/kvm)

made by @binsquare · twitter · github

Apache-2.0