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
KVM not available: /dev/kvm not found
KVM not available: /dev/kvm not found
Problem: The Firecracker backend requires KVM hardware virtualization.Solution:Alternative: Use the QEMU backend if KVM is unavailable:
- 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
Problem: The
firecracker executable is not in PATH.Solution:- Run the system setup script:
- Or install manually using the HostManager:
- Verify installation:
Permission denied: Cannot create TAP device
Permission denied: Cannot create TAP device
Problem: User lacks permissions to create TAP networking devices.Solution:
- Run the network setup script:
- Or configure manually:
- Verify nftables is installed:
VM boots but SSH connection times out
VM boots but SSH connection times out
Problem: VM starts successfully but SSH connection fails.Solution:
- Check VM status:
- Test network connectivity:
- Check firewall rules:
- Examine VM logs:
- Increase SSH timeout:
DatabaseError: database is locked
DatabaseError: database is locked
Problem: Multiple SmolVM processes trying to access the state database simultaneously.Solution:
- The state database uses exclusive locks for writes. Ensure only one process modifies VMs at a time.
- Check for stale processes:
- Reconcile VM state:
- If persistent, manually remove the lock:
No IP addresses available in pool
No IP addresses available in pool
Problem: All IPs in the
172.16.0.2-254 range are allocated.Solution:- List all VMs:
- Clean up stopped VMs:
- Use the CLI cleanup command:
- The IP pool supports 253 concurrent VMs. If you need more, consider implementing a custom IP allocator.
QEMU exited early while booting (macOS)
QEMU exited early while booting (macOS)
Problem: QEMU process terminates immediately after start.Solution:
- Verify QEMU installation:
- Check HVF acceleration support:
- Reinstall QEMU via Homebrew:
- Check VM logs for kernel panic:
- Ensure kernel and rootfs are compatible:
VM stuck in ERROR state
VM stuck in ERROR state
Problem: VM is marked as ERROR and cannot be restarted.Solution:
- Check VM details:
- Examine logs:
- Delete and recreate:
- Run reconciliation to clean up stale state:
RuntimeError: Unable to find writable data directory
RuntimeError: Unable to find writable data directory
Problem: SmolVM cannot create or write to any data directory.Solution:
- 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 Slack 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 (requires KVM)
- QEMU: Slower boot times compared to Firecracker
- SSH Trust Model: Host keys not strictly verified by default (see SECURITY.md)