Diagnostics
SmolVM includes a built-in diagnostic tool to check your system configuration:smolvm doctor command validates:
- KVM availability (Linux/Firecracker)
- Firecracker binary installation
- QEMU installation and HVF support (macOS)
- Network configuration (nftables, iproute2)
- System permissions
Common issues
Docker image build fails with daemon errors
Docker image build fails with daemon errors
- Install Docker if missing:
- Start the Docker daemon:
- Fix socket permissions (Linux):
KVM not available: /dev/kvm not found
KVM not available: /dev/kvm not found
- Verify KVM is available:
- If missing, enable virtualization in your BIOS/UEFI settings
-
Add your user to the
kvmgroup:
- Verify permissions:
Firecracker binary not found
Firecracker binary not found
firecracker executable is not in PATH.Solution:- Run the setup command:
- Or install manually using the HostManager:
- Verify installation:
Permission denied: Cannot create TAP device
Permission denied: Cannot create TAP device
- Run the setup command:
- Or configure manually:
- Verify nftables is installed:
VM boots but SSH connection times out
VM boots but SSH connection times out
- Check VM status:
- Test network connectivity:
- Check firewall rules:
- Examine VM logs:
- Increase the startup wait time:
Guest agent or vsock command times out
Guest agent or vsock command times out
- Check that the sandbox uses a recent SmolVM image:
- On Linux QEMU hosts, verify the vsock device exists:
- Try the SSH compatibility path for file or environment operations:
- Inspect the sandbox log and guest-agent log output:
- Recreate the sandbox with a current published image if the log says the guest agent is missing:
Snapshot creation times out before any snapshot files appear
Snapshot creation times out before any snapshot files appear
- Confirm the sandbox can run a simple command:
- If the fast shell fails, test SSH directly:
-
Retry with a current image or recreate the sandbox. Recent images include the guest-agent
/syncendpoint used before snapshot capture. - Include the VM log when reporting the issue:
DatabaseError: database is locked
DatabaseError: database is locked
- The state database uses exclusive locks for writes. Ensure only one process modifies VMs at a time.
- Check for stale processes:
- Clean up stale resources using the CLI:
- If persistent, manually remove the lock:
No IP addresses available in pool
No IP addresses available in pool
172.16.0.2-254 range are allocated.Solution:- List all VMs:
- Clean up stopped or stale VMs:
- The IP pool supports 253 concurrent VMs (
172.16.0.2through172.16.0.254). If you need more, consider implementing a custom IP allocator.
QEMU exited early while booting (macOS)
QEMU exited early while booting (macOS)
- Verify QEMU installation:
- Check HVF acceleration support:
- Reinstall QEMU via Homebrew:
- Check VM logs for kernel panic:
- Use auto-config mode to let SmolVM pick a compatible kernel and rootfs:
VM stuck in ERROR state
VM stuck in ERROR state
- Check VM details:
- Examine logs:
- Delete the failed VM and create a fresh one:
- Run cleanup to remove all stale resources:
RuntimeError: Unable to find writable data directory
RuntimeError: Unable to find writable data directory
- Check directory permissions:
- Create directory manually:
- Set explicit data directory:
- Use environment variable:
Debugging tips
Enable debug logging
Inspect Firecracker socket
Manually query the Firecracker API:Check network rules
Monitor VM processes
Getting help
If you’re still experiencing issues:- Check the GitHub Issues for similar problems
- Run
smolvm doctor --jsonand include the output in your bug report - Include relevant logs from
~/.local/state/smolvm/*.log - Join the Celesto AI Discord community
Known limitations
- IP Pool: Maximum 253 concurrent VMs (172.16.0.2-254)
- SSH Port Pool: Maximum 800 concurrent VMs (ports 2200-2999)
- Firecracker: Linux only and requires KVM
- QEMU: Required for macOS and Windows guests; Linux direct-kernel guests can use the faster
microvmmachine model - libkrun: Experimental and does not support pause, resume, snapshots, or snapshot restore yet
- Windows guests: Use SSH for the control channel
