Deploy your code in minutes (no Dockerfile or YAML required). One-click Postgres databases. Minimal lock-in thanks to unique ejectable architecture.
Lucity is a self-hosted PaaS that deploys your apps to Kubernetes from a GitHub repo. It gives you the developer experience of Railway or Heroku with the control of owning your infrastructure. When you're ready to move on, lucity eject gives you standard Helm charts and ArgoCD configs — zero lock-in, zero vendor dependency.
Deploy in 60 seconds — watch the full demo
- No lock-in.
lucity ejectproduces real Helm charts and ArgoCD configs — the actual infrastructure-as-code, not a proprietary dump. Try asking Railway for that. - No database. The platform is stateless. All state lives in Kubernetes and your OCI registry. If Lucity goes down, your workloads keep running.
- No magic. Built on Kubernetes, Helm, Gateway API, and CloudNativePG. Standard
kubectlworks for everything. Nothing proprietary under the hood. - No compromise. Swiss-engineered, self-hostable anywhere, AGPL-licensed. Or let us host it in Switzerland.
Deploy
- Git push to deploy from any GitHub repo
- Auto-detect language, framework, and port
- Async builds with real-time log streaming
- Rolling deployments with rollback
Environments
- Development, staging, and production out of the box
- Ephemeral PR preview environments
- Promote between environments without rebuilding
Infrastructure
- PostgreSQL databases via CloudNativePG
- Redis instances
- Cron jobs
- Custom domains with DNS verification
Operations
- Environment variables — shared, per-service, database refs
- Database explorer with query execution
- Deploy and service log streaming
- Full GraphQL API
Ejectability
-
lucity ejectexports your Helm charts and ArgoCD configs - Ejected output is fully self-contained — zero Lucity dependencies
- Standard tools all the way down: Helm, ArgoCD, Gateway API, CloudNativePG
flowchart LR
GH["GitHub Repo"]
CO["Conductor"]
BK["BuildKit"]
ZO["OCI Registry"]
K8["Kubernetes"]
UI["Dashboard"]
CA["Cashier"]
GH -- "webhook" --> CO
UI -- "GraphQL" --> CO
CO -- "build (LLB)" --> BK
BK -- "push image" --> ZO
CO -- "helm upgrade" --> K8
ZO -. "pull" .-> K8
CO -- "gRPC (billing)" --> CA
The platform is stateless — no central database. All state lives in Kubernetes (namespaces, labels, Helm release state) and the OCI registry (Zot). Your source repo is read-only to the platform; deployments are applied as standard Helm releases, never written back to your repo. If the platform goes down, your workloads keep running.
Every Lucity concept maps to standard Kubernetes and Helm primitives — no proprietary abstractions.
| Concept | Source of Truth | Kubernetes |
|---|---|---|
| Project | Namespace labels | Namespaces via lucity.dev/project label |
| Environment | Helm release values | Namespace + Deployments |
| Service | lucity-app values (services.{name}) |
Deployment + ClusterIP Service |
| Database | lucity-app values (databases.postgres.{name}) |
CloudNativePG Cluster + Secret |
| Build | OCI image in Zot registry | Tagged with commit SHA |
| Deployment | Helm release revision | helm upgrade → rolling update |
| Promotion | Image digest copied between env values | Same digest, no rebuild |
| Domain | services.{name}.domains[] |
Gateway API HTTPRoute |
| Cron Job | cronJobs.{name} in env values |
CronJob |
| Variables | Helm values (shared, per-service, DB refs) | ConfigMap, pod env, CNPG Secret |
See Concepts in the docs for the full breakdown.
Install with Helm:
helm install lucity oci://ghcr.io/zeitlos/lucity/charts/lucity \
--namespace lucity-system --create-namespaceFor local development, see the Contributing guide.
| Component | Technology |
|---|---|
| Runtime | Kubernetes |
| Builds | railpack + BuildKit |
| Deployments | Helm (imperative releases) |
| Networking | Gateway API (Envoy) |
| Databases | CloudNativePG |
| Registry | Zot (OCI) |
| API | GraphQL (gqlgen) + gRPC |
| Dashboard | Vue 3 + Vite |
| Language | Go 1.26 |
Full documentation at lucity.cloud.
- Concepts — projects, services, environments
- Architecture — how the pieces fit together
- Ejectability — what you get when you leave
Don't want to run Kubernetes yourself? Lucity Cloud is a managed version of everything above — same open-source platform, zero infrastructure to maintain.
Join the waitlist — or just self-host. We're cool either way.
Lucity is made by zeitlos.software, a Swiss software company. If you're looking to adopt Kubernetes and want help beyond what a PaaS provides, we do that too.
We welcome contributions! See CONTRIBUTING.md for development setup, architecture overview, and how to get started.