Skip to content

Application configuration

This page is about configuring the server process — distinct from authoring a pipeline config. Application config sets the broker, database, storage backend, and LLM providers the server uses; pipeline configs describe the work it runs.

Settings come from environment variables (and a .env file in development), namespaced FACTFLOW_<GROUP>_<FIELD>. Each provider group maps to a settings object:

PrefixConfigures
FACTFLOW_APP_*App name, environment, debug, concurrent-execution ceiling
FACTFLOW_DATABASE_*PostgreSQL host/port/database
FACTFLOW_QUEUE_*Queue provider selection, pool size, concurrency
FACTFLOW_ARTEMIS_* / FACTFLOW_PULSAR_*Provider-specific broker settings
FACTFLOW_STORAGE_*Storage URI (file://, minio://, s3://), credentials, file-size limits
FACTFLOW_LLM_*LLM provider profiles and credentials
FACTFLOW_LOGGING_*Structured logging config (LEVEL, LOG_TO_FILE, LOG_TO_CONSOLE)
FACTFLOW_LOG_LEVELRoot-logger level set at process startup

FACTFLOW_APP_MAX_CONCURRENT_EXECUTIONS (default 10) caps how many pipeline executions the orchestrator will admit. Past it, starting a run fails outright rather than queueing:

Failed to start pipeline: Max 10 concurrent executions reached (10 active)

This is the only enforced ceiling on concurrency. Nothing limits the number of broker subscriptions, even though each route holds one — a run of 14 concurrent executions was measured holding 59 subscriptions across 42 routes with the broker healthy. So if concurrent runs are being refused, this is the value to raise; there is no subscription cap to tune.

Raise it with the machine in mind rather than by reflex: every route in every execution holds a broker connection, so the practical limit is what the broker and the host's file descriptors will carry.

Two overrides control how the server finds and validates shipped pipeline YAML at startup:

  • FACTFLOW_CONFIG_PIPELINES_DIR — override the directory scanned for pipeline configs.
  • FACTFLOW_CONFIG_VALIDATOR_STRICT — defaults to strict (abort startup on an invalid shipped YAML); set 0 to downgrade to warn-only.
Terminal window
FACTFLOW_CONFIG_VALIDATOR_STRICT=0 \
FACTFLOW_CONFIG_PIPELINES_DIR=/path/to/pipelines \
uv run python -m factflow_server serve --embedded

LLM and embedding provider profiles (model, residency, credentials) are covered in LLM & embedding providers. The broker and storage backends are selected by the FACTFLOW_QUEUE_* and storage settings above.