Skip to main content
These numbers come from one run on 2026-07-24, on a NixOS workstation with Podman 5.8.2 and warm caches. They predate v0.1.0, which moved the control plane to an unprivileged account. Treat them as a rough guide. Each example app was deployed three ways:
  • Russel container: russel deploy, rootless container.
  • Russel microVM: russel deploy with type = "microvm".
  • Plain Podman: podman build from the example’s Dockerfile, then podman run.

Deploy to first response

Time from starting the deploy until the app answered an HTTP request, including the build. Russel’s Nix builds were cached; Podman rebuilt its image. Most of Podman’s time is the image build. With both sides cached, the gap comes down to the start-up numbers below.

Start-up only

Time from “the build exists” to “the app answers”, without the build: Plain Podman usually starts fastest. A Russel container adds 100 to 300 ms for preparing its root folder and checking that the app really answers. A microVM adds a kernel boot on top. Containers were capped at 256 MB of memory to match the microVM default.

Where a container deploy spends its time

A typical cached deploy of basic-http:

Run it yourself

The benchmark scripts are in the repo root and need a checkout, Nix, rootless Podman, and Podman or Docker for the Dockerfile baseline. The microVM runs also need KVM and root, and are skipped without Russel’s kernel.
--cold clears the caches first. The scripts take over /var/lib/russel while they run, so never run them on a server with real services.