Branch-based deployment platform
  • Rust 74%
  • Nix 26%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Anish Pallati 577e99c9ff
chore: update flakes
Signed-off-by: Anish Pallati <i@anish.land>
2026-09-26 02:02:08 -04:00
.forgejo fix: stop cargo home from changing the rust-cache key 2026-08-09 21:37:53 -04:00
crates fix: grant owner and label logs for loki properly 2026-09-26 02:00:59 -04:00
nix fix: add postgres and redis services to after 2026-09-22 17:15:01 -04:00
sites/docs docs: move new features over from governance README 2026-09-22 16:36:04 -04:00
.gitattributes docs: add README and mark generated entity sources 2026-07-16 02:48:30 -04:00
.gitignore docs: update for governance feature changes 2026-07-20 22:23:56 -04:00
Cargo.lock chore: bump secretspec version 2026-08-10 13:37:25 -04:00
Cargo.toml feat: scaffold v2 crate structure 2026-04-13 18:29:44 -04:00
devenv.lock chore: update flakes 2026-09-26 02:02:08 -04:00
devenv.nix refactor: migrate devenv repo into kennel 2026-07-24 16:00:35 -04:00
devenv.yaml feat: update docs with new ci workflow 2026-08-08 01:35:45 -04:00
flake.lock chore: update flakes 2026-09-26 02:02:08 -04:00
flake.nix feat: update docs with new ci workflow 2026-08-08 01:35:45 -04:00
LICENSE feat: scaffold frontend from RFC 0002 2026-02-24 13:51:18 -05:00
osv-scanner.toml fix: make security scans pass 2026-08-09 20:38:13 -04:00
README.md feat: tighter integration between devenv and kennel 2026-07-25 17:08:54 -04:00
secretspec.toml feat: update docs with new ci workflow 2026-08-08 01:35:45 -04:00

kennel

Kennel is the deployment platform for ScottyLabs. On every push it builds the project with Nix, runs its services as systemd units and static sites through Caddy, provisions per-deployment resources, resolves secrets from OpenBao, manages DNS through Cloudflare, and serves it over HTTPS.

Every branch and open pull request gets its own deployment at {project}-{branch}.scottylabs.net, redeployed on every push and torn down when the branch or PR closes.

A project's devenv.nix, built on the shared ScottyLabs devenv modules in this repo (nix/modules), defines its local development environment, its CI, and its production deployment. The daemon and the modules are versioned together.

Internally, kennel is a single daemon that takes git webhooks, builds, deploys, and reconciles running state against declared intent. It keeps intent and build history in SQLite and leaves runtime state to systemd, Caddy, and Nix.

Kennel can also publish the hosts of its live deployments to a file. ricochet, a stateless OAuth2 callback relay, reads that file as its allowlist, so ephemeral previews can complete logins that identity providers won't issue wildcard redirect URIs for.

Layout

  • crates/kennel: the daemon
  • crates/kennel-config: shared types and the devenv config contract
  • crates/kennel-provision: resource provisioning (PostgreSQL, Valkey, Garage)
  • crates/entity, crates/migration: SQLite schema and SeaORM entities
  • nix/modules: the shared devenv modules projects build on
  • nix/lib: Nix build helpers (mkLib)
  • nix/nixos.nix: NixOS module to run the daemon on a host
  • sites/docs: documentation (mdBook)

Adding modules, checks, or build helpers is documented in nix/README.md.

License

Licensed under the GNU Affero General Public License v3.0.