Home server manager · open source
Your home server,
declared, not administered.
Daedalus runs the box it lives on — declares its apps, ships their deploys, watches their disks, databases and mail. Every change is a git commit; NixOS rebuilds the machine to match.
NixOS · rootless podman · CI on the box · nothing leaves the house
The apply flow
Every change is a commit.
Nothing reaches into the running system. A change in the UI becomes a contract, a commit and a rebuild — or it becomes nothing at all.
Change
Flip a setting in the UI. The database is the working copy.
Export
The registry renders to a committed JSON contract.
Rebuild
NixOS converges the whole machine to the new declaration.
Verify
A failed rebuild reverts itself. The bad state never lands.
Push
The commit names who changed what, and why. Forever.
What it does
One app runs the box.
Deploys, monitoring, isolation, recovery — each one a view in daedalus, each one backed by the same declared truth.
deploys
Push to main. Live in minutes.
Apps build on the box's own CI runners, land in its own registry, and deploy the moment the digest moves. No cloud in the loop — the pipeline never leaves the house.
monitoring
Honest by construction.
Every panel distinguishes “no” from “couldn't ask”. A dead probe renders as unknown, never as healthy; a stale snapshot is treated as absent, never served as current.
isolation
Zero host privilege.
Daedalus runs in a rootless container and talks to the machine through file-drop bridges watched by systemd. It can't rebuild, restart or read anything the host didn't explicitly hand it.
recovery
Lose the box, keep the system.
Every container, route, dashboard and alert is declared in the repo; secrets ride sops-encrypted in-tree. A fresh checkout plus one key rebuilds the exact machine.
The repo is the system.
Runtime state is never the source of truth. The flake pins every input, sops encrypts every secret in-tree, and the one hand-written registry entry is the app itself — because an Apply that broke it would take down the interface you'd use to undo it.
Honest pre-release framing: one operator, one box, in production every day.
Follow the thread.
Read the code, steal the patterns, or run the whole thing.
git clone https://github.com/santiagotoscanini/daedalus