Overview
Thesmolvm doctor command performs comprehensive diagnostics on your system to ensure SmolVM can run properly. It checks for required dependencies, permissions, and backend-specific requirements.
Basic Usage
Command Syntax
Options
Backend to validate. Choices:
auto, firecracker, qemuauto: Automatically detect the appropriate backend for your platformfirecracker: Validate Firecracker requirements (Linux + KVM)qemu: Validate QEMU requirements (cross-platform)
Emit machine-readable JSON output instead of human-friendly text
Treat warnings as failures. Useful for CI/CD validation
Examples
Run Diagnostics for Firecracker
Run Diagnostics for QEMU on macOS
Get JSON Output for Automation
Strict Mode for CI/CD
Checks Performed
Firecracker Backend
When validating Firecracker,smolvm doctor checks:
Verifies
/dev/kvm is available for hardware virtualizationLocates the Firecracker binary in PATH or
~/.smolvm/binEnsures
ip command is available (from iproute2 package)Ensures
nft command is available (from nftables package)Ensures
ssh command is available (from openssh-client package)Validates that network commands and sudo policies are properly configured
Checks if SmolVM’s NAT table exists (informational - created automatically)
Checks if SmolVM’s filter table exists (informational - created automatically)
QEMU Backend
When validating QEMU,smolvm doctor checks:
Locates
qemu-system-aarch64 or qemu-system-x86_64 binariesOn macOS, verifies Hypervisor.framework (hvf) acceleration is available
Ensures
ssh command is availableExit Codes
- 0: All checks passed (or warnings in non-strict mode)
- 1: One or more checks failed, or warnings in strict mode
Check Statuses
Each check returns one of three statuses:- PASS: Check succeeded
- WARN: Non-critical issue detected (treated as failure in strict mode)
- FAIL: Critical issue that prevents SmolVM from functioning
Common Failures
Missing KVM Access
Firecracker Not Found
Missing Network Tools
Network Permission Issues
Integration with CI/CD
Usesmolvm doctor in your CI pipeline to validate the environment:
The
--json flag combined with --strict makes it easy to parse results and fail CI builds on any issues.Troubleshooting
Ifsmolvm doctor reports failures:
- Check system requirements: Ensure you’re running on a supported platform (Linux for Firecracker, macOS/Linux for QEMU)
- Run system setup: Execute
sudo ./scripts/system-setup.sh --configure-runtime - Verify permissions: Make sure your user is in the
kvmgroup (Linux) or has appropriate privileges - Install missing tools: Install any missing dependencies reported by doctor
- Check virtualization: Ensure hardware virtualization is enabled in your BIOS/UEFI
See Also
- CLI Overview - General CLI usage and configuration
- Cleanup Command - Clean up VM resources
- MicroVM Architecture - Understanding SmolVM’s architecture