Skip to content

Release history

smolvm releases

Tool to build & run portable, lightweight, self-contained virtual machines.

All releases

52 shown

Review required
v0.9.0 Mixed
Auth Dependencies

seccomp, VM drain, secret store

Review required
v0.8.2 Breaking risk
Auth Breaking upgrade

DNS enforcement + PTY hardening + VM lock fix

Review required
v0.8.1 Mixed
Auth RBAC

Registry auth + monitor fixes + agent resize

No immediate action
v0.8.0 Bug fix

EOF signal fix

No immediate action
v0.7.2 Bug fix

Namespace join fix

No immediate action
v0.7.1 New feature

GPU polling + VM contention

No immediate action
v0.7.0 New feature

Docker support via TSI

No immediate action
v0.6.4 Bug fix

Image display + init fixes

No immediate action
v0.6.3 Bug fix

Fedora unpack permission fix

v0.6.2 Maintenance

Routine maintenance release for smolvm.

Changelog

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.6.1...v0.6.2

v0.5.20 New feature
Notable features
  • Virtio-net host-side runtime (parts 3-4)
  • GPU support mention in development docs
Full changelog

What's Changed

  • feat: updating discord invite link by @BinSquare in https://github.com/smol-machines/smolvm/pull/163
  • fixing command by @phoenix24 in https://github.com/smol-machines/smolvm/pull/165
  • updated instruction to install e2fsprogs by @phoenix24 in https://github.com/smol-machines/smolvm/pull/166
  • feat: virtio-net - part 3: impl host-side virtio-net runtime by @phooq in https://github.com/smol-machines/smolvm/pull/136
  • Mention GPU support in development section by @ShalokShalom in https://github.com/smol-machines/smolvm/pull/168
  • chores: rename network backend for virtio-net to virtio-net instead o… by @phooq in https://github.com/smol-machines/smolvm/pull/170
  • Fix grammar and clarify embedded SDK description by @ShalokShalom in https://github.com/smol-machines/smolvm/pull/174
  • fix: correct the README about --net by @phooq in https://github.com/smol-machines/smolvm/pull/183
  • fix: libkrun has a bug for TSI silent dropping with idle guest by @BinSquare in https://github.com/smol-machines/smolvm/pull/184
  • feat: virtio-net - part 4: wire launcher with virtio-net backend also disable offload advertisement by @phooq in https://github.com/smol-machines/smolvm/pull/142
  • feat: updating openclaw example with more comments and guidance by @BinSquare in https://github.com/smol-machines/smolvm/pull/185
  • Update README for embedded SDKs clarity by @ShalokShalom in https://github.com/smol-machines/smolvm/pull/192
  • Fix Linux libkrun bundle path in cargo make dev by @albinvass in https://github.com/smol-machines/smolvm/pull/193
  • fix: issue-169 - resolve env and workdirs correctly by @phooq in https://github.com/smol-machines/smolvm/pull/179
  • fix: linux libs also need updating by @BinSquare in https://github.com/smol-machines/smolvm/pull/203
  • fix: updating of libkrun.dylib to match linux silent drops idle guest update by @BinSquare in https://github.com/smol-machines/smolvm/pull/204

New Contributors

  • @phoenix24 made their first contribution in https://github.com/smol-machines/smolvm/pull/165
  • @ShalokShalom made their first contribution in https://github.com/smol-machines/smolvm/pull/168
  • @albinvass made their first contribution in https://github.com/smol-machines/smolvm/pull/193

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.19...v0.5.20

v0.5.19 Bug fix

Minor fixes and improvements.

Full changelog

What's Changed

  • Clarify that smolvm uses the OCI / Docker image format by @peterp in https://github.com/smol-machines/smolvm/pull/157
  • fix: napi compilation failures by @phooq in https://github.com/smol-machines/smolvm/pull/158
  • pack create: fix temp agent-VM name prefix violating validate_vm_name by @tsukhani in https://github.com/smol-machines/smolvm/pull/160
  • fix: cannonicalize bug broke all mount targets by @BinSquare in https://github.com/smol-machines/smolvm/pull/162

New Contributors

  • @peterp made their first contribution in https://github.com/smol-machines/smolvm/pull/157
  • @tsukhani made their first contribution in https://github.com/smol-machines/smolvm/pull/160

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.18...v0.5.19

v0.5.18 Bug fix

Minor fixes and improvements.

Full changelog

What's Changed

  • pathbuf-canonicalize bug fixed across codebase by @aayank13 in https://github.com/smol-machines/smolvm/pull/132
  • fix: linux builds should check symlink chain to verify the required l… by @BinSquare in https://github.com/smol-machines/smolvm/pull/154

New Contributors

  • @aayank13 made their first contribution in https://github.com/smol-machines/smolvm/pull/132

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.17...v0.5.18

v0.5.17 Breaking risk

Fixes SSH agent container initialization and improves uninstall handling.

Full changelog

What's Changed

  • fix: ssh-agent should populate inside the container in vm by @BinSquare in https://github.com/smol-machines/smolvm/pull/148
  • fix: removed timeouts and improve uninstall script. by @BinSquare in https://github.com/smol-machines/smolvm/pull/149

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.16...v0.5.17

v0.5.16 Maintenance

Minor fixes and improvements.

Full changelog

What's Changed

  • refactor: updating hash derived data directories by @BinSquare in https://github.com/smol-machines/smolvm/pull/147

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.15...v0.5.16

v0.5.15 New feature
Notable features
  • Unix socket listening by default
Full changelog

What's Changed

  • feat: use unix sock for listen by default by @flaneur2020 in https://github.com/smol-machines/smolvm/pull/125
  • fix: guard execs from stalling vm by @BinSquare in https://github.com/smol-machines/smolvm/pull/144
  • fix: reserve binary exec outputs + unreachable state probe while agent is busy by @BinSquare in https://github.com/smol-machines/smolvm/pull/146

New Contributors

  • @flaneur2020 made their first contribution in https://github.com/smol-machines/smolvm/pull/125

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.14...v0.5.15

v0.5.14 New feature
Notable features
  • Overlayfs merge at pack time for faster first exec
  • --from-vm captures everything
Full changelog

What's Changed

  • feat: pack --from-vm should capture everything by @BinSquare in https://github.com/smol-machines/smolvm/pull/141
  • feat: optimize first exec time with overlayfs merge at pack time by @BinSquare in https://github.com/smol-machines/smolvm/pull/143

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.13...v0.5.14

v0.5.13 Mixed
Notable features
  • virtio-net network backend selection
  • Network interface guest-side configuration
  • .smolmachines configuration file API
Full changelog

What's Changed

  • feat: virtio-net - part 1: add network backend selection by @phooq in https://github.com/smol-machines/smolvm/pull/126
  • feat: wiring up API for the new --from .smolmachines by @BinSquare in https://github.com/smol-machines/smolvm/pull/135
  • refactor: extracting out smofile + updating smolvm-pack by @BinSquare in https://github.com/smol-machines/smolvm/pull/137
  • feat: remove smolbench as a submodule by @BinSquare in https://github.com/smol-machines/smolvm/pull/139
  • fix: db retries since all req during hold fails currently. by @BinSquare in https://github.com/smol-machines/smolvm/pull/138
  • feat: virtio-net - part 2: impl guest side network interface configuration by @phooq in https://github.com/smol-machines/smolvm/pull/131
  • fix: probe_agent bug was killing vm unintended as part of cleanup by @BinSquare in https://github.com/smol-machines/smolvm/pull/140

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.12...v0.5.13

v0.5.12 Mixed
Notable features
  • Machine creation from .smolmachine file
Full changelog

What's Changed

  • refactor: use debian for faster test, casing, etc by @BinSquare in https://github.com/smol-machines/smolvm/pull/119
  • refactor: guards around nonsense input values by @BinSquare in https://github.com/smol-machines/smolvm/pull/121
  • fix: failed exec should not kill the VM by @BinSquare in https://github.com/smol-machines/smolvm/pull/120
  • feat: QOL improvements on pack info, --image warning on --net by @BinSquare in https://github.com/smol-machines/smolvm/pull/122
  • feat: improving minor ux behaviors by @BinSquare in https://github.com/smol-machines/smolvm/pull/123
  • chores: remove duplicate code in storagedisk and overlaydisk by @phooq in https://github.com/smol-machines/smolvm/pull/101
  • feat: implementing machine create from .smolmachine file. by @BinSquare in https://github.com/smol-machines/smolvm/pull/128
  • fix: prevent second vm from starting with the same port by @BinSquare in https://github.com/smol-machines/smolvm/pull/129
  • fix: agents.md updates, test updates for correctness, fix bug with workspace symlink by @BinSquare in https://github.com/smol-machines/smolvm/pull/130

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.11...v0.5.12

v0.5.11 Bug fix

Fixes macOS case-insensitive filename collisions and networking persistence.

Full changelog

What's Changed

  • feat: adding a workdir tests + ensure priority chain for how workdir works by @BinSquare in https://github.com/smol-machines/smolvm/pull/116
  • fix: crun and resize2fs are not executable by @phooq in https://github.com/smol-machines/smolvm/pull/117
  • fix: filename collisions due to case insensitivity on macOS, storage sizing, and networking persistence for packed VMs by @BinSquare in https://github.com/smol-machines/smolvm/pull/118

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.10...v0.5.11

v0.5.10 Mixed
Notable features
  • Workspace shared directory convention functionality
Full changelog

What's Changed

  • fix: run init commands should run inside the container by @BinSquare in https://github.com/smol-machines/smolvm/pull/109
  • fix: mounts were failing silently on persistent machines by @BinSquare in https://github.com/smol-machines/smolvm/pull/111
  • feat: workspace shared directory convention functionality by @BinSquare in https://github.com/smol-machines/smolvm/pull/110

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.9...v0.5.10

v0.5.9 Bug fix

Fixed image download progress display and large file transfer (>250MB).

Full changelog

What's Changed

  • fix: show image download progress for pack by @phooq in https://github.com/smol-machines/smolvm/pull/104
  • fix: no space left + extraction of oci layers + packing time optimization by @BinSquare in https://github.com/smol-machines/smolvm/pull/105
  • fix: file transfer of larger file than ~250mb would bomb + cleaning zombie vms by @BinSquare in https://github.com/smol-machines/smolvm/pull/106

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.8...v0.5.9

v0.5.8 Bug fix
Notable features
  • Prototyping metadata for .smolmachine artifacts manifest
Full changelog

What's Changed

  • fix: machine created via embedded sdk does not show up in db by @phooq in https://github.com/smol-machines/smolvm/pull/79
  • feat: try resize2fs before fallback to e2fsck to avoid 140ms of unneeded work. by @BinSquare in https://github.com/smol-machines/smolvm/pull/93
  • chores: consolidate vm name validation by @phooq in https://github.com/smol-machines/smolvm/pull/94
  • feat: prototyping metadata for the .smolmachine artifacts manifest by @BinSquare in https://github.com/smol-machines/smolvm/pull/59
  • fix(cli): correct named machine hints by @phooq in https://github.com/smol-machines/smolvm/pull/99
  • fix: eliminate pack bottleneck with temp tar file + mem buffer on layer chunks by @BinSquare in https://github.com/smol-machines/smolvm/pull/100
  • fix: pack VM should have more resources to speed up packing process by @BinSquare in https://github.com/smol-machines/smolvm/pull/102

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.7...v0.5.8

v0.5.7 Bug fix
Notable features
  • Packed machines default to more memory
Full changelog

What's Changed

  • fixes: prune shouldn't do anything to running VMs and packed default to more mem. by @BinSquare in https://github.com/smol-machines/smolvm/pull/83
  • feat: observability instrumentation polish with json log filter by @BinSquare in https://github.com/smol-machines/smolvm/pull/84
  • refactor: documentation should clarify that smolvm machine run -it for shell. by @BinSquare in https://github.com/smol-machines/smolvm/pull/87
  • fix: bump libkrunfw with tsi sol_socket fix by @BinSquare in https://github.com/smol-machines/smolvm/pull/89
  • feat: pack chain confusion with separate libkrun libs by @BinSquare in https://github.com/smol-machines/smolvm/pull/90
  • feat: disk was silently failing to expand from 512mb originally by @BinSquare in https://github.com/smol-machines/smolvm/pull/92

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.5...v0.5.7

v0.5.6 Bug fix

Minor fixes and improvements.

Full changelog

What's Changed

  • fixes: prune shouldn't do anything to running VMs and packed default to more mem. by @BinSquare in https://github.com/smol-machines/smolvm/pull/83
  • feat: observability instrumentation polish with json log filter by @BinSquare in https://github.com/smol-machines/smolvm/pull/84
  • refactor: documentation should clarify that smolvm machine run -it for shell. by @BinSquare in https://github.com/smol-machines/smolvm/pull/87
  • fix: bump libkrunfw with tsi sol_socket fix by @BinSquare in https://github.com/smol-machines/smolvm/pull/89

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.5...v0.5.6

v0.5.5 New feature
Notable features
  • Structured logs and metrics instrumentation
Full changelog

What's Changed

  • feat: instrumenting observability improvements, structured logs + metrics. by @BinSquare in https://github.com/smol-machines/smolvm/pull/80
  • fix: persistence bug when container images are used as overlay - by @BinSquare in https://github.com/smol-machines/smolvm/pull/82

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.4...v0.5.5

v0.5.4 Bug fix
Notable features
  • Extracted smolfile types, parser, and helpers to public library
Full changelog

What's Changed

  • refactor: no need to warn twice for no command sent on machine run by @BinSquare in https://github.com/smol-machines/smolvm/pull/73
  • fix: clean up VmKind by @phooq in https://github.com/smol-machines/smolvm/pull/74
  • fix: machine run should not ignore entrypoint/cmd from smolfile by @BinSquare in https://github.com/smol-machines/smolvm/pull/75
  • refactor: extracting the smolfile types, parser, and helpers to a pub… by @BinSquare in https://github.com/smol-machines/smolvm/pull/77
  • fix: the cleanup for uninstall is not removing the libs by @BinSquare in https://github.com/smol-machines/smolvm/pull/78

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.2...v0.5.4

v0.5.3 Bug fix
Notable features
  • Extracted smolfile types, parser, and helpers to public library
Full changelog

What's Changed

  • refactor: no need to warn twice for no command sent on machine run by @BinSquare in https://github.com/smol-machines/smolvm/pull/73
  • fix: clean up VmKind by @phooq in https://github.com/smol-machines/smolvm/pull/74
  • fix: machine run should not ignore entrypoint/cmd from smolfile by @BinSquare in https://github.com/smol-machines/smolvm/pull/75
  • refactor: extracting the smolfile types, parser, and helpers to a pub… by @BinSquare in https://github.com/smol-machines/smolvm/pull/77

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.2...v0.5.3

v0.5.2 New feature
Notable features
  • File upload/download in/out of guest VM
  • Streaming exec via --stream
Full changelog

What's Changed

  • fix: overlay guard + resize robustness. by @BinSquare in https://github.com/smol-machines/smolvm/pull/68
  • feat: implementing file upload/download in/out of the guest vm by @BinSquare in https://github.com/smol-machines/smolvm/pull/69
  • feat: supporting streaming exec via --stream by @BinSquare in https://github.com/smol-machines/smolvm/pull/71
  • fix: machine run with no command should not hang without warning. by @BinSquare in https://github.com/smol-machines/smolvm/pull/72

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.1...v0.5.2

v0.5.1 New feature
Notable features
  • Random machine name generation
  • Ephemeral runs tracked in redb
  • Named flag commands for machine create
Full changelog

What's Changed

  • feat: current buildscript bundles old versions of the kernel. by @BinSquare in https://github.com/smol-machines/smolvm/pull/60
  • fix: tty startup can silently fail + optimization to shutdown path by @BinSquare in https://github.com/smol-machines/smolvm/pull/61
  • feat: introducing random machine names generation if no name is provided by @BinSquare in https://github.com/smol-machines/smolvm/pull/62
  • fix: ephemeral runs can get orphaned. Implement tracking them in redb. by @BinSquare in https://github.com/smol-machines/smolvm/pull/63
  • fix: add named flag commands to machine create by @BinSquare in https://github.com/smol-machines/smolvm/pull/65
  • feat: cleanup and removal of multi-containers. by @BinSquare in https://github.com/smol-machines/smolvm/pull/66

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.5.0...v0.5.1

v0.5.0 Breaking risk
Breaking changes
  • Removed unimplemented [service] and [deploy] from Smolfile spec
Notable features
  • Hostname-based egress filtering with DNS filtering proxy
  • SSH agent forwarding via vsock
  • OCI-compliant registry client for .smolmachine distribution
Full changelog

What's new

Hostname-based egress filtering (--allow-host)

  • --allow-host api.stripe.com resolves the hostname at VM start and restricts outbound to those IPs only
  • Smolfile [network] section with allow_hosts and allow_cidrs
  • DNS filtering proxy blocks resolution of non-allowed domains
  • Hard error on DNS resolution failure — a typo or outage won't silently weaken the policy

SSH agent forwarding (--ssh-agent)

  • Forward host SSH agent into the VM via vsock
  • Private keys never enter the guest — enforced by the SSH agent protocol
  • Works with git, ssh, scp transparently

Higher defaults

  • 4 vCPUs, 8 GiB RAM (elastic via virtio balloon — host only commits what the guest uses)

Registry client (experimental)

  • smolvm registry push and smolvm registry pull for OCI-compliant .smolmachine distribution
  • Content-addressed blob cache with LRU eviction

Other

  • Removed unimplemented [service] and [deploy] from Smolfile spec
  • Updated docs, examples, and website
  • Removed alpha designation

Install

curl -sSL https://smolmachines.com/install.sh | bash

Or download the tarball from the assets below.

v0.2.0 Breaking risk
Breaking changes
  • Cross-platform .smolmachine format V3 — runtime libraries embedded in stub binary
  • CLI positional args replaced with named flags: --image, --name, --machine, --container
Notable features
  • Ephemeral mode: smolvm machine run --image alpine -- echo
  • Network egress policy: --allow-cidr and --outbound-localhost-only
  • PID identity verification on all signal/kill paths
Full changelog

What's New

Cross-platform .smolmachine format (V3)

  • Runtime libraries embedded in stub binary via SMOLLIBS footer
  • .smolmachine sidecar now contains only cross-platform content (rootfs, layers, storage)
  • Build on macOS, ship .smolmachine to Linux

CLI improvements

  • Named flags replace positional args: --image, --name, --machine, --container
  • smolvm machines and smolvm containers aliases added
  • Ephemeral mode: smolvm machine run --image alpine -- echo hello

Network egress policy

  • --allow-cidr for CIDR-based network filtering
  • --outbound-localhost-only for restricted egress

Safety fixes

  • PID identity verification on all signal/kill paths (prevents accidental process termination on PID reuse)
  • Short-timeout vsock probe for API status checks (prevents blocking)

Test infrastructure

  • --fail-fast flag stops on first failure
  • TEST_FILTER runs single tests by name
  • Error output shown inline on failure

Install

curl -sSL https://smolmachines.com/install.sh | bash
v0.1.19 New feature
Notable features
  • Volume mounts auto-propagate into containers
  • New microvm resize command
  • Embedded Node SDK foundation
Full changelog

What's New

Container mount propagation fix

  • Volume mounts (-v) on microvm create now auto-propagate into containers — previously, mounts were only visible to microvm exec, not to containers created inside the VM.
  • Explicit container create -v now resolves against the VM's virtiofs devices by host path, with a clear error if the host path isn't mounted in the VM.

OpenClaw example

  • New examples/openclaw-app/ with a Smolfile for running the OpenClaw gateway in a microVM (sandbox and microvm+container paths).

Other changes

  • microvm resize command (#29)
  • Show overlay and storage in vm ls (#32)
  • Embedded Node SDK foundation (#20, #22, #23, #26, #28)
  • Updated embedded SDK README with build and test instructions (#33)
  • Startup error logging improvements (#24)
  • Build system cleanup (#25, #27)

Install

curl -sSL https://smolmachines.com/install.sh | sh -s -- --version 0.1.19
v0.1.18 Breaking risk
Breaking changes
  • CLI reorganization: runpack folded into pack create/run, openapi under serve openapi
  • serde camelCase for OpenAPI JSON responses
Notable features
  • Parallel disk formatting and macOS clonefile()
  • Default overlay increased to 10 GiB
  • --overlay flag for customizable size
Full changelog

What's New

Performance

  • Coldstart optimized — parallel disk formatting + macOS clonefile() for instant COW disk copies
  • Removed sync_all() from sparse disk creation, eliminating unnecessary fsync overhead
  • Agent boot optimizations — parallel storage mounts, pre-mount detections, lazy container registry reconciliation
  • CLI optimizations — direct DB calls, batched reads/writes, init_tables for schema setup
  • ext4 journaling disabled + skip validation for file markers
  • Ready marker via virtiofs — detect agent readiness via marker file instead of verification ping
  • close_range() for fd cleanup — more efficient inherited fd closing

Features

  • Increased default overlay to 10 GiB — resolves "No space left on device" errors during package installation (still sparse, ~25MB actual)
  • --overlay flag for customizable overlay disk size on microvm create, sandbox create, and sandbox run
  • CLI reorganizationrunpack folded into pack create/pack run, openapi moved under serve openapi
  • Pack extraction supports symlinks — OCI layers with symlinks now extract correctly with path traversal validation
  • serde camelCase for OpenAPI-generated JSON responses

Bug Fixes

  • API test patterns — fixed exit_codeexitCode grep patterns to match camelCase output
  • resize2fs missing — Alpine splits it into e2fsprogs-extra, now included in rootfs build
  • Kernel EOPNOTSUPP patch — handle at kernel layer instead of VM layer
  • Mount env vars — read at boot to mount virtiofs devices correctly
  • Library search paths — Linux now searches lib/linux-arch correctly

Infrastructure

  • Added smolbench submodule for tracking performance improvements/degradations
  • Updated libkrun and libkrunfw static builds
  • Flag to build with local libkrun changes (#16)

Checksum

sha256: 867c2ab1fe19134ce4a776d7bceccaa153a5dc9a17c599e447be5e970a128967  smolvm-0.1.18-darwin-arm64.tar.gz

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.1.17...v0.1.18

v0.1.17 New feature
Notable features
  • 37% smaller kernel (22.9MB to 14.5MB)
  • Optimized socket watch with kqueue/inotify
  • Batch container reconciliation
Full changelog

What's New

Performance

  • 37% smaller kernel — trimmed kernel image from 22.9MB to 14.5MB by disabling unused subsystems (Sound, TPM, HID, SCSI, DRM, XFS, BTRFS, etc.)
  • Faster VM boot — optimized socket watch (kqueue/inotify instead of polling) and streamlined startup ping loop
  • Faster container reconciliation — batch crun list instead of per-container crun state calls (~6ms each)

Bug Fixes

  • Batch reconcile safetycrun list failures now fall back to per-container state checks instead of incorrectly purging all containers from the registry
  • Shutdown data integrityshutdown() now correctly reports whether sync() acknowledgment was received; 5s timeout for heavy write workloads
  • libkrunfw loading — fixed find_lib_dir() to find libraries when SIP strips DYLD_LIBRARY_PATH
  • Linux EAGAIN handling — shutdown ack now handles Linux EAGAIN (os error 11) alongside macOS (os error 35)

Refactors

  • Extracted FdGuard RAII wrapper for kqueue/inotify fd cleanup
  • Unified socket wait loop logic (check_socket_wait_status helper)
  • Deduplicated crun state → ContainerState mapping via from_crun_status()
  • Extracted connect_with_timeouts() helper, is_benign_shutdown_error() helper
  • Explicit inotify event draining

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.1.16...v0.1.17

v0.1.16 Bug fix

Fixed terminal input lag by detaching stdin/stdout/stderr in child process.

Full changelog

What's Changed

Fix: terminal input lag after start / background VM launch

After running ./packed-binary start or smolvm microvm start, the user's terminal would lag or miss key inputs. This was caused by libkrun's internal threads inheriting the parent's stdin file descriptor and competing with the shell for terminal input.

Fix: Redirect stdin/stdout/stderr to /dev/null in the forked child process before calling krun_start_enter. All user I/O goes through the vsock agent protocol, and VM console output is captured to console.log — so nothing is lost.

Changes

  • Add detach_stdio() helper in process.rs
  • Apply to all 4 fork sites: daemon_start, run_as_packed_binary, RunpackCmd::run, AgentManager::start

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.1.15...v0.1.16

v0.1.15 New feature
Notable features
  • Pre-formatted overlay-template.ext4 eliminates mkfs.ext4
  • Smolfile examples: python.smolfile and node.smolfile
Full changelog

What's New

  • Overlay template: Pre-formatted overlay-template.ext4 eliminates mkfs.ext4 dependency and warning noise on first boot
  • Terminal fix: Packed binaries no longer leave terminal in raw mode on bad args / early exit
  • Smolfile examples: python.smolfile and node.smolfile demos in examples/
  • Install script: Now copies both storage and overlay templates

Install

curl -fsSL https://raw.githubusercontent.com/smol-machines/smolvm/main/scripts/install.sh | bash
v0.1.14 New feature
Notable features
  • ImageInfo protocol extended with entrypoint, cmd, env, workdir
  • Pre-formatted storage template eliminates e2fsprogs dependency
Full changelog

What's Changed

Bug Fixes

  • Fix packed binary CMD/ENTRYPOINT extraction: smolvm pack now correctly extracts CMD, ENTRYPOINT, ENV, and WORKDIR from OCI image configs into the PackManifest. Previously, packed binaries would fall back to /bin/sh instead of running the image's configured command.
  • Fix smolvm pack without e2fsprogs: Pack now looks for a pre-formatted storage template in ~/.smolvm/ before requiring mkfs.ext4, eliminating the e2fsprogs dependency for repeat builds.

Improvements

  • ImageInfo protocol extended: Added entrypoint, cmd, env, and workdir fields to ImageInfo for full OCI config visibility.
  • Code quality: Extracted shared constants, added CString helper, reduced unsafe scopes, fixed silent virtiofs mount failures, improved error handling in libkrun context lifecycle.
  • Storage template included: Release tarball now includes a pre-formatted storage-template.ext4, eliminating the need for e2fsprogs on first install.
v0.1.13 Bug fix

Fixed named 'default' VM resolution and stdout/stderr write reliability.

Full changelog

What's Changed

Bug Fixes

  • Fix named "default" VM resolution: When smolvm microvm start (no name) is called but a named VM "default" exists in the config database, it now correctly routes through the named-VM code path. This fixes networking (--net) and other config options not being applied when the user creates a named "default" VM then starts it without specifying the name.
  • Fix stdout/stderr write reliability: Added write_all_retry() and flush_retry() for interactive session I/O to handle transient write failures gracefully.

Improvements

  • Updated integration tests for better reliability
  • Updated README with feature improvements

Install

curl -sSL https://smolmachines.com/install.sh | sh

Or download the tarball directly from the assets below.

Full Changelog: https://github.com/smol-machines/smolvm/compare/v0.1.11...v0.1.13

v0.1.12 Bug fix

Fixed EAGAIN crash in interactive sessions via retry logic for stdio writes.

Full changelog

Fixes

  • Fix EAGAIN crash in interactive sessions (ps aux, apk, etc.): Setting stdin to non-blocking mode (O_NONBLOCK) propagated to stdout via the shared terminal file description, causing write_all() to fail with "Resource temporarily unavailable" when the terminal output buffer filled up. Added retry logic for stdout/stderr writes.

Install

curl -fsSL https://raw.githubusercontent.com/smolvm/smolvm/main/scripts/install.sh | bash
v0.1.11 Bug fix

Fixed database lock contention and improved EAGAIN vs timeout distinction.

Full changelog

What's New

  • Fix: Database lock contentionsmolvm microvm start now releases the redb database lock before running init commands, so concurrent exec, stop, and other commands no longer fail with "Database already open. Cannot acquire lock."

  • Fix: EAGAIN frame corruption (improved from v0.1.10) — read_exact_retry() now correctly distinguishes between spurious macOS vsock EAGAIN (always retry) and read timeout expiry (propagate), fixing both interactive sessions hanging and non-interactive runs blocking.

Install

curl -sSL https://smolmachines.com/install.sh | sh
v0.1.10 Bug fix

Fixed EAGAIN frame corruption in interactive sessions (ps aux, apk, shells).

Full changelog

What's New

  • Fix: EAGAIN frame corruption in interactive sessions — Commands like ps aux, apk, and interactive shells would crash with "Resource temporarily unavailable" (EAGAIN). Replaced read_exact() with read_exact_retry() that handles partial reads without corrupting the wire protocol, while still respecting read timeouts for non-interactive exec.

  • Fix: Suppress noisy agent overlay messagessmolvm-agent: no overlay device, skipping no longer printed to console.

  • Fix: HTTPS + Connection: close (from v0.1.9) — Fixed BrokenPipeError when making HTTPS requests with Connection: close header.

Install

curl -sSL https://smolmachines.com/install.sh | sh
v0.1.9 Bug fix

Fixed BrokenPipeError when making HTTPS requests with Connection: close header.

Full changelog

What's New

  • Fix: HTTPS + Connection: close — Fixed BrokenPipeError when making HTTPS requests with Connection: close header (affects urllib, wget, and many HTTP clients). Root cause was in libkrun's TSI proxy where epoll HANG_UP events would send RST before draining buffered response data. Now correctly drains data and sends graceful SHUTDOWN.

  • Rebuilt libkrun with TSI proxy fix included.

Install

curl -sSL https://smolmachines.com/install.sh | sh
v0.1.8 Bug fix

Fixed VM stop failure when PID identity verification unavailable.

Full changelog

What's Changed

  • Fix VM stop failuresmolvm microvm stop and sandbox config-change restarts failed with "PID identity not verified" because proc_pidinfo returns zeroed data for session-leader VM children on macOS. Now treats start_time=0 as unavailable and allows stop_process_fast when the agent acknowledged shutdown over vsock.
  • Fix license — All workspace crates now correctly specify Apache-2.0 (was MIT OR Apache-2.0 in sub-crates).

Assets

  • smolvm-0.1.8-darwin-arm64.tar.gz — macOS Apple Silicon (arm64)

Install

curl -sSL https://smolmachines.com/install.sh | bash
v0.1.7 Bug fix

Fixed interactive exec crash from vsock spurious wakeups and Linux build recursion.

Full changelog

What's Changed

  • Fix interactive exec crash on large output — EAGAIN (os error 35) from vsock spurious wakeups was treated as fatal, crashing interactive sessions (e.g. ps aux in /bin/sh). Now retries on next poll iteration.
  • Fix packed binary startup racewait_for_agent only verified the muxer socket was connectable, not that the guest agent was listening. Added ping-based readiness check matching the microvm start path.
  • Detect vsock hangup cleanly — POLLHUP/POLLERR now reported as "connection to VM lost" instead of cryptic I/O errors.
  • Fix Linux buildlink_krun() in build.rs had infinite recursion on non-macOS (stack overflow on CI).

Assets

  • smolvm-0.1.7-darwin-arm64.tar.gz — macOS Apple Silicon (arm64)

Install

tar xzf smolvm-0.1.7-darwin-arm64.tar.gz
cd smolvm-0.1.7-darwin-arm64
./smolvm --version
v0.1.6 Breaking risk
Breaking changes
  • Eliminated smolvm-stub crate (~2100 lines); main binary auto-detects packed mode via Mach-O section, sidecar, or footer
Notable features
  • Auto-detect packed mode
  • New run-packed subcommand
  • Weak-link libkrun on macOS
Full changelog

What's Changed

  • Eliminated smolvm-stub crate (~2100 lines removed) — the main smolvm binary now serves as both the normal CLI and the packed binary runtime via auto-detection at startup
  • Auto-detect packed mode: checks for Mach-O section, sidecar (.smolmachine), or embedded footer before parsing CLI args
  • New run-packed subcommand for explicit .smolmachine file execution
  • Weak-link libkrun on macOS so packed binaries can start without libkrun present (uses dlopen at runtime)
  • Fixed packed binary code signing — added cs.disable-library-validation entitlement so packed binaries can dlopen libkrun from extracted cache

Assets

  • smolvm-0.1.6-darwin-arm64.tar.gz — macOS Apple Silicon (arm64)

Install

tar xzf smolvm-0.1.6-darwin-arm64.tar.gz
cd smolvm-0.1.6-darwin-arm64
./smolvm --version
v0.1.5 Feature
Notable features
  • Implement PTY for exec -it mode
Full changelog
  • Maximizing stability
  • Feat: Implement PTY for exec -it mode
  • Bug fix: interactive mode shouldn't have a timeout
  • FIx: Install script should now detect the launching stub for portable executable virtual machine.
v0.1.4 Bugfix
Notable features
  • Added microvm lifecycle API routes to server mode
Full changelog
  • Improving stability.
  • Fixing noisy shutdown errors are pretty benign.
  • Refactors: magic numbers, named consts.
  • Tests: use a temp db file now, was experiencing race conditions with concurrent tests (expected).
  • Adding microvm lifecycle api routes to server mode.
v0.1.3 Mixed
Notable features
  • Progress bar for image pulls to indicate activity during operations
Full changelog
  • Adding progress bar for image pulls so it doesn't look like it's frozen.
  • Fixed timeout for very large image pulls
v0.1.2 Mixed
Notable features
  • Support for large multi-language container images (Python, Node.js)
Full changelog
  • Increasing stability.
  • Fixes and support for large multi-language container images ex. python, nodejs.
v0.1.1 Bugfix

Fixed missing agent-rootfs in distribution that broke installation.

Changelog
  • Bug in installation step, missing agent-rootfs in the distribution.

Beta — feedback welcome: [email protected]