Riku

Git-push deployments on a single small box: one Rust binary, no Docker required.

RustsystemdnginxLandlock
View source on GitHub

Riku is a Rust reimplementation of the Piku micro-PaaS. It gives you a Heroku-style git-push workflow on hardware you already own — a VPS, an old laptop, a Raspberry Pi — with no control plane, no cluster, and no container runtime to babysit.

Install on your server

curl -LO https://github.com/dreygur/riku/releases/latest/download/riku-linux-amd64.tar.gz
tar -xzf riku-linux-amd64.tar.gz && sudo ./riku init

The problem

Deploying a small application to a single machine has become disproportionately complicated. The mainstream answer is a container runtime, an orchestrator, and a control plane — infrastructure whose operational cost is justified at scale and absurd on one box.

Piku solved this years ago with a git-push workflow and a handful of shell and Python scripts. Riku keeps that workflow and directory layout, and replaces the runtime with a single static binary that has no runtime dependencies of its own.

How a deploy works

You add the server as a git remote and push. Riku detects the language, builds the app, runs it under its own supervisor, and wires up nginx. There is no separate build step to configure and no manifest to write.

New processes are health-gated before old ones are retired, so deploys are zero-downtime by default rather than by configuration. `riku rollback` reverts, and `riku backup` / `riku restore` handle state.

Supervisor and runtimes

The process supervisor is written in Rust rather than delegating to uWSGI's Emperor mode, and handles health checks, restarts, scaling, and cron.

Language support ships as installable runtime plugins — Python, Node, Ruby, Go, Rust, Java, Clojure, and containers — so adding a language does not mean recompiling Riku.

Datastores attach the same way: `riku addon` provisions Postgres, Redis, or a SQLite volume and injects the connection string into the app's environment.

Plugins and sandboxing

The plugin system uses a versioned protocol with a git-native marketplace and signed bundles. Installed plugins run under Landlock capability sandboxing rather than with the daemon's full privileges.

The router is swappable on the same mechanism — nginx by default, with Caddy or Traefik available as a router plugin without touching core.

Footprint

Requirements are one CPU core, 256 MB of RAM, and roughly 50 MB of disk for Riku itself. Base footprint before deploying anything is about 30–60 MB, covering the supervisor, the binary, and nginx.

Rather than publish a benchmark number and ask you to trust it, the repository ships measurement scripts in `benches/` so you can get figures for your own hardware.

Operational tooling

`riku dashboard` serves a status UI directly from the binary — no Node runtime on the host to keep patched.

`riku doctor` diagnoses nginx, systemd, permissions, disk, and certificates when a deploy misbehaves, which is the failure mode that costs the most time on a self-hosted box.

All projects