Skip to content

Self-hosting

A self-hosted Loco installation puts platform operation under your team's control. The repository contains the platform components and Helm charts; production operation requires instance-specific configuration.

Start by running the local development environment to exercise the components together:

mise run setup
mise run tilt

The local environment is a development installation. Review the repository's environment configuration before adapting it to a production cluster.

Platform components

Component Repository location Responsibility
API api/ ConnectRPC services and PostgreSQL state
Dashboard web/ Browser access to the API
Regional agent agent/ Connect the region to the control plane
Application controller controller/ Reconcile Application custom resources
Custom resource definitions k8sapi/ Kubernetes API types
Platform charts charts/ Kubernetes platform configuration
Regional observability proxy observability-proxy/ Access to regional observability

Installation inputs

Configure the API's database, cache, authentication, registry, and API/dashboard endpoints using the repository's environment template. Check the template and deployed release together; authentication and registry changes are under active review.

The cluster needs Cilium, Envoy Gateway, cert-manager, and the Loco controller. Observability uses OpenTelemetry, ClickHouse, and Grafana. The charts and environment values define their configuration.

Your team supplies DNS records, certificate issuance, persistent storage, backups, and capacity. Keep credentials separate across installations and environments. Use architecture to identify the control-plane and regional boundaries.

Upgrades

Use images and charts from a consistent release. Regenerate CRDs through mise run controller:gen when developing schema changes. Review database migrations and infrastructure changes before upgrading a running installation.

A supported production packaging and upgrade procedure is not established by these docs. Inspect the chart values and the release's configuration before deployment.