Skip to main content
The control plane validates its environment at startup with a strict schema. An invalid or missing required value stops the process immediately rather than failing later at runtime. In Kubernetes, most of these are set by the chart. You normally only manage the secret values.

Required

string
required
PostgreSQL connection string. Also checked by /api/health.
string
required
Signs session cookies. Minimum 32 characters. Changing it invalidates all active sessions.
string
required
AES-256-GCM key protecting provider API keys, custom headers, MCP headers, and OIDC client secrets. Minimum 32 characters.
Changing this value does not re-encrypt existing data. Every stored credential becomes unreadable. Treat it as part of your backup set, not as a rotatable key.

General

string
default:"http://localhost:3000"
The external URL of the installation. Must be a valid URL. The chart sets this from publicUrl. A mismatch with the browser’s address breaks cookies and auth redirects.
string
Optional one-time token required to create the first administrator. Minimum 16 characters when set. Once setup completes, the value is no longer consulted.

Outbound request guard

The control plane makes outbound requests to model providers, MCP servers, and OIDC issuers. Every destination passes through a guard that blocks credential-bearing URLs, unsafe redirects, and internal network addresses.
'true' | 'false'
default:"false"
Allow requests to private, loopback, and link-local addresses. Required to reach a model server inside your own network. Enabling this makes SSRF against cluster-internal services possible.
'true' | 'false'
default:"false"
Allow plain http:// destinations. Credentials would travel unencrypted, so restrict this to trusted private networks.
Metadata endpoints such as 169.254.169.254 are a standard cloud credential theft target. Leave both flags at false unless you have a specific need and compensating network policy.

Workspace controller

'kubernetes' | 'local' | 'disabled'
default:"local"
How workspaces are provisioned. The chart always sets kubernetes. Use local for development and disabled to turn off workspace features entirely.
string
default:"r5d-chat"
Namespace where workspace objects are created. The chart sets this to the release namespace.
string
Control-plane URL reachable from workspace pods. Defaults to BASE_URL outside Helm. The chart sets the release’s internal Kubernetes Service URL, independently of the public browser/OIDC origin. Override with workspace.controlPlaneUrl when needed; a custom endpoint needs its own matching egress policy. Workspace policies always permit DNS and this release’s control-plane pods on TCP 3000, including when Internet access is off.
string
default:"ghcr.io/ricsam/r5d-chat-workspace:latest"
Image used for new and reconciled workspace pods.
string
Pull secret attached to workspace pods. Needed for private images.
string
default:"rook-ceph-block"
Storage class for per-user home PVCs.
string
default:"5Gi"
Size requested for each new home PVC. Applies only at creation time.
string
Optional RuntimeClass, such as kata or gvisor, for a stronger isolation boundary.
integer
default:"1800"
Idle seconds before a workspace with no active leases scales to zero. A reconciler evaluates this every 60 seconds.
string
default:"200m"
CPU request for workspace pods.
string
default:"512Mi"
Memory request for workspace pods.
string
default:"2"
CPU limit for workspace pods.
string
default:"2Gi"
Memory limit for workspace pods. Raise it if agents run builds or process large datasets; the kernel OOM-kills the container when it is exceeded.

Local workspace mode

string
default:"http://127.0.0.1:7337"
Address of the local daemon. Only used when WORKSPACE_MODE=local.
string
default:"development-only-token"
Bearer token for the local daemon. Only used when WORKSPACE_MODE=local.

Artifact storage

string
default:"./data/artifacts"
Control-plane directory for remote artifact blobs. In Kubernetes the chart sets this to /var/lib/r5d-chat/artifacts on the dedicated retained artifact PVC. Do not point it at a workspace home directory.
integer
default:"50000000"
Maximum artifact upload size in bytes, enforced by both browser and internal workspace artifact endpoints.

MCP Apps sandbox

string
Optional HTTPS origin template with exactly one {server} placeholder in its first DNS label, on a separate registrable domain from BASE_URL. The chart sets it from mcpApps.sandboxOrigin; empty leaves interactive apps disabled. HTTP is accepted only for loopback development origins.
The control plane and separate sandbox listener must share BASE_URL, MCP_APPS_SANDBOX_ORIGIN, and SETTINGS_ENCRYPTION_KEY. Origin validation happens when the sandbox configuration is used, not in the general startup schema. See MCP Apps for domain, routing, and verification steps.
string
default:"0.0.0.0"
Bind address for the standalone sandbox listener, not the control plane.
integer
default:"3002"
Port for the standalone sandbox listener (1–65535). The chart’s Service and probes use 3002; do not override it without updating those resources.

Optional integrations

string
Base URL of an Agentic Web Research service. The web_search, web_read, and web_research tools appear only when this and AWR_API_KEY are both set.
string
API key for the web research service. Treat it as a secret.
boolean
default:"false"
Allows the configured AWR base URL to resolve to an in-cluster/private address. Enable only for a trusted operator-managed service; page URLs remain protected by AWR’s own private-network guard.

Enable web research

How the integration works and what it exposes.

Variables inside a workspace pod

The controller sets these on each workspace container. They are listed for debugging; you do not configure them directly. ARTIFACT_SCOPE is not a static pod variable. The control plane derives project/<id> or chat/<id> from the active conversation and passes it only in the shell process start request. The daemon injects it into that child process; the artifact API independently verifies the workspace user’s access.