Skip to main content

Configuration

View Markdown

All variables are prefixed LERTHA_FLOW_. Every one has a default that works on a laptop against a local Postgres; production values come from Doppler.

VariableDefaultMeaning
BIND_IP0.0.0.0frontend, UI and health listen address; internal services always bind loopback
PORT / HTTP_PORT7233 / 7243frontend gRPC (SDKs) and HTTP API
INTERNAL_BASE_PORT7234history, matching, worker on base, base+1, base+2 (loopback)
UI_PORT82330 disables the UI
HEALTH_PORT8234/healthz, /readyz
METRICS_PORT0Prometheus /metrics when non-zero
PUBLIC_ADDRESS127.0.0.1:7233how clients reach the frontend; the DNS name in production
CLUSTER_NAMElerthafixed on first boot
NAMESPACESdefaultcomma-separated; created on boot
RETENTION_DAYS30history retention for namespaces the orchestrator creates
HISTORY_SHARDS4fixed forever on first boot; 4 is right for one small node
LOG_LEVELinfo
DB_HOST / DB_PORT127.0.0.1 / 5432
DB_USER / DB_PASSWORDlertha / lerthaneeds CREATEDB on first boot
DB_NAME / DB_VISIBILITY_NAMElertha_flow / lertha_flow_visibilitytwo databases, one server
DB_SSLMODEdisablerequire or verify-full off-box
DB_MAX_CONNS20per store
UI_INSECURE_COOKIESfalsetrue only for plain-HTTP local use
UI_PUBLIC_PATHwhen served under a sub-path
UI_ASSET_PATHserve the UI from this directory instead of the embedded build

Fixed on first boot

HISTORY_SHARDS and CLUSTER_NAME are written into the database the first time and cannot be changed afterwards without a migration. Decide them before the first production boot.

Retention

Retention is applied when the orchestrator creates a namespace. Changing it later is a deliberate operator action (lertha namespace update), not a boot side effect.