What you can do
The control channel powers:vm.run(...)in the Python SDKsmolvm sandbox shellfor a fast interactive shellsmolvm sandbox file uploadandsmolvm sandbox file downloadsmolvm sandbox env set,unset, andlist- Snapshot preflight work that asks the guest to save files before the VM pauses
| Channel | What it is | Best for |
|---|---|---|
| SSH | A normal secure shell connection over the sandbox network | Maximum compatibility, Windows guests, manual SSH access |
| vsock | A direct host-to-guest socket that skips TCP networking | Fast commands, file transfer, shell access, and guest sync on supported Linux guests |
Default channel selection
SmolVM resolves the channel in this order:- Explicit request -
SmolVM(comm_channel="ssh")orSmolVM(comm_channel="vsock") - Saved VM config - a channel stored with the sandbox
- Automatic choice - vsock where the host and guest support it, SSH elsewhere
| Host and backend | Automatic channel |
|---|---|
| Linux + QEMU + recent SmolVM image | vsock |
| Linux + Firecracker + recent SmolVM image | vsock |
| macOS + QEMU | SSH |
| Windows guest | SSH |
Recent SmolVM images start the Rust guest agent before networking and
sshd. That lets vsock commands run before the sandbox network is ready.Use the Python SDK
Leavecomm_channel unset for the automatic path:
Use the CLI
Open a fast shell:smolvm sandbox shell uses the vsock terminal stream when the sandbox supports it. If the fast shell feature is unavailable, it falls back to SSH for that session.
Move files over the selected channel:
smolvm sandbox ssh always uses SSH. Port forwarding also uses SSH tunnels when the backend needs them.
Guest sync before snapshots
Before SmolVM pauses a sandbox for a snapshot, it asks the guest to flush filesystem state. On recent images, the guest agent exposes a dedicated/sync endpoint over vsock. This gives SmolVM a direct “save files now” operation before it captures the disk.
If the guest agent is older or unavailable, SmolVM can use the raw command path as a fallback for some operations. The raw path runs the command directly in the guest instead of wrapping it in a login shell.
Troubleshooting
The guest agent does not answer
The guest agent does not answer
Use a current published image or rebuild your custom image with the SmolVM guest agent. Published images and images built through
ImageBuilder include /usr/local/bin/smolvm-guest-agent.For a one-off compatibility check, force SSH:The fast shell falls back to SSH
The fast shell falls back to SSH
This is expected when the sandbox image does not advertise terminal-stream support.
smolvm sandbox shell tries the fast vsock terminal first, then opens SSH if that feature is missing.Next steps
Runtime backends
Compare Firecracker, QEMU, and libkrun
Snapshot and restore
See how guest sync fits into snapshots
smolvm sandbox shell
Open the fast interactive shell
Troubleshooting
Fix startup and guest-agent failures
