Skip to content

Helm Values Reference

The chart at deploy/helm/x1agent/ is the v1 install surface. This page documents every supported value, grouped to match the canonical values.yaml. The chart today targets GCP only; multi-cloud support is on the roadmap (see CLAUDE.md “Distribution target”).

KeyDefaultNotes
nameOverride""Used in resource names + labels.
baseDomainx1agent.comDerives app.<domain>, api.<domain>, *.preview.<domain>.
KeyDefaultNotes
cloud.providergcpOnly gcp is supported today.
cloud.gcp.projectId""Project the install lives in.
cloud.gcp.regionus-central1Region for GKE + cloud-managed certs.
cloud.gcp.workloadIdentityServiceAccount""GSA bound to the api SA via WI. Terraform output.
cloud.gcp.sessionWorkloadIdentityServiceAccount""GSA bound to session SAs.
cloud.gcp.artifactRegistryus-central1-docker.pkg.dev/REPLACE/x1agentAR repo path.

The chart provisions cert-manager ClusterIssuers for Let’s Encrypt (production + staging) using the DNS-01 challenge against Cloud DNS.

KeyDefaultNotes
tls.clusterIssuerx1agent-letsencryptProduction ClusterIssuer name. A <name>-staging issuer is created in parallel — flip Certificates to it during iteration to avoid Let’s Encrypt’s 5-duplicate-cert/week rate limit.
tls.email""ACME account email. Defaults to first PLATFORM_ADMIN_EMAILS entry.
KeyDefaultNotes
anthropic.providervertexvertex (Workload Identity, recommended on GCP) or api_key (direct Anthropic API).
anthropic.vertexRegionglobalVertex AI region. global recommended; pinned regions like us-east5 for data-residency.
anthropic.vertexProjectId""GCP project hosting the Anthropic publisher models. Usually same as cloud.gcp.projectId.

The installer fills repository + tag for each image at render time from cloud.gcp.artifactRegistry and the captured deploy SHA.

KeyDefaultUsed by
images.api.{repository,tag,pullPolicy}(filled), latest, Alwaysapi Deployment + migrate Job.
images.app.{repository,tag,pullPolicy}as aboveapp Deployment.
images.preview.{repository,tag,pullPolicy}as abovepreview provider Deployment.
images.agent.{repository,tag}(filled), latestsession pods.
images.sidecar.{repository,tag}as abovesession pods (sidecar container).
images.mcpOAuthProxy.{repository,tag}as aboveper-attached remote_oauth MCP.
KeyDefaultNotes
api.replicas1Stateless; multiple replicas safe.
api.resources.requests{cpu: 100m, memory: 256Mi}
api.resources.limits{cpu: 1, memory: 1Gi}
api.serviceAccountNamex1agent-apiBound to cloud.gcp.workloadIdentityServiceAccount via WI annotation.
api.port30001Container port.
api.useJetstreamPublishfalseWave 1 of the JetStream migration — opt into durable wake publish via JetStream.
api.useJetstreamConsumefalseWave 1 — inject USE_JETSTREAM_CONSUME=true into NEW session sidecars. Existing sessions stay on core until they terminate.
KeyDefaultNotes
app.replicas1
app.resources.requests{cpu: 50m, memory: 128Mi}
app.resources.limits{cpu: 500m, memory: 512Mi}
app.port4322
KeyDefaultNotes
ingress.classNamenginxThe chart’s Ingress resources reference this class. The operator helm-installs ingress-nginx separately (one-time).

externalSecrets — GSM via External Secrets Operator

Section titled “externalSecrets — GSM via External Secrets Operator”
KeyDefaultNotes
externalSecrets.refreshInterval5mHow often ESO syncs from GSM.
externalSecrets.clusterSecretStoreNamex1agent-gsmCreated by the Terraform module’s second-pass apply.
externalSecrets.bindings(18 entries — see values.yaml)List of {envName, gsmSecretName} pairs. The chart materializes these into a single Secret/x1agent-secrets that the api envFroms.

The default bindings cover JWT, internal token, Anthropic / OpenAI keys, Google OAuth, GitHub App, Slack platform credentials, Sentry DSNs, and the workspace secrets master key. See deploy/helm/x1agent/values.yaml:165-225 for the full set.

KeyDefaultNotes
config.PLATFORM_NAMEx1agentDisplay name.
config.PLATFORM_ADMIN_EMAILS""Comma-separated.
config.ALLOWED_DOMAINS""Comma-separated allow list for SSO sign-in.
config.GOOGLE_OAUTH_SCOPES""Space-separated. Default is identity-only.
config.ANTHROPIC_MODEL""Override the Claude Code SDK model. Empty = let the SDK pick.

The api’s GET /api/capabilities echoes these so the frontend can hide UI for disabled domains.

KeyDefaultNotes
providers.graphnoneToday’s only kind: surrealdb.
providers.vectornoneLocked to graph in v1 — surrealdb implements both.
providers.graphSurrealdb.image.{repository,tag,pullPolicy}(filled), latest, Always
providers.graphSurrealdb.replicas1
providers.graphSurrealdb.surrealImagesurrealdb/surrealdb:v2.3Backing datastore.
providers.graphSurrealdb.storageSize10Gi
providers.graphSurrealdb.rootPasswordx1agent-surreal-rootRotate via GSM + ESO before going live.
KeyDefaultNotes
monitoring.opentelemetry.enabledfalseRequires the OpenTelemetry Operator installed cluster-wide (see Telemetry).
monitoring.opentelemetry.imageotel/opentelemetry-collector-contrib:0.105.0
monitoring.opentelemetry.serviceNameotel-collector
monitoring.opentelemetry.grpcPort4317
monitoring.opentelemetry.httpPort4318
monitoring.opentelemetry.config(debug-exporter pipeline)Inline collector config. Override to point at GCP Cloud Operations / Honeycomb / Datadog.

v1 keeps Postgres + NATS in-cluster. Cloud SQL / managed NATS are deferred.

KeyDefaultNotes
infra.postgres.enabledtrueSet false to point at an external DB (set DATABASE_URL via the install file).
infra.postgres.imagepostgres:16-alpine
infra.postgres.storageSize20Gi
infra.postgres.storageClassstandard-rwo
KeyDefaultNotes
infra.nats.enabledtrue
infra.nats.imagenats:2.10-alpine
infra.nats.replicas1Bump to 3+ for multi-node node-failure tolerance. Chart switches to StatefulSet shape automatically when > 1.
infra.nats.jetstream.enabledtrueRequired by the wake-reliability work in rfcs/jetstream-migration.md.
infra.nats.jetstream.fileStorageSize10Gi
infra.nats.jetstream.maxFileStore8GiPer-stream limits in the bootstrap Job apply within this.
infra.nats.jetstream.maxMemoryStore256Mi
infra.nats.streams.x1Session.enabledtrue
infra.nats.streams.x1Session.replicas1Must be <= infra.nats.replicas.
infra.nats.streams.x1Session.maxAge24hForensic flight-recorder retention.
infra.nats.streams.x1Session.maxBytes134217728 (128 MiB)
infra.nats.streams.x1Session.duplicateWindow2mDedup window for msg-id–based publish retries.
  • Secrets values. The chart only declares which env vars come from which GSM secret name. Secret values are populated separately via gcloud secrets versions add ... (or from your CI). See GCP install.
  • DNS NS records. Set at your domain registrar pointing at the Cloud DNS zone Terraform creates (terraform output dns_nameservers).
  • OpenTelemetryCollector CRD operator. Installed cluster-wide once via helm install opentelemetry-operator open-telemetry/opentelemetry-operator. The chart’s OpenTelemetryCollector CR will not apply without it.
  • External Secrets Operator. Same — installed once cluster-wide before the second terraform apply creates the ClusterSecretStore.