Overview
Langflow is a visual low-code builder for AI agents, RAG pipelines and MCP servers. You build a flow on a canvas, test it in the editor, then call it through the REST API or as MCP tools. This template runs Langflow on a bundled PostgreSQL that holds users, flows, messages and stored credentials, with a shared data volume for uploaded files and knowledge bases. A login is always required.What Gets Created
*.cpln.app URL is on by default and every request needs a Langflow login.
Prerequisites
Create the database credentials secret
username, password and database. Langflow receives them inside a connection URL, so use only letters, digits, -, _, . and ~:postgres.config.credentialsSecretName to this name (or postgresHA.config.credentialsSecretName with the HA database).Create the admin login secret
admin.secretName to this name.Create the encryption key secret
secretKey.secretName to this name. Langflow refuses to start with a key that is not a valid Fernet key.Create the optional secrets
OPENAI_API_KEY) you list in variableSecrets.keys. A Redis password: a dictionary secret with a URL-safe password key. The Control Plane MCP server needs a service-account key, see Control Plane MCP Server. Backups need a bucket and a Control Plane cloud account, see Backing Up.Installation
The required values are the names of the three secrets from Prerequisites:--set postgres.enabled=false --set postgresHA.enabled=true --set postgresHA.config.credentialsSecretName=DB_CREDENTIALS_SECRET_NAME.
To install with the CLI, UI, Terraform or Pulumi, follow the instructions for your preferred method:
UI
CLI
Terraform
Pulumi
Configuration
Langflow
Login and Keys
Access
Database
Redis
Control Plane MCP Server
cplnMcp.keySecretName set, Langflow registers the Control Plane MCP server as the MCP server cpln of the superuser at boot, so an MCP Tools component can see and manage your org. Langflow’s MCP client cannot sign in with OAuth, so it authenticates with a service-account key, and every flow that uses the server acts as that service account. Give the service account only what your flows need. This example lets it view one GVC:
workload with view. Then install or upgrade with --set cplnMcp.keySecretName=CPLN_MCP_KEY_SECRET_NAME.
The default cplnMcp.url offers the read-only tools: none can create, update or delete. Set it to https://mcp.cpln.io/mcp to offer every tool, and bound the service account’s policies accordingly.
Registration runs in the background after boot and never delays startup. The log line starting cpln-mcp: says whether it worked, and a key the server refuses is reported there and not registered. A server that is already registered is left unchanged, so edits users make under Settings → MCP Servers are kept.
Connecting
cpln secret reveal ADMIN_SECRET_NAME -o yaml. To check the server, forward the port and read its health:
*.cpln.local). To let flows call one, such as an Ollama or Qdrant release, add {name: LANGFLOW_SSRF_ALLOWED_HOSTS, value: "*.cpln.local"} to langflow.extraEnv.
Operations
Backing Up
All state lives in PostgreSQL and the data volume. Enablepostgres.backup.enabled (or postgresHA.backup.enabled with the HA database) and fill in the provider block; the keys and defaults are in the chart’s values.yaml. The bucket, cloud account and IAM policy are set up as described in the postgres or postgres-highly-available template, and a MinIO provider needs a dictionary secret with the keys accessKey and secretKey. Restore steps are in those templates’ pages. The backup covers the database only; uploaded files and knowledge bases on the data volume are not included.
Scaling and Availability
Setlangflow.replicas from 1 to 4. Replicas share PostgreSQL, the data volume and Redis, so they are interchangeable, and more than one requires redis.enabled: true. Redis stays a single node, because Langflow takes one Redis URL and cannot follow Sentinel.
For near-zero-downtime upgrades and failover, set langflow.replicas: 2, redis.enabled: true and postgresHA.enabled: true. Above one replica, use the Streamable HTTP MCP URL; the legacy SSE URL (/sse) works with one replica only.
After turning on redis.enabled or Redis auth on a running release, redeploy so every replica picks up the change:
Rotating the Control Plane MCP Key
Rotating the service-account key does not update a server that is already registered. Either edit itsAuthorization header under Settings → MCP Servers, or delete the cpln server there and redeploy so it is registered again with the new key:
Troubleshooting
The deployment is stuck and cpln logs returns nothing
The deployment is stuck and cpln logs returns nothing
status.versions[].message with cpln workload get-deployments RELEASE_NAME-langflow --gvc GVC_NAME -o yaml, create the secret, then run cpln workload force-redeployment RELEASE_NAME-langflow --gvc GVC_NAME.Langflow does not start and the log says the secret key is not valid
Langflow does not start and the log says the secret key is not valid
Login returns 400 Waiting for approval
Login returns 400 Waiting for approval
{name: LANGFLOW_ENABLE_SIGNUP, value: "false"} to langflow.extraEnv to turn sign-up off.A flow cannot reach a service in my GVC
A flow cannot reach a service in my GVC
*.cpln.local. Add {name: LANGFLOW_SSRF_ALLOWED_HOSTS, value: "*.cpln.local"} to langflow.extraEnv.The log shows cpln-mcp: not registered
The log shows cpln-mcp: not registered
cpln workload force-redeployment RELEASE_NAME-langflow --gvc GVC_NAME. If the log says login-failed, the superuser’s password was changed in the UI after install, and registration cannot log in; add the cpln server under Settings → MCP Servers instead.A secret was rotated but Langflow still uses the old value
A secret was rotated but Langflow still uses the old value
cpln workload force-redeployment RELEASE_NAME-langflow --gvc GVC_NAME.Long flow runs are cut off on the public URL
Long flow runs are cut off on the public URL
langflow.requestTimeoutSeconds (default 600, maximum 3600). Raise it for longer calls. Calls from inside the GVC over cpln.local are not subject to it.The chart refuses to render
The chart refuses to render
langflow.replicas outside 1-4, more than one replica without redis.enabled, redis.mode other than dev, enabling both or neither database, and extraEnv names that the chart sets itself.Important Notes
- Auth is always on and the public URL is on by default. Anyone who reaches it can sign up, but new accounts stay inactive until an admin activates them; add
{name: LANGFLOW_ENABLE_SIGNUP, value: "false"}tolangflow.extraEnvto turn sign-up off. - Any user who can log in can run Python on the server through custom components. Give accounts only to people you trust.
- Never rotate or delete the encryption key secret: API keys already saved in Langflow could no longer be decrypted.
- The admin secret is read on first start only. Change the password in the Langflow UI, since later changes to the secret are ignored.
- MCP clients authenticate with a Langflow API key in the
x-api-keyheader (create one under Settings → API Keys), even when the MCP Server tab shows no auth. - The Control Plane MCP server is registered for the superuser only; other users add their own under Settings → MCP Servers.
- Any logged-in user can read the service-account key through Python, so grant that service account only what flows need.
- After rotating a provider-keys secret, run
cpln workload force-redeployment RELEASE_NAME-langflow --gvc GVC_NAME. - The first
helm upgradeafter an install can restart the bundled database, which briefly interrupts the editor and the API. - Use a single-location GVC: the database, the data volume and Redis run in one location.
- Uninstalling deletes the database and the data volume, and with them every flow, user and uploaded file.