Open-source PaaS on Kubernetes. Deploy like Railway. Eject to standard Helm & ArgoCD when you're ready.
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 Git, Kubernetes, and your OCI registry. If Lucity goes down, your workloads keep running.
- No magic. Built on Kubernetes, Helm, ArgoCD, 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"]
WH["Webhook"]
GW["Gateway"]
BU["Builder"]
PA["Packager"]
DE["Deployer"]
ZO["OCI Registry"]
SS["Git Server"]
AR["ArgoCD"]
K8["Kubernetes"]
UI["Dashboard"]
GH -- "webhook" --> WH
WH --> GW
UI -- "GraphQL" --> GW
GW -- "gRPC" --> BU
GW -- "gRPC" --> PA
GW -- "gRPC" --> DE
BU -- "push image" --> ZO
PA -- "commit values" --> SS
DE -- "sync" --> AR
AR -- "deploy" --> K8
ZO -. "pull" .-> K8
SS -. "watch" .-> AR
The platform is stateless — no central database. All state lives in Git (Soft-serve), Kubernetes, and the OCI registry (Zot). Your source repo is read-only to the platform; all managed configuration lives in a separate GitOps repo. If the platform goes down, your workloads keep running.
Every Lucity concept maps to standard Kubernetes and GitOps primitives — no proprietary abstractions.
| Concept | Source of Truth | Kubernetes |
|---|---|---|
| Project | GitOps repo on Soft-serve | Namespaces via lucity.dev/project label |
| Environment | environments/{env}/values.yaml |
Namespace + ArgoCD Application |
| Service | base/values.yaml → services.{name} |
Deployment + ClusterIP Service |
| Database | base/values.yaml → databases.postgres.{name} |
CloudNativePG Cluster + Secret |
| Build | OCI image in Zot registry | Tagged with commit SHA |
| Deployment | Git commit in GitOps repo | ArgoCD sync → rolling update |
| Promotion | Image tag 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 |
| GitOps | ArgoCD + Helm |
| Networking | Gateway API (Envoy) |
| Databases | CloudNativePG |
| Registry | Zot (OCI) |
| Git Server | Soft-serve |
| 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.