Docker-free · single-node · one binary
Your box.
One binary.
No Docker.
Denia runs your services on its own Linux runtime: namespaces and cgroup v2, in-process ingress and TLS, autoscaling, and a registry. One Rust binary, on one machine you own.
$ curl --proto '=https' --tlsv1.2 -fsSL https://raw.githubusercontent.com/zainokta/denia/main/get.sh | shPrebuilt, signed binary. Verifies a pinned minisign signature before it runs.
Collapse the stack.
Most self-hosted PaaS tools are a thin layer over Docker. You still run a daemon, a reverse proxy, a cert companion, and a registry, then wire them together.
The usual stack
- Docker daemon
- Reverse proxy (nginx / Traefik)
- Cert companion (certbot)
- External registry
- Glue, config, and cron
Denia
One Rust binary + systemd
- ·runtime isolation
- ·L7 ingress
- ·ACME TLS
- ·autoscaler
- ·OCI registry
- ·web console
What the one binary does.
No container runtime.
Workloads run under unshare (user, pid, mount, uts, ipc), cgroup v2, no_new_privs, and a dropped capability set. Each replica gets a private overlay rootfs.
Its own ingress and TLS.
An in-process Pingora proxy binds :80 and :443 and dials each workload over a Unix socket. Per-SNI certificates issue and renew over ACME. No Traefik, no certbot.
Autoscaling, down to zero.
Per-service CPU and memory scaling with a single-flight cold start, bounded by a host resource ledger so the node is never over-committed.
Ship from your machine.
denia push packs your working tree and the node builds the Dockerfile. No local Docker, no git remote, no pre-deploy commit.
Registry and live console.
A same-origin OCI registry at /v2, and a kubectl-exec-style shell into a running replica over a single-use ticket.
What Denia is not.
v1 is deliberately scoped. Candor up front, so you do not find out the hard way.
Not multi-node.
One node by design. The control plane and node agent are split internally for a future multi-node story, but it is not here yet.
Not a managed plane.
You run the binary on your own machine. No hosted control plane, no vendor in the path.
Not an untrusted sandbox.
Treat a daemon RCE as host root, the same class as dockerd or kubelet. Run untrusted workloads on their own host.