Skip to content

Deployment models

These docs assume a gateway is already deployed. This page explains the shapes it can take, for context when you operate it.

  • Fully self‑hosted — you run the control plane, data planes, database, and cache entirely within your boundary. Nothing leaves your infrastructure.
  • Hybrid — the data plane (and private‑route context) runs in your environment, close to your private upstreams, while sharing a control surface. environment_id is the gateway execution boundary in both cases.

A self‑hosted gateway starts with one configured tenant and a default environment (commonly tenant_local / prod).

LayerDefault
Control plane & data planeRust
PolicyCedar
Durable truth & audit metadataPostgreSQL
Hot session / cache stateValkey
EventingPostgreSQL outbox / internal queue
ObservabilityOpenTelemetry (customer‑controlled)
Packaging & supply chainKubernetes + Helm + Cosign + SBOM
CLI & diagnosticsGo (gatewayctl)

A fresh self‑hosted deployment is initialized with the CLI:

Terminal window
gatewayctl bootstrap-self-hosted --help
gatewayctl bootstrap-admin --email you@example.com

Then verify health with Check deployment status.

Type set in Geist, Source Serif 4, and Departure Mono.