Smol Machines

fumplethumb1 pts0 comments

๐Ÿค"/>smol machines โ€” the same smol machine on your laptop, in the cloud, or self-hosted

Fast, isolated Linux VMs โ€” the same smol machine on your laptop, in the cloud, or self-hosted.<br>cli cloud registry<br>about<br>Run any workload in a fast, hardware-isolated Linux VM. The same SDK and the same .smolmachine artifact run identically:<br>on your Mac or Linux box โ€” sub-second boot, free, offline.<br>in our cloud โ€” deploy with one call.<br>self-hosted โ€” on your own servers.<br>Develop locally, then deploy or self-host without changing a line.<br>The engine is open source (Apache-2.0): smol-machines/smolvm.<br>install + usage<br># install (macOS + Linux)<br>curl -sSL https://smolmachines.com/install.sh | bash

# for coding agents โ€” install + discover all commands<br>curl -sSL https://smolmachines.com/install.sh | bash && smolvm --help # run a command in an ephemeral VM (cleaned up after exit)<br>smolvm machine run --net --image alpine -- sh -c "echo 'Hello world from a microVM' && uname -a"

# interactive shell<br>smolvm machine run --net -it --image alpine -- /bin/sh<br># inside the VM: apk add sl && sl && exit

# uninstall<br>curl -sSL https://smolmachines.com/install.sh | bash -s -- --uninstall use this for<br>sandbox untrusted code โ€” run untrusted programs in a hardware-isolated VM. Host filesystem, network, and credentials are separated by a hypervisor boundary.<br># network is off by default โ€” untrusted code can't phone home<br>smolvm machine run --image alpine -- ping -c 1 1.1.1.1<br># fails โ€” no network access

# lock down egress โ€” only allow specific hosts<br>smolvm machine run --net --image alpine --allow-host registry.npmjs.org -- wget -q -O /dev/null https://registry.npmjs.org pack into portable executables โ€” turn any workload into a self-contained binary. All dependencies are pre-baked โ€” no install step, no runtime downloads, boots in smolvm pack create --image python:3.12-alpine -o ./python312<br>./python312 run -- python3 --version<br># Python 3.12.x โ€” isolated, no pyenv/venv/conda needed persistent machines for development โ€” create, stop, start. Installed packages survive restarts.<br>smolvm machine create --net --name myvm<br>smolvm machine start --name myvm<br>smolvm machine exec --name myvm -- apk add sl<br>smolvm machine exec --name myvm -it -- /bin/sh<br>smolvm machine stop --name myvm GPU-accelerated workloads โ€” Vulkan access to the host GPU inside isolated VMs.<br>smolvm machine run --gpu --net --image fedora:42 -- bash -c '<br>/usr/lib64/chromium-browser/headless_shell \<br>--no-sandbox --screenshot=/tmp/shot.png \<br>--window-size=1920,1080 https://example.com' More examples: python ยท node<br>comparison<br>smolvmContainersQEMUFirecrackerIsolationVM per workloadNamespace (shared kernel)Separate VMSeparate VMBoot time~100ms~15-30sArchitectureLibrary (libkrun)DaemonProcessProcessGPUYes (Vulkan)Host passthroughVFIONomacOS nativeYesVia Docker VMYesNoPortable artifacts.smolmachineImages (need daemon)NoNo how it works<br>Each workload gets real hardware isolation โ€” its own kernel on Hypervisor.framework (macOS) or KVM (Linux). Pack it into a .smolmachine and it runs anywhere the host architecture matches, with zero dependencies.<br>Defaults: 4 vCPUs, 8 GiB RAM. Memory is elastic via virtio balloon โ€” the host only commits what the guest actually uses. libkrun VMM + custom kernel: libkrunfw. No daemon โ€” the VMM is a library linked into the smolvm binary.<br>platform support<br>hostguestrequirementsmacOS Apple Siliconarm64 LinuxmacOS 11+macOS Intelx86_64 LinuxmacOS 11+ (untested)Linux x86_64x86_64 LinuxKVM (/dev/kvm)Linux aarch64aarch64 LinuxKVM (/dev/kvm)

smolvm machine linux host install image

Related Articles