Run any workload in a fast, hardware-isolated Linux VM. The same SDK and the same .smolmachine artifact run identically:
Develop locally, then deploy to the hosted cloud — or self-host with smolvm.
Create an account and claim $10 free usage per month.
Navigate to API Keys page in the console, create a key, and save the key.
export SMOL_CLOUD_TOKEN="smk_your_key_here"
export SMOL_CLOUD_URL="https://api.smolmachines.com"Create a machine:
curl -X POST $SMOL_CLOUD_URL/v1/machines \
-H "Authorization: Bearer $SMOL_CLOUD_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"source": {"type": "image", "reference": "alpine"},
"resources": {"cpus": 1, "memoryMb": 256},
"name": "my-first-machine",
"network": {"mode": "open"}
}'Run a command:
# the machine starts on the first exec
curl -X POST $SMOL_CLOUD_URL/v1/machines/MACHINE_ID/exec \
-H "Authorization: Bearer $SMOL_CLOUD_TOKEN" \
-H "Content-Type: application/json" \
-d '{"command": "echo hello from smol cloud"}'Each workload receives hardware isolation, with its own kernel on MacOS Hypervisor, Linux KVM, or
Windows Hypervisor Platform. Pack it into a .smolmachine and it runs anywhere with
compatible host architecture.
Default provision: 4 vCPUs 8 GiB RAM
Memory is elastic via virtio balloon, the host only commits what the guest actually uses. libkrun VMM +
custom libkrunfw kernel. No host daemon — the VMM is linked into the binary.
Every rollout gets its own machine, forked from a live one rather than booted from scratch. Fork a running machine into a batch of episodes, then score them and release the pool.
Untrusted code runs behind a VM boundary with its own guest kernel, with network off by default. Configure each machine’s network policy and public-access.
Files, installed packages, and workspace persist across sessions, so a workload picks up where it left off. Memory is elastic, so a machine only holds what the guest is actually using.
Same machine model on your laptop, in smol cloud, or on your own servers. Develop against a local microVM for free, then point the same code at managed machines through the console, REST API, or SDK.
A job waits on boot + install. Pull a .smolmachine file and the VM comes up ready to work. Start from a pre-built registry environment in the cloud and skip repeated provisioning.
See more examples
| smolvm | Containers | QEMU | Firecracker | |
|---|---|---|---|---|
| Isolation | VM per workload | Shared Kernel | Separate VM | Separate VM |
| Boot time | <200ms | ~100ms | ~15-30s | <125ms |
| Architecture | libkrun Library | Daemon | Process | Process |
| GPU | Vulkan + CUDA | Host Passthrough | VFIO | No |
| macOS native | Yes | Via Docker VM | Yes | No |
| Portable artifacts | .smolmachine | Images | No | No |