Skip to main content
Russel deploys your services to your own Linux server. You add a Russelfile.toml to a git repo, and Russel builds it with Nix and runs the result as a rootless Podman container. There are no images to build and no registry to push to: the container runs straight from the Nix store. MicroVMs (Cloud Hypervisor + KVM) are available as an experimental second runtime.

When to use Russel

How a deploy works

  1. Fetch. The server clones your repo and reads Russelfile.toml.
  2. Build. It runs nix build on the repo’s flake. If there is no flake.nix, Russel writes one for Rust, Go, and static sites.
  3. Run. It starts the build output as a rootless container, with /nix/store mounted read-only, and publishes the app on a 127.0.0.1 port.
  4. Route. If you run Traefik, Russel writes a route so app.example.com reaches the app.
Updates start the new version next to the old one and switch traffic once it answers. Russel keeps the last 20 deployments, so you can roll back. More: Architecture and Runtimes.

Choose your path

The two programs

The control plane only speaks plain HTTP on loopback. Reach it from your laptop through an SSH tunnel or an HTTPS reverse proxy; Installation covers both.