Why Edge
Edge, in this template, means software that runs cheaply, is easy to operate, and can live on the edge — not a marketing label. The deployment target is bunny.net Magic Containers: pods on bare metal, gVisor-sandboxed, linux/amd64 only, CPU autoscaling, and no persistent volumes for stateless apps. One app is one pod; containers in the pod share localhost. Standard PHP runtimes, FrankenPHP included, run unmodified under gVisor's syscall subset.
One database, everywhere
libSQL — the open fork of SQLite — covers local dev, CI, and global production with a single technology. Session, cache, and queue all use the database driver on libSQL, so there are zero extra services to run or pay for. Dev points at a local sqld container; production points at a remote libSQL endpoint. Bunny Database is the managed libSQL on bunny's own fork, globally replicated and free in public preview. Turso and a self-hosted sqld image are drop-in alternatives — same Hrana protocol, same PHP client.
One hardened image
The whole product ships as one multi-stage Docker image: FrankenPHP on a Debian base, non-root (uid 1000), read-only root filesystem, no capabilities, opcache with validate_timestamps=0. One image, multiple roles: the HTTP app, the queue:work daemon, reverb:start, and schedule:work are different command:s. The HTTP app runs on CaaS (Magic Containers) or a VPS; the queue worker, Reverb, and scheduler are self-hosted always-on processes (compose / k8s / VPS), not CaaS sidecars (ADR 0009). No nginx + PHP-FPM pair to babysit, no Node in production.
The payoff
Clone, docker compose up, and you have an admin panel, an OAuth2 API, a media drive, realtime, and object storage in minutes. The same code that runs in local compose runs in production without re-architecting; only the env changes.