← All playbooks
PLAYBOOKApplications & Infrastructure2 min read

Replace Supabase with a Better Solution for Vibers and Engineers

For builders who love the Supabase DX but not its ceiling — vibe-coders and engineers alike.

Who this is for: anyone who reached for Supabase because the developer experience is fantastic — and then met the ceiling.

Supabase is Postgres plus auth plus object storage plus realtime, assembled and hosted for you. The DX is genuinely great. What isn't great is the ceiling: opaque plan limits, egress you discover on an invoice, and a hosted service you can't take with you. Kilter gives you the same primitives as first-class, owned Kubernetes services — so the good part stays and the ceiling goes.

The recipe

  1. Scaffold. kilter init app.
  2. Compose the Supabase-shaped substrate in kilter.yaml: postgres (with Row-Level Security), ory (auth + JWT), garage (S3-compatible object storage), plus typesense for search and temporal for anything that outgrows a cron.
  3. Port your policies as-is. The RLS policies you already wrote move over unchanged — it's the same Postgres.
  4. Run the whole thing local. kilter up — identical images to prod, so there's no "works in the sandbox, breaks on the host" seam.
  5. Ship. kilter deploy — production, Org Only by default (Pangolin + OIDC), so your app isn't exposed to the world while you're still building.
  6. Go live to real users. Hit Promote to open external access and grant production data access through the promotion workflow.
~/app — zsh
$ kilter init app
$ kilter up
$ kilter deploy # Org Only until you Promote

Same experience, sovereign — and everything it provisions is standard open source, so kilter eject is always there. Want the engineer's deep-dive on composing and shaping these primitives? See How to Build a Better Sovereign Supabase.