SmolVM is optimized for low-latency agent workflows: a fresh sandbox is ready to run a command in about a second, and follow-up commands return in milliseconds.Documentation Index
Fetch the complete documentation index at: https://docs.celesto.ai/llms.txt
Use this file to discover all available pages before exploring further.
Benchmark results
Wall-clock timings on a standard Linux host (Alpine guest, 1 vCPU / 512 MB, KVM), measuring fromSmolVM(...) to a command returning:
| Phase | Time |
|---|---|
| Create | ~11ms |
| Launch | ~53ms |
| First command (vsock, default on Linux + QEMU) | ~1.28s |
| First command (SSH path, e.g. Firecracker) | ~1.67s |
| Warm command (vsock) | ~1.3ms |
| Warm command (SSH) | ~43ms |
| Stop + delete | ~751ms |
| Create → first command (QEMU + vsock default) | ~1.34s |
Benchmarks measured on a 16-vCPU KVM host with the Alpine Linux guest. Numbers reflect the default boot profile after the boot-latency fixes shipped in mid-2026: a ~6× speed-up on QEMU defaults and a ~32× speed-up on warm commands once vsock is the working channel. See Control channel for what vsock is and when it kicks in.
Running your own benchmarks
You can benchmark SmolVM on your hardware using the included benchmark script:Performance characteristics
Boot performance
- MicroVM creation: SmolVM allocates IP addresses, TAP devices, and network rules in tens of milliseconds.
- Time to first command: ~1.3s on the default QEMU + vsock path, ~1.7s on the SSH path (Firecracker today).
- Hardware virtualization: Uses KVM on Linux and Hypervisor.framework on macOS for near-native performance.
- Safe boot trims: The default
MICROVM_DIRECTprofile appendstsc=reliable no_timer_check quietto the kernel cmdline. SetSMOLVM_VERBOSE_BOOT=1to dropquietwhen debugging a stuck boot.
Runtime performance
- Command execution: ~1.3ms warm-command latency on vsock; ~43ms on SSH.
- Memory overhead: Minimal host overhead beyond configured VM memory (default 512MB).
- CPU efficiency: Hardware virtualization provides near-native CPU performance.
Teardown performance
- Graceful Shutdown: Firecracker VMs can be stopped in ~751ms
- Resource Cleanup: Network rules, TAP devices, and disk images are cleaned up automatically
- Fast Path for Ephemeral VMs: SIGKILL-based teardown for sandbox VMs that don’t need state preservation
Optimization tips
1. Reuse VMs for multiple commands
Instead of creating a new VM for each command, reuse the same VM:2. Use appropriate resource allocation
Configure CPU and memory based on your workload:3. Pre-built custom images
For workloads requiring specific dependencies, build a custom rootfs image with pre-installed packages usingImageBuilder:
4. Shared vs isolated disk mode
Choose the appropriate disk mode for your use case: Isolated Mode (default): Each VM gets its own copy of the rootfs- ✅ Complete isolation between VMs
- ✅ No cross-VM contamination
- ❌ Higher disk usage
- ❌ Copy overhead on first boot
- ✅ No disk copy overhead
- ✅ Lower disk usage
- ❌ Changes persist across VMs
- ❌ Potential cross-VM contamination
5. Backend selection
SmolVM supports multiple backends with different performance characteristics:- Firecracker (Linux): Fastest boot times, lowest overhead, recommended for production
- QEMU (macOS/Linux): Broader compatibility, slightly higher overhead
Performance monitoring
Check VM status
Use the CLI to list all running VMs and their status:Clean up stale VMs
Remove VMs marked as running but whose processes have died:Scalability considerations
IP address pool
By default, SmolVM allocates IPs from172.16.0.2 to 172.16.0.254, supporting 253 concurrent VMs.
SSH port pool
Host-side SSH forwarding uses ports2200-2999, supporting 800 concurrent VMs.
