Langflow
Deploy Langflow on Kubernetes for visual AI workflows, agents, RAG applications, and provider integrations.
Overview
The HelmForge Langflow chart uses the official docker.io/langflowai/langflow:1.11.1 image and exposes the web/API server on port 7860.
The default deployment persists /app/langflow because flows, local SQLite state, provider settings, and local configuration are not stateless.
Langflow 1.11 introduces native v2 workflow execution, trusted JWT authentication with just-in-time user mapping, RBAC-aware interfaces,
A2A and human-in-the-loop workflows, and additional provider and vector-store bundles. The 1.11.1 maintenance release adds authentication,
tracing, MCP, SSRF, and component-loading fixes. Configure optional runtime capabilities through app.env or app.envFrom.
When no existing or inline authentication credentials are provided, the chart generates a strong secret key and initial superuser password on
the first install and preserves them across upgrades. The startup, liveness, and readiness probes use Langflow’s reliable /health_check
endpoint, which verifies application services and the database instead of only checking whether the port is open.
The chart generates the core Langflow runtime environment:
LANGFLOW_HOST=0.0.0.0LANGFLOW_PORTLANGFLOW_CONFIG_DIRLANGFLOW_SAVE_DB_IN_CONFIG_DIRLANGFLOW_OPEN_BROWSER
Configuration Reference
Core runtime:
image.repository,image.tag,image.pullPolicy: official pinned Langflow image and pull behavior.imagePullSecrets: optional registry pull secrets.replicaCount: web/API replica count. Values greater than1require a shared external database.app.port: Langflow HTTP port.app.command,app.args: optional container command and argument overrides.app.env,app.envFrom,app.extraEnv: provider credentials, integration settings, and advanced runtime environment.commonLabels,nameOverride,fullnameOverride: naming and common metadata controls.
Secrets and database:
auth.secretKey,auth.superuser,auth.superuserPassword: optional inline credentials. Empty values are generated and preserved.auth.existingSecret,auth.secretKeyKey,auth.superuserKey,auth.superuserPasswordKey: production Secret wiring.database.mode:sqliteorexternal.database.url: inline SQLAlchemy database URL for labs.database.existingSecret,database.urlKey: production external database URL Secret.
Storage and scaling:
persistence.enabled,persistence.size,persistence.storageClass: local config and SQLite storage.persistence.accessModes: generated PVC access modes. Multi-replica persistent deployments requireReadWriteMany.persistence.existingClaim: mount an existing claim instead of creating one. WithreplicaCount > 1, the external claim controls access modes.persistence.mountPath: Langflow config directory, default/app/langflow.pdb.enabled,pdb.minAvailable: disruption budget for scaled deployments.
Exposure and operations:
serviceAccount.create,serviceAccount.name,serviceAccount.annotations,serviceAccount.automountServiceAccountToken.service.type,service.port,service.annotations,service.ipFamilyPolicy,service.ipFamilies.ingress.enabled,ingress.ingressClassName,ingress.annotations,ingress.hosts,ingress.tls. Setingress.ingressClassName: ""to omitspec.ingressClassName.gateway.enabled,gateway.parentRefs,gateway.hostnames,gateway.path,gateway.pathType.networkPolicy.enabled,networkPolicy.ingressFrom,networkPolicy.dnsEgressPeers,networkPolicy.extraEgress. EnablingnetworkPolicy.enabledcreates ingress restrictions plus egress isolation with built-in DNS and HTTPS allowances.networkPolicy.dnsEgressPeersdefaults to kube-system/kube-dns and can be changed for clusters with different DNS labels.networkPolicy.extraEgressappends database, provider, or proxy rules after the built-in allowances.probes.startup,probes.liveness,probes.readiness: enable flags, HTTP health-check paths, and timing values.resources,podSecurityContext,securityContext,nodeSelector,tolerations,affinity.topologySpreadConstraints,priorityClassName,terminationGracePeriodSeconds.podLabels,podAnnotations,extraVolumes,extraVolumeMounts,extraManifests.
Installation
helm repo add helmforge https://repo.helmforge.dev
helm repo update
helm install langflow helmforge/langflow
OCI install:
helm install langflow oci://ghcr.io/helmforgedev/helm/langflow
Production Example
auth:
existingSecret: langflow-secrets
secretKeyKey: secret-key
superuserKey: superuser
superuserPasswordKey: superuser-password
database:
existingSecret: langflow-database
urlKey: database-url
persistence:
enabled: true
size: 20Gi
networkPolicy:
enabled: true
dnsEgressPeers:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: kube-system
podSelector:
matchLabels:
k8s-app: kube-dns
Secrets
Use auth.existingSecret for production so credentials remain under your secret-management lifecycle. It must hold:
secretKeysuperusersuperuser-password
These key names can be changed with auth.secretKeyKey, auth.superuserKey, and
auth.superuserPasswordKey. Keep the secret key value stable across upgrades.
Rotating it can make encrypted provider credentials unusable.
For a default installation, retrieve the generated username and password from the chart-managed Secret:
kubectl get secret RELEASE-langflow -o jsonpath='{.data.superuser}' | base64 --decode
kubectl get secret RELEASE-langflow -o jsonpath='{.data.superuser-password}' | base64 --decode
Replace RELEASE with the Helm release name and add -n NAMESPACE when installed outside the current namespace.
Database And Scaling
The default single-replica mode can use local SQLite under /app/langflow. For multiple replicas, configure a shared database:
replicaCount: 3
database:
existingSecret: langflow-database
urlKey: database-url
persistence:
accessModes:
- ReadWriteMany
pdb:
enabled: true
The chart blocks replicaCount > 1 unless database.url or database.existingSecret is configured.
When chart-created persistence stays enabled for multiple replicas, the shared config directory must use ReadWriteMany; the default generated
ReadWriteOnce PVC is rejected to avoid multi-attach failures on multi-node clusters.
Backup
Back up the PVC and any external database. The PVC contains local configuration and may contain SQLite state, generated files, or custom components depending on how Langflow is used.