Delta Deployments
Deploy only the services that changed. Diverge analyzes commit diffs to pinpoint impacted services and shares baseline dependencies for everything else.
Delta Deployments
Deploy only the services that changed. Diverge analyzes commit diffs to pinpoint impacted services and shares baseline dependencies for everything else.
Scale-to-Zero
Idle PR previews run as Knative services that scale to zero replicas. The Activator proxy seamlessly buffers incoming requests during cold starts.
Header-Based Routing
Route traffic to your preview environment with a single HTTP header. Works natively with Istio, Envoy, Gateway API, and ConnectRPC.
Atlas Schema Management
Automate database migrations and declarative schema isolation for each preview environment with Ariga Atlas via standalone K8s Jobs or Atlas Operator.
PreviewGroups
Manage all changed services, custom routes, and database schemas for an MR as a single atomic, declarative Kubernetes resource.
Automatic Lifecycle
Environments provision automatically on MR creation and tear down cleanly on merge. Hard TTL expiry eliminates zombie environments and cloud waste.
Local Hot-Reload
Iterate on live cluster traffic from your laptop without rebuilding containers. Tailscale loopback proxy connects your local port directly to cluster mesh.
Security-Hardened Architecture
RFC 7230 header validation, non-root execution, read-only root filesystems, dropped capabilities, and constant-time secret evaluation.
Pluggable Provider Registry
Extensible provider interface for routing (Istio, Gateway API), deployers (Argo CD, Direct), and databases (Postgres, Atlas, AlloyDB).
# diverge.yaml — add to your repository rootversion: "1"
services: api: paths: ["services/api/**"] image: repository: registry.example.com/api tag_template: "mr-{{.MR}}" helm: path: charts/api web: paths: ["apps/web/**"] image: repository: registry.example.com/web tag_template: "mr-{{.MR}}" helm: path: charts/web
defaults: deploy: mode: delta # Only deploy services with code changes routing: mode: header # Route via x-diverge-env header baseline_namespace: staging banner: enabled: true # Injects preview banner in browser responses database: mode: schema # Ephemeral schema isolation atlas: mode: versioned # Runs Atlas migration job on PR open engine: job migration_config_map: app-migrations lifecycle: ttl: 72h cleanup_on_merge: truediverge dev hot-reloads local processes directly into remote cluster routing