Skip to main content
With FIREFLO_CONFIG_SOURCE=db, the gateway reads four domains from PostgreSQL instead of files: properties, credentials, routing and rates.
All four switch together. There is one key, and it covers every domain — the older per-domain variables are gone and now refuse startup.config_sources on /ops/health reports what each domain actually resolved to, which is the thing to check when a panel edit appears to do nothing.

Accounts, logins and products

Creating a credential does not create an account_balance row. A RECHARGE for an account without one credits nothing and stays pending.

Money

balance has exactly one writer — the gateway’s recharge poll. The panel writes ledger rows and never the balance column.
The entry types split into three jobs: RECHARGE/TRANSFER move money in, RESERVE/RELEASE move it between two columns of the same row and net to zero, and BILL is inert — the poll never selects it, so arrears never enter balance.

Routing

A rule referencing a missing or disabled filter is skipped entirely rather than loaded with fewer conditions — dropping conditions would silently widen the rule.

Approvals and TLVs

Both app_header and app_template carry an approval status (V1.19.0) — only APPROVED rows are loaded. A pending row behaves exactly as if it did not exist.

Workers and settings

The three-tier resolution is outSms.instance.<name>.<key> → outSms.default.<key> → the coded default. Not every setting can be scoped to one listener — one that cannot silently reads a global nobody sets.

Audit

Operator access is logged to a file in the panel’s data folder rather than to this table.

Migrations are forward-only

Flyway, V1.19.0__baseline.sql onward. There is no down-migration — the rollback path is a restore, so take the backup before applying, not after.
Switching to db mode against an empty schema does not fall back to files. The loader publishes the empty set — and for credentials that means every bind and every REST call is refused at once. Run fireflo import first.

Call record tables

The traffic and money half of the schema.

Database configuration

Connecting the gateway, and the db-mode switch.