Skip to content

zeitlos/lucity

Lucity

The PaaS you can leave.

Deploy your code in minutes (no Dockerfile or YAML required). One-click Postgres databases. Minimal lock-in thanks to unique ejectable architecture.

CI License Go 1.26


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.

Lucity demo — deploy in 60 seconds
Deploy in 60 seconds — watch the full demo

Why Lucity?

  • No lock-in. lucity eject produces 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 kubectl works for everything. Nothing proprietary under the hood.
  • No compromise. Swiss-engineered, self-hostable anywhere, AGPL-licensed. Or let us host it in Switzerland.

Features

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 eject exports 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

Architecture

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
Loading

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.

Concepts

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.

Quick Start

Install with Helm:

helm install lucity oci://ghcr.io/zeitlos/lucity/charts/lucity \
  --namespace lucity-system --create-namespace

For local development, see the Contributing guide.

Tech Stack

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

Documentation

Full documentation at lucity.cloud.

Lucity Cloud

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.

Built by zeitlos

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.

Contributing

We welcome contributions! See CONTRIBUTING.md for development setup, architecture overview, and how to get started.

License

AGPL-3.0

About

Deploy your code in minutes (no Dockerfile or YAML required). One-click Postgres databases. Minimal lock-in thanks to unique ejectable architecture.

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors