Configuration
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.
| Variable | Default | Meaning |
|---|---|---|
BIND_IP | 0.0.0.0 | frontend, UI and health listen address; internal services always bind loopback |
PORT / HTTP_PORT | 7233 / 7243 | frontend gRPC (SDKs) and HTTP API |
INTERNAL_BASE_PORT | 7234 | history, matching, worker on base, base+1, base+2 (loopback) |
UI_PORT | 8233 | 0 disables the UI |
HEALTH_PORT | 8234 | /healthz, /readyz |
METRICS_PORT | 0 | Prometheus /metrics when non-zero |
PUBLIC_ADDRESS | 127.0.0.1:7233 | how clients reach the frontend; the DNS name in production |
CLUSTER_NAME | lertha | fixed on first boot |
NAMESPACES | default | comma-separated; created on boot |
RETENTION_DAYS | 30 | history retention for namespaces the orchestrator creates |
HISTORY_SHARDS | 4 | fixed forever on first boot; 4 is right for one small node |
LOG_LEVEL | info | |
DB_HOST / DB_PORT | 127.0.0.1 / 5432 | |
DB_USER / DB_PASSWORD | lertha / lertha | needs CREATEDB on first boot |
DB_NAME / DB_VISIBILITY_NAME | lertha_flow / lertha_flow_visibility | two databases, one server |
DB_SSLMODE | disable | require or verify-full off-box |
DB_MAX_CONNS | 20 | per store |
UI_INSECURE_COOKIES | false | true only for plain-HTTP local use |
UI_PUBLIC_PATH | when served under a sub-path | |
UI_ASSET_PATH | serve 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.