Practical overview
When it fits
Use Smolvm when a task needs a separate virtual machine and guest kernel, particularly for local agent-code execution, disposable environments, or workflows that benefit from checkpointing and branching.
Who it is for
- Developers who need isolated environments for running agent-generated or other code.
- Teams embedding virtual-machine creation and execution into developer tools.
- Users who want portable, checkpointable development or execution environments.
Documented uses
- Run a command or interactive shell inside a temporary VM.
- Create and maintain a persistent machine for development or agent work.
- Control VM creation and command execution from Node.js, Python or Rust applications.
- Save, resume or branch a running machine’s state for repeatable experiments.
- Restrict workload networking and control which resources cross the VM boundary.
Requirements & limits
The repository is public and lists an Apache-2.0 license. The README provides installation paths for macOS, Linux and Windows; Windows requires Windows Hypervisor Platform.
- Smolvm uses hardware-virtualized machines with a guest kernel; the documented host backends are Hypervisor.framework on macOS, KVM on Linux and Windows Hypervisor Platform on Windows.
- Networking is off by default, and egress can be limited to named hosts.
- Mounted folders, open ports, allowed hosts and forwarded credentials or SSH agents determine what a workload can access.
- The SDK packages are documented for Node.js, Python and Rust; the project itself is written in Rust.
- Branching and checkpoints preserve machine state, while portable machine packs can be pushed to an OCI registry or run as self-contained executables.
Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.
Run a one-off command in an Alpine VM
Launch a temporary VM from an Alpine image and run a command inside it.
Before you start
- Smolvm installed on a supported host.
- Network access enabled for this example.
Steps
Run
smolvm machine run --net --image alpine -- uname -a.The VM is removed when the command exits.
Expected outcome
The command runs in a one-off virtual machine that is removed on exit.
Guide limitations
- This example enables networking; the README says networking is off by default.
- The documented command runs a single command and does not describe a persistent machine setup.
Install an SDK and create a machine from application code
Install the documented SDK for a chosen language and use the Machine API example to create, execute in and delete a VM.
Before you start
- Node.js, Python or Rust, depending on the SDK selected.
- Smolvm’s documented SDK package for that language.
Steps
Install the package with the command below, the command below or the command below, as appropriate.
npm install smolmachinespip install smolmachinescargo add smolmachinesUse the README’s TypeScript example to create a machine from
python:3.12-alpinewith networking enabled.Execute the example Python expression with
m.execand read its standard output.Delete the machine with
m.delete().
Expected outcome
The example creates a VM through the SDK, runs a Python expression and then deletes the machine.
Guide limitations
- The example enables networking.
- The documented SDKs run in the application process with no daemon.
Sources & review
Source record details
- Source availability
- Active
- Sources checked
- 7 October 2026
- Original website title
- smol-machines/smolvm · Official homepage title · retained in its source language

