home lab orchestration

Infrastructure, done right.

Celilo takes your home lab from a pile of machines and domain names to a fully-orchestrated, reproducible infrastructure — with one CLI and a library of battle-tested modules.

celilo — zsh

celilo module import caddy

✓ Downloading caddy 2.8.4+1 from celilo.computer...

→ Running on_install hook

→ firewall.exposeService (ports 80, 443)

✓ firewall.exposeService → 203.0.113.42

→ dns_registrar.registerHost (www → 203.0.113.42)

✓ dns_registrar.registerHost

✓ caddy installed — https://www.example.com

Everything you need to run a home lab.

Modules for networking, identity, DNS, web hosting, and more — all wired together automatically.

🔌

Capability system

Modules declare what they provide and what they need. Celilo wires them together automatically — no YAML templating, no hardcoded IPs.

📦

Module registry

Install modules with one command. Each module bundles Terraform, Ansible, and TypeScript hooks into a single .netapp file.

🔒

Secrets first

Secrets are encrypted at rest and injected at runtime. Modules never touch plaintext credentials — they receive typed, validated values.

🛡️

Reproducible deploys

Every module generates complete Terraform and Ansible projects. Destroy and rebuild your infrastructure from source at any time.

🌐

Automatic HTTPS

Caddy handles TLS termination. Add a module, get a domain. DNS is updated, certificates are provisioned — all in one step.

🐕

Dogfooded

This website is a Celilo module. The registry that hosts these modules is a Celilo module. We eat our own cooking.