Chronoverse ships Docker Compose topologies and Kubernetes Kustomize overlays.
Development
compose.dev.yaml builds local images and exposes infrastructure, API,
dashboard, gRPC, and OTLP ports for debugging. Grafana is private by default;
compose.grafana.yaml provides an opt-in loopback-only UI binding.
Production
compose.prod.yaml uses GHCR application images, keeps services on internal
networks, applies resource constraints, runs replicated worker groups, and
publishes only Nginx. Grafana remains internal unless the loopback override or
a Kubernetes port-forward is used.
infra/k8s/overlays/local provides a self-contained single-node Kubernetes profile for validation. infra/k8s/overlays/production provides the self-hosted Kubernetes deployment shape with in-cluster PostgreSQL, Redis, Kafka, ClickHouse, Meilisearch, runtime-agent, services, workers, dynamic PVCs, and HPAs.
Startup phases
- Bootstrap trustGenerate the local CA, service certificates, client certificates, Kafka stores, and Ed25519 keys.
- Start infrastructureBring PostgreSQL, ClickHouse, Redis, Meilisearch, Kafka, LGTM, Docker proxy, and runtime-agent to healthy state.
- Prepare schemasCreate Kafka topics and run PostgreSQL, ClickHouse, and Meilisearch migrations.
- Start applicationBring up gRPC services, workers, the HTTP server, dashboard, and production Nginx.
Deployment boundary
Compose remains the quickest full-stack path. Kubernetes support is provided through Kustomize and scripts/k8s/setup.sh; production operators own storage class selection, secret lifecycle, ingress hostnames, and Docker-capable runtime nodes.
