End State
At the end of this guide you will have:- a
cake-agentsHelm release deployed to your cluster - a reachable control plane UI/API
- a database connection (embedded Postgres for development or an external database)
- session pods launching successfully in the expected namespace
Architecture Summary

- The control plane is a web application deployed as a standard Kubernetes workload.
- Each user session launches a data plane pod that runs OpenCode inside the cluster.
Prerequisites
- A working Kubernetes cluster
kubectlconfigured for the target clusterhelm3+- A DNS name for the control plane
- An ingress controller or API gateway configured to route traffic to the control plane (e.g. Istio, Nginx, ALB, etc.)
- Kubernetes secrets or secret-management flow for integration credentials
- Optionally, a preexisting Postgres database
What the Helm Chart Configures
The Helm install configures these main concerns:- Control plane deployment, service account, probes, and service
- RBAC for creating and managing session workloads
- Embedded PostgreSQL for development, or an external database via
externalDatabase.existingSecret - Secret wiring for integrations and auth
Set up DNS
Cake Agent’s control plane needs to be reachable at a stable DNS name. This is used for user linking flows and should match thecontrolPlane.host
value in the Helm chart.
Choose a Database Strategy
For development, the chart defaults to embedded PostgreSQL. For shared or production-like environments, use an external database and provide a secret instead:Set up an auth client
Cake Agents uses OIDC for authentication. You can use any compliant provider, or delegate auth to an authenticating proxy via trusted headers. In your OIDC provider, create a new client with these settings:- Client type: Confidential or Public (with PKCE)
- Redirect URI:
https://<controlPlane.host>/api/auth/callback/oidc - Scopes:
openid email profile
Minimal Values File
Start from a small values file and expand from there:Install with Helm
If manually installing, you’ll need to first assume an identity in your AWS account that has permissions to pull the control plane. Then, you can log into ECR and use that to authenticate helm to Cake’s private registry. For example:Optional: S3 object storage
The control plane can optionally use an S3-compatible bucket for object storage. This is disabled by default; enable it when a feature you use requires durable object storage. Set thes3.* values to bootstrap the connection:
- An IAM role attached to the control plane service account (IRSA on EKS, Workload Identity on GKE)
- Standard
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEYenv vars supplied viacontrolPlane.deployment.extraEnv
s3.region or s3.endpoint are unset, the control plane also accepts the standard AWS_REGION and AWS_ENDPOINT_URL_S3 env vars.
Optional: Session pod resources
Each session runs in its own data plane pod. By default, the control plane requests640Mi of memory for every new session container so the Kubernetes scheduler places sessions on nodes with enough headroom.
Set dataPlane.resources to change this. The value accepts a full Kubernetes resource requirements block, so you can set both requests and limits: