Skip to main content
Inspect the values shipped with any published version:

Images

string
default:"ghcr.io/ricsam/r5d-chat-control-plane-community"
Control-plane image repository.
string
default:"(chart appVersion)"
Control-plane image tag. When empty, the chart’s appVersion is used, so the chart version pins the image published with it.
string
default:"IfNotPresent"
Image pull policy for the control plane.
string
default:"ghcr.io/ricsam/r5d-chat-workspace"
Workspace image repository, used for every user pod the controller creates.
string
default:"(chart appVersion)"
Workspace image tag. When empty, the chart’s appVersion is used.
array
default:"[]"
Pull secrets for control-plane pods, for example [{ name: ghcr-pull }]. This does not apply to workspace pods; set workspace.imagePullSecret too.
integer
default:"1"
Control-plane replica count.
object
default:"{}"
Node selector for the control-plane pod.

Core settings

string
default:"http://r5d-chat.local"
required
The exact external URL of the installation. Used for session cookies, auth redirects, and the address workspaces use to call back into the control plane. A mismatch causes login loops.
string
default:""
Name of a pre-created Secret holding the application credentials. Strongly recommended for production. When set, the chart does not create a Secret and the secrets.* values are ignored.
string
default:""
PostgreSQL connection string. Defaults to the bundled database when empty. Only used when existingSecret is empty.
string
default:""
required
Session signing key of at least 32 characters. Required when existingSecret is empty.
string
default:""
required
AES-256-GCM key of at least 32 characters that encrypts provider and OIDC credentials. Required when existingSecret is empty. Back it up with the database; losing it makes stored credentials unreadable.
string
default:""
One-time operator token required to create the first administrator. Set it before exposing the installation publicly.

Service and ingress

string
default:"ClusterIP"
Service type for the control plane.
integer
default:"80"
Service port. It targets container port 3000.
boolean
default:"false"
Create an Ingress for the control plane.
string
default:"traefik"
Ingress class name.
string
default:"chat.example.com"
Hostname to route. Required when ingress.enabled is true, and should match the host in publicUrl.
object
default:"{}"
Additional Ingress annotations, for example certificate issuer directives.
boolean
default:"false"
Allow provider and OIDC URLs that resolve to private, loopback, or link-local addresses. Enable only for a trusted in-cluster or private-network service.
boolean
default:"false"
Allow plain HTTP provider URLs. This is normally paired with allowPrivate=true for a cluster-local Service; keep it disabled for public endpoints.

MCP Apps

string
default:""
HTTPS origin template for interactive MCP Apps. Include exactly one {server} placeholder in the first DNS label, on a separate registrable domain from publicUrl. Sets MCP_APPS_SANDBOX_ORIGIN and creates a separate sandbox Deployment and Service on port 3002. Empty disables the sandbox.
object
default:"{ cpu: 25m, memory: 64Mi }"
Resource requests for the sandbox container.
object
default:"{ cpu: 250m, memory: 256Mi }"
Resource limits for the sandbox container.
No sandbox Ingress, DNS records, or certificates are created. Follow MCP Apps for the community values example and separate wildcard routing. With networkPolicy.enabled, the sandbox policy denies all egress and permits ingress on TCP 3002, restricted by networkPolicy.controlPlaneIngressFrom when configured.

Cloudflare Tunnel

Run a Cloudflare Tunnel connector next to the control plane to publish the installation without exposing an inbound port or provisioning TLS certificates yourself. The connector dials out to Cloudflare, so it works behind NAT and strict egress firewalls. Public hostnames and origin routing are configured remotely in Cloudflare (config_src: cloudflare), not in this chart. Point the tunnel’s public hostname at the control-plane Service, for example http://<release>-r5d-chat.<namespace>.svc.cluster.local:80.
publicUrl must still match the hostname users type in the browser, for example https://chat.example.com. Cloudflare terminates TLS at its edge, so keep the https:// scheme even though the tunnel forwards to the Service over plain HTTP inside the cluster.
ingress.enabled and cloudflared.enabled are independent. Enable only the tunnel to publish exclusively through Cloudflare, or enable both to keep a direct cluster-local entry point alongside it.
boolean
default:"false"
Deploy the cloudflared connector.
string
default:"cloudflared-tunnel"
Name of an existing Secret holding the tunnel connector token. Create it separately so the credential is never stored in values files:
string
default:"token"
Key inside that Secret containing the token.
integer
default:"1"
Connector replicas. Each replica opens its own set of edge connections; use two or more to survive a node failure without dropping the tunnel.
string
default:"cloudflare/cloudflared"
Connector image repository.
string
default:"2026.2.0"
Connector image tag. Pin it, and update deliberately, because --no-autoupdate is set.
string
default:"1"
Arbitrary value copied to a pod annotation. Change it to force a connector restart, which is occasionally useful after editing remote tunnel routing.
object
Connector resource requests and limits.

Artifact storage

The control plane stores remote project/chat artifact bytes on one retained ReadWriteOnce claim mounted whole at /var/lib/r5d-chat/artifacts. It sets ARTIFACT_STORAGE_PATH to that directory. Metadata and authorization live in PostgreSQL; workspace home PVCs are not artifact storage.
string
default:"rook-ceph-block"
Storage class for the shared control-plane artifact PVC. It must support ReadWriteOnce.
string
default:"10Gi"
Requested size of the retained artifact PVC.
integer
default:"50000000"
Maximum artifact upload size in bytes.
The claim has helm.sh/resource-policy: keep. Back it up at the same recovery point as PostgreSQL and delete it only as an explicit data-purge action.

Workspaces

string
default:"rook-ceph-block"
Storage class for per-user home PVCs. Must support ReadWriteOnce.
string
default:"5Gi"
Size of each user’s home volume. This applies at creation time; growing it later affects only newly created workspaces.
integer
default:"1800"
Seconds of inactivity, with no active leases, before a workspace scales to zero.
string
default:""
Optional RuntimeClass for workspace pods. Set to kata or gvisor for a stronger isolation boundary.
string
default:""
Name of a pull secret attached to workspace pods. Required for private workspace images.
object
default:"{}"
Node selector copied into every dynamically created workspace Deployment.
object
default:"{ cpu: 200m, memory: 512Mi }"
Resource requests for workspace pods.
object
default:"{ cpu: '2', memory: 2Gi }"
Resource limits for workspace pods. Raise the memory limit if agents run builds or data processing.
object
default:"{ cpu: 50m, memory: 128Mi }"
Control-plane resource requests.
object
default:"{ cpu: 500m, memory: 512Mi }"
Control-plane resource limits.

Bundled PostgreSQL

boolean
default:"true"
Deploy the bundled single-replica PostgreSQL StatefulSet. Disable it to use an external database.
string
default:"postgres:17.6-alpine"
PostgreSQL image. Version 17 is the tested baseline.
string
default:"r5d_chat"
Database user created on first start.
string
default:"r5d_chat"
Database name created on first start.
string
default:"r5d_chat"
Database password. Override it, or supply POSTGRES_PASSWORD through existingSecret.
string
default:"rook-ceph-block"
Storage class for the database volume.
string
default:"2Gi"
Size of the database volume.
object
default:"{}"
Node selector for the bundled PostgreSQL StatefulSet. This is particularly important with node-local storage classes.
The bundled database is a single replica with no automated backups. It is suitable for evaluation and small installations. Production deployments should set postgresql.enabled: false and use a managed database.

Service account and network policy

boolean
default:"true"
Create a ServiceAccount with the Role needed to reconcile workspace objects.
string
default:""
Override the ServiceAccount name.
boolean
default:"true"
Create NetworkPolicies for the control plane and workspaces. Workspace ingress is restricted to this release’s control plane and executor on TCP 7337. Requires a NetworkPolicy-enforcing CNI; other policies can add access.
boolean
default:"true"
Allow workspace pods to reach public IPv4, excluding the configured workspaceInternetExcept ranges (RFC1918, loopback, and link-local by default). Setting false disables this internet rule, not DNS or the required callback exception to this release’s control-plane pods on TCP 3000. It prevents package downloads from the internet but does not create an air gap or a URL-path allowlist. See the workspace network boundary.

Reference values file

The chart ships values-r5d.yaml as a worked example of a hardened install with Kata isolation and private images: