Skip to main content

Required

Listeners

Node and tenancy

FIRETONE_NODE_ID, FIRETONE_ESL_NODE_ADDR, FIRETONE_ESL_NODE_PASSWORD, FIRETONE_SIP_DOMAIN, FIRETONE_SIP_ALT_DOMAINS, FIRETONE_SINGLE_TENANT.

Provisioning the switch

Setting it is you asserting the switch is co-hosted; it is never inferred.
Without it the daemon computes what the switch should run and applies none of it. A register-mode trunk never registers, and the carriers ACL is never written — so adding an address under a trunk’s ACL hosts changes the database and nothing else, and that carrier stays refused. The trunk’s page reports “configuration has not reached its switch”, which is true and, until the variable is set, unfixable.
The unit must also be allowed to write there. install-service.sh reads this variable and adds the three generated directories to ReadWritePaths; ProtectSystem=strict makes everything else read-only whatever the ownership says, so a chown alone is not enough.

Paths

FIRETONE_DATA_DIR, FIRETONE_MEDIA_DIR, FIRETONE_RECORDINGS_DIR, FIRETONE_VOICEMAIL_DIR, FIRETONE_AGENT_AUDIO_DIR.

AI and tuning

FIRETONE_OPENAI_URL, FIRETONE_GEMINI_URL, FIRETONE_AGENT_HOLD_DELAY_MS, FIRETONE_PLAYBACK_LEAD_MS, FIRETONE_LOG_LEVEL.

Development only

FIRETONE_DEV_CARRIER=true is read by the node install script, not by the daemon, and installs a simulated carrier so calls can be placed with no real provider. The provider URL overrides above point the AI clients at a local double.
Neither belongs in a real deployment. The daemon logs a warning when a provider URL is overridden, and the install script prints which carrier configuration it installed — read that line rather than assuming.