Skip to main content
Complete reference for every input variable exposed by the GCP Terraform modules. Use it while filling in terraform.tfvars for the first time or tuning an existing deployment. Variables come in two categories:
  • Non-sensitive (region, sizing, feature flags): set in infra/terraform.tfvars.
  • Sensitive (license key, passwords, encryption keys): sourced through infra/scripts/setup-env.sh, which writes them to Google Secret Manager and exports them for the Terraform and Helm steps.
For the end-to-end install, refer to the deploy guide. For how the modules fit together, refer to the architecture reference.

Core

VariableDefaultRequiredDescription
project_idyesGCP project ID where resources are created.
regionus-west2noGCP region for regional resources.
zoneus-west2-anoGCP zone for zonal resources.
environmentprodnoEnvironment name applied to labels: dev, staging, or prod.
name_prefixlsnoPrefix for all resource names. 1 to 11 characters, starting with a lowercase letter; lowercase letters, numbers, and hyphens only.
unique_suffixtruenoAppend a random suffix to resource names. Recommended for multi-tenant projects.
ownerplatform-teamnoOwner label applied to all resources.
cost_center""noCost center label for billing attribution.
labels{}noAdditional labels applied to all resources.

Networking

VariableDefaultRequiredDescription
subnet_cidr10.0.0.0/20noCIDR for the GKE subnet. Must not overlap existing ranges.
pods_cidr10.4.0.0/14noCIDR for GKE pods. Must not overlap the subnet or services range.
services_cidr10.8.0.0/20noCIDR for GKE services. Must not overlap the subnet or pods range.
gke_master_authorized_cidrs[]noExternal CIDRs permitted to reach the GKE control plane endpoint. Empty leaves the control plane publicly reachable so Terraform-managed Helm and kubectl steps work from any apply host. Populate with operator and CI egress CIDRs for production.

GKE

VariableDefaultRequiredDescription
gke_use_autopilotfalsenoUse GKE Autopilot mode. Autopilot always uses Dataplane V2.
gke_node_count2noInitial node count per zone (Standard mode only).
gke_min_nodes2noMinimum nodes per zone for autoscaling.
gke_max_nodes10noMaximum nodes per zone for autoscaling.
gke_machine_typee2-standard-4noGKE node machine type (for example e2-standard-4, n2-standard-8).
gke_disk_size100noNode disk size in GB.
gke_release_channelREGULARnoGKE release channel: RAPID, REGULAR, or STABLE.
gke_deletion_protectiontruenoEnable deletion protection on the GKE cluster.
gke_network_policy_providerDATA_PLANE_V2noNetwork policy provider: CALICO (legacy) or DATA_PLANE_V2 (Cilium-based, recommended).

PostgreSQL (Cloud SQL)

VariableDefaultRequiredDescription
postgres_sourceexternalnoexternal (Cloud SQL with private IP) or in-cluster (deployed via Helm).
postgres_versionPOSTGRES_15noCloud SQL PostgreSQL version.
postgres_tierdb-custom-2-8192noCloud SQL machine tier (for example db-f1-micro, db-custom-2-8192).
postgres_disk_size50noCloud SQL disk size in GB.
postgres_high_availabilitytruenoEnable Cloud SQL HA (regional standby).
postgres_deletion_protectiontruenoEnable deletion protection on Cloud SQL.
postgres_database_flagssee descriptionnoDatabase flags set on the Cloud SQL instance. Defaults to max_connections = 500 plus checkpoint and connection logging flags.
postgres_ssl_modeENCRYPTED_ONLYnoCloud SQL SSL enforcement. ENCRYPTED_ONLY requires TLS for every connection. ALLOW_UNENCRYPTED_AND_ENCRYPTED accepts plaintext. TRUSTED_CLIENT_CERTIFICATE_REQUIRED also requires a client certificate.
postgres_password""when externalCloud SQL password. Set via TF_VAR_postgres_password, or stored in Secret Manager by setup-env.sh.

Redis (Memorystore)

VariableDefaultRequiredDescription
redis_sourceexternalnoexternal (Memorystore with private IP) or in-cluster (deployed via Helm).
redis_versionREDIS_7_0noMemorystore Redis version.
redis_memory_size5noMemorystore Redis memory size in GB.
redis_high_availabilitytruenoEnable Memorystore HA (Standard HA tier).
redis_prevent_destroyfalsenoPrevent accidental Terraform destroy of the Redis instance.

ClickHouse

VariableDefaultRequiredDescription
clickhouse_sourcein-clusternoin-cluster (dev/POC only), langsmith-managed (recommended for production), or external (self-hosted).
clickhouse_host""when managed or externalClickHouse host.
clickhouse_port9440noClickHouse native protocol port (9440 for TLS, 9000 for non-TLS).
clickhouse_http_port8443noClickHouse HTTP port (8443 for TLS, 8123 for non-TLS).
clickhouse_userdefaultnoClickHouse username.
clickhouse_password""when managed or externalClickHouse password.
clickhouse_databasedefaultnoClickHouse database name.
clickhouse_tlstruenoEnable TLS for ClickHouse connections.
clickhouse_ca_cert""noClickHouse CA certificate (PEM) for TLS verification. Empty uses system CAs.

GCS storage

VariableDefaultRequiredDescription
storage_ttl_short_days14noGCS TTL in days for the ttl_s/ prefix.
storage_ttl_long_days400noGCS TTL in days for the ttl_l/ prefix.
storage_force_destroyfalsenoAllow bucket deletion even with objects inside. Use with caution.

LangSmith application

VariableDefaultRequiredDescription
langsmith_namespacelangsmithnoKubernetes namespace for LangSmith.
langsmith_domainlangsmith.example.comnoFully qualified domain name for LangSmith.
langsmith_license_key""noLicense key. Use TF_VAR_langsmith_license_key.
langsmith_helm_chart_version""noAdvisory chart version, exposed as a Terraform output. The deploy script pins the chart line through the CHART_VERSION environment variable (default ~0.15.1, the latest 0.15.x patch). Export CHART_VERSION to override.

Ingress and TLS

VariableDefaultRequiredDescription
install_ingresstruenoInstall the ingress controller via Terraform. The Gateway is HTTPS-only, so tls_certificate_source must be letsencrypt or existing.
ingress_typeenvoynoIngress type: envoy (implemented), or istio / other (reserved).
tls_certificate_sourcenonenonone, letsencrypt (auto via cert-manager), or existing (provide your own certs).
install_cert_managerfalsenoInstall cert-manager for Let’s Encrypt certificates.
letsencrypt_email""when letsencryptEmail for Let’s Encrypt notifications.
tls_certificate_crt""when existingTLS certificate (PEM). Load with file().
tls_certificate_key""when existingTLS private key (PEM). Load with file().
tls_secret_namelangsmith-tlsnoName for the TLS secret in Kubernetes.

KEDA

VariableDefaultRequiredDescription
enable_langsmith_deploymenttruenoInstall KEDA for queue-driven autoscaling of LangSmith workers. This is the KEDA install toggle, not the LangSmith Deployment feature (see enable_deployments).

Optional GCP modules

VariableDefaultRequiredDescription
enable_gcp_iam_moduletruenoWire modules/iam for Workload Identity and bucket IAM bindings.
enable_secret_manager_modulefalsenoWire modules/secrets to store generated bootstrap credentials in Secret Manager.
enable_dns_modulefalsenoWire modules/dns for Cloud DNS and a managed certificate.
dns_create_zonetruenoCreate a new Cloud DNS managed zone when the DNS module is enabled.
dns_existing_zone_name""when !dns_create_zoneExisting Cloud DNS zone to use.
dns_create_certificatetruenoCreate a Google-managed SSL certificate when the DNS module is enabled.

Sizing and feature flags

The app Terraform layer and the Helm deploy scripts read these flags to enable the matching chart components and provision per-feature databases. sizing_profile is read by the deploy scripts to select the Helm sizing overlay.
VariableDefaultRequiredDescription
sizing_profiledefaultnoHelm sizing: production (~20 users, ~100 traces/sec), production-large (~50 users, ~1000 traces/sec), dev (single-replica), minimum (cost-parking floor, not for production), or default (chart defaults).
enable_deploymentsfalsenoEnable LangSmith Deployment (listener, operator, host-backend). Requires the Deployments license entitlement.
enable_agent_builderfalsenoEnable Agent Builder. Requires enable_deployments = true and the Agent Builder entitlement.
enable_insightsfalsenoEnable Insights (ClickHouse-backed analytics). Requires the Insights entitlement.
enable_pollyfalsenoEnable Polly (AI evaluation and monitoring). Requires enable_deployments = true and the Polly entitlement.
enable_fleetfalsenoEnable Fleet standalone deployment (chart v0.15+). Does not require enable_deployments. Reuses langsmith_agent_builder_encryption_key when migrating from enable_agent_builder.
enable_standalone_pollyfalsenoEnable Polly standalone deployment (chart v0.15+). Does not require enable_deployments. Reuses langsmith_polly_encryption_key.
enable_standalone_insightsfalsenoEnable Insights standalone deployment (chart v0.15+). Does not require enable_deployments. Reuses langsmith_insights_encryption_key.
enable_usage_telemetryfalsenoEnable extended usage telemetry reporting (PHONE_HOME_USAGE_REPORTING_ENABLED).

Sensitive values (set with setup-env.sh)

Sourcing infra/scripts/setup-env.sh writes these to Google Secret Manager and exports them into the current shell for the Terraform and Helm steps. Never set these inline in terraform.tfvars.
VariableDescription
langsmith_license_keyLangSmith enterprise license key.
langsmith_admin_passwordInitial org admin password.
langsmith_api_key_saltSalt for hashing API keys. Must stay stable after first deploy.
langsmith_jwt_secretJWT secret for Basic Auth sessions. Must stay stable.
langsmith_deployments_encryption_keyFernet key for LangSmith Deployment. Must never change.
langsmith_agent_builder_encryption_keyFernet key for Agent Builder. Must never change.
langsmith_insights_encryption_keyFernet key for Insights. Must never change.
langsmith_polly_encryption_keyFernet key for Polly. Must never change.