Skip to content

Environment Variables

The runnable control-plane / executor service (apps/control-plane/src/runtime) is configured by environment variables. In a chart deployment these are populated from the component config + secretRefs; for local runs you set them directly.

HTTP

VariableDefaultPurpose
PORT8080HTTP listen port
CONTROL_PLANE_UPSTREAMUpstream for paths the executor proxies (pinned for SSRF safety)

PostgreSQL (data + control DB)

The Postgres DSN is built from discrete vars, or supplied whole:

VariableDefaultPurpose
DATA_DB_URL / DB_URLFull DSN (takes precedence over the discrete vars)
PGHOSTlocalhostHost
PGPORT5432Port
PGUSERfalcone_appNon-BYPASSRLS application role
PGPASSWORDPassword
PGDATABASEfalconeDatabase
CONTROL_DB_URLfalls back to the data DSNPool for API-key storage

IMPORTANT

PGUSER must be a non-BYPASSRLS role (default falcone_app). RLS does not apply to superusers, so connecting as one would silently disable tenant isolation.

MongoDB

VariableDefaultPurpose
MONGO_URIFull URI (takes precedence)
MONGO_HOSTHost (used to build the URI)
MONGO_USER / MONGO_PASSWORDCredentials
MONGO_AUTH_SOURCEadminAuth source when a user is set

For change streams / realtime the URI must point at a replica set (e.g. ?replicaSet=rs0).

Events & functions

VariableDefaultPurpose
KAFKA_BROKERSComma-separated brokers; events executor is enabled only when set
FN_BACKENDSet to off to disable the functions executor

Flows (Temporal) (Preview)

The Flows API is registered only when TEMPORAL_ADDRESS is set (the executor is the sole Temporal client).

VariableDefaultPurpose
TEMPORAL_ADDRESSTemporal frontend host:port; enables Flows when set
TEMPORAL_NAMESPACEfalcone-flowsShared Temporal namespace
TEMPORAL_TASK_QUEUEflows-mainWorker task queue
FLOW_QUOTA_ENFORCE_URLQuota-evaluator endpoint; when set, hard-limit breaches → 429
FLOW_AUDIT_TOPICfalcone.audit.flow-lifecycleKafka topic for flow lifecycle audit (best-effort)
FLOW_TRIGGER_SECRET_KEYMaster key for per-trigger webhook signing secrets
FLOWS_ENABLEDSet to false to keep the Flows API but suppress the monitoring SSE endpoint

MCP server hosting (Preview)

The MCP management API (/v1/mcp) is registered only when MCP_ENABLED=true.

VariableDefaultPurpose
MCP_ENABLEDSet to true to serve the MCP management API
MCP_SELF_BASE_URLhttp://127.0.0.1:$PORTBase URL the engine self-calls to mediate tool calls
MCP_GATEWAY_BASE_URL(self URL)Public base URL used to compute a server's endpoint
MCP_RUNTIME_IMAGEPlatform MCP runtime image (digest-pinned for the registry)
MCP_RUNTIME_IMAGE_DIGESTsha256: digest of the runtime image

Identity (JWT verification)

VariablePurpose
KEYCLOAK_JWKS_URLJWKS endpoint to fetch signing keys
KEYCLOAK_ISSUERExpected token issuer
KEYCLOAK_AUDIENCEExpected token audience

When these are set, Bearer JWTs are verified locally and their claims become the identity (precedence #2). When unset, the service trusts gateway-injected identity headers (precedence #3).

Where values come from in a chart install

values.yaml → config.secretRefs maps existing Kubernetes Secrets to the credentials above:

secretRefs entryKeysFeeds
postgresCredentialsusername, password, databasePG*
mongoCredentialsusername, password, databaseMONGO_*
kafkaCredentialsusername, passwordKafka
objectStorageCredentialsaccess-key, secret-keyStorage
identityClientclient-id, client-secretKeycloak client
gatewayTlstls.crt, tls.keyGateway TLS

See Secret Management.

Released under the MIT License.