Skip to content

Repository files navigation

nibrunner

MicroVM orchestrator for your VPS with built-in sleep/wake policies, backups, snapshots, HTTPS, custom image, logs and metrics

Documentation

nibrunner runs apps in Firecracker microVMs on one Linux machine. It is a single binary, nibrunnerd. You list the apps you want in a JSON file. The daemon boots each one in its own microVM and keeps it running.

  • Sleep/wake policies — An app with no traffic is snapshotted and suspended. The next request wakes it. Which apps sleep, and after how long, is set per app, so a machine that runs a few dozen apps at once can hold hundreds.
  • Backups and snapshots — Volumes can live in an object store, so they survive the machine. A checkpoint is a point-in-time copy of a volume. An export bundles a volume and the app's environment into an archive a new volume can start from.
  • HTTPS — A built-in proxy routes each hostname to its app. It terminates TLS with the certificate you give it, or serves plain HTTP behind an edge that terminates TLS. Non-HTTP ports (ssh, DNS, WireGuard) are forwarded as-is, TCP or UDP, and wake a sleeping app like a request does.
  • Custom image — An app's root filesystem is a stack of layers on top of the Debian guest image nibrunner ships: a bare executable the host packs into an image, or a squashfs or ext4 you built. A volume can start from an archive instead of empty.
  • Logs and metrics — Each app's output goes to its own file. The host serves a Prometheus page built from the same state it reports.

Quick start

You need a Linux x86_64 machine with /dev/kvm (bare metal, or a VPS with nested virtualisation), running Debian or Ubuntu with systemd. As root:

curl -fsSL https://raw.githubusercontent.com/ilbertt/nibrunner/main/deploy/install.sh | sh

This installs the required packages and the release, verified against its published digests, and sets up the host from /etc/nibrunner/config.toml. If the file does not exist, it writes one: volumes as files on the local disk, plain HTTP on port 80, no object store. Nothing is started yet. Edit the file if you want, then:

nibrunnerd start

Then put a binary in the artifact store and write /var/lib/nibrunner/desired.json, the file nibrunnerd watches. The daemon boots the app, checks its health, and routes its hostname to it: deploy an app.

About

MicroVM orchestrator for your VPS with built-in sleep/wake policies, backups, snapshots, HTTPS, custom image, logs and metrics

Topics

Resources

Contributing

Stars

35 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages