CLI
The hotcell CLI is the fastest way to run OCI images in microVMs. Pull an image, boot a VM, stream output. No server, no embedding — just run it.
Quick Start
$ hotcell run alpine -- echo "hello from a VM"
hello from a VM The CLI pulls the image (with layer caching), assembles a root filesystem, boots a microVM, streams console output to stdout, and exits with the guest's exit code. Logs and errors go to stderr, so piping works correctly.
Run Python
$ hotcell run -m 512 python:3.12-slim -- python3 -c "print('hello')"
hello Run with networking
$ hotcell run --network inet alpine -- wget -qO- http://example.com
<!doctype html>
... Usage
Environment variables
$ hotcell run -e NAME=hotcell alpine -- sh -c 'echo Hello $NAME'
Hello hotcell Volume mounts
Share host directories into the guest. The format is HOST_PATH:GUEST_TAG, where the tag becomes the mount point inside the VM at /<tag>. Files are shared directly between host and guest — no copying.
$ hotcell run -v /tmp/data:data alpine -- ls /data
input.txt Exit codes and piping
The CLI exits with the guest's exit code, and sends VM output to stdout while keeping logs on stderr. This makes it composable in shell pipelines and scripts.
$ hotcell run alpine -- sh -c "exit 42"
$ echo $?
42 $ hotcell run alpine -- cat /etc/os-release | grep PRETTY
PRETTY_NAME="Alpine Linux v3.21" Pre-cache images
Use hotcell pull to download and cache image layers without running anything. Subsequent runs using the same image skip the download.
$ hotcell pull alpine:latest
$ hotcell pull python:3.12-slim Options Reference
hotcell run
alpine, python:3.12-slim)disabled, inet (internet only), or full (all TCP)Advanced options
libkrun, firecracker, or chhotcell pull
Environment variables
Backend Selection
The CLI supports all three VMM backends. Use --backend to select. The default is libkrun which works on macOS and Linux. Firecracker and Cloud Hypervisor require Linux with KVM.
$ hotcell run --backend firecracker \
--firecracker-bin /usr/bin/firecracker \
--firecracker-kernel /var/lib/hotcell/vmlinux.bin \
alpine -- echo "hello from Firecracker"
hello from Firecracker Worker binary
The libkrun backend requires the hotcell-libkrun-worker binary. The CLI discovers it automatically by checking: (1) the --worker flag or HOTCELL_WORKER env var, (2) the directory adjacent to the hotcell binary, (3) PATH.
Image References
The CLI normalizes short image references following Docker conventions. You don't need to type the full registry path — bare names are expanded to docker.io/library/<name>:latest.
alpine → docker.io/library/alpine:latest
alpine:3.19 → docker.io/library/alpine:3.19
myuser/myimage → docker.io/myuser/myimage:latest
ghcr.io/owner/image:v1 → ghcr.io/owner/image:v1 (pass-through)