Branch-based deployment platform
  • Rust 73.9%
  • Nix 26.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Ryan Li bb6122e662
Some checks failed
kennel/build build succeeded
kennel/deploy deployment healthy
CI / build (push) Successful in 3m24s
CI / check-1 (push) Failing after 28m36s
CI / check (push) Failing after 0s
fix: allow owner permissions to create schemas on databases as they are made (#27)
GRANT CREATE ON DATABASE is issued unconditionally so the explicit ACL entry exists; ownership-based implicit CREATE is not inherited through role membership in PostgreSQL, so without this the system user cannot run CREATE SCHEMA outside public.

Fix inspired as CMUGPT needs CREATE SCHEMA perms

Reviewed-on: #27
2026-09-08 19:17:26 +00:00
.forgejo fix: stop cargo home from changing the rust-cache key 2026-08-09 21:37:53 -04:00
crates fix: allow owner permissions to create schemas on databases as they are made (#27) 2026-09-08 19:17:26 +00:00
nix fix: stop cargo home from changing the rust-cache key 2026-08-09 21:37:53 -04:00
sites/docs fix: make sure action clone gets a platform 2026-08-08 01:47:49 -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 flake 2026-08-10 11:49:53 -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 flake 2026-08-10 11:49:53 -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.