pi@piper
the paas that runs on hardware you own

Deploy to your own box
with one git push.

Open-source, developer-first, zero-trust. Piper turns any box you own into a real deploy target with a public HTTPS URL — a cloud VM, an old laptop, a home server, even a Raspberry Pi behind CGNAT — without exposing your network to anyone, including the relay.

$curl -fsSL https://get.piperbox.dev/install.sh | sh
why piper

Self-hosting without the tradeoffs

Zero-trust relay

The relay only ever sees ciphertext — L4 SNI passthrough, TLS terminates on your box. Route through a relay you don’t own, safely.

Lean by design

SQLite for state, embedded Caddy for TLS, one lightweight daemon. No Kubernetes, no sprawl — light enough to run on a Pi, happy on anything bigger.

Developer-first

A scriptable CLI and a full-screen TUI, Dockerfile-based builds, and git-push deploys. On the box itself, no login needed.

the relay

Public traffic, private network

TLS terminates on your box; the relay splices ciphertext by SNI over an outbound tunnel — so it works behind CGNAT and never sees plaintext.

visitor opens https://app.you.dev
TLS handshake starts — destination is your box, not the relay
relay reads the SNI and splices bytes
L4 passthrough — it never holds a key, never sees plaintext
an outbound tunnel carries it home
your box dialled out — works behind CGNAT, no ports opened
TLS terminates on your box
Caddy holds the cert; Docker serves the app
how it works

Three commands to a live URL

step 01
$ curl -fsSL …/install.sh | sh

Installs on a real upgrade channel — apt on Debian/Ubuntu/Raspberry Pi OS, Homebrew on macOS. Verified binaries either way.

step 02
$ piper login

GitHub sign-in, and it claims this box on the public relay. piperd applies the enrollment itself — no sudo, no restart.

step 03
$ piper deploy blog --path .

Builds the Dockerfile, health-checks it, and serves it at https://<hash>-<you>.public.getpiper.dev — no port forwarding, no domain required.

Every push builds your Dockerfile, health-checks it, and serves it at your domain.