Feature flags
Feature flags gate optional functionality across the Delphi services so a single image set can serve very different deployments. Some flags decide whether containers appear in the stack at all (e.g. WebRTC, AudioProc, TTS media cache). Others only inject FEATURE_* env overrides that change application behaviour or hide a UI surface.
Each tenant-visible flag also drives the corresponding <FeatureFlag /> callout in this documentation, so a product page describing a gated feature names the flag that controls it.
Flag inventory
| Key | Drives | What happens when disabled |
|---|---|---|
aiFlowBuilder | The AI Flow Builder panel on top of the Flow Designer. | TelWeb hides the AI panel; the Flow Designer still works with manual + source authoring. |
qaScoring | QA scoring jobs on flow hangup. | Tasker skips the QA worker; TelWeb hides QA tabs in the Conversation view. |
audioPreprocessing | AudioProc container + STT preprocessing. | Voice service drops voiceai-audioproc; TelPhi disables the preprocessing path. |
ttsMediaCache | TTS media cache lookups and writes. | TelPhi / TelAPI clear TTS_MEDIA_CACHE_* env; the Media VM compose is unchanged but unused. |
registration | Public registration flow. | TelWeb blocks /register; TelAPI rejects registration RPCs. |
subscriptions | Subscription enforcement and billing guards. | Subscription / SMS guards relax across calls, APIs, and Tasker. |
subscriptionManagement | Self-service subscription UI in TelWeb. | TelWeb hides /billing/manage; subscriptions still enforce if subscriptions is on. |
sms | SMS (Vonage). | Voice / TelAPI skip SMS dispatch. |
webrtc | WebRTC stack (Janus + TURN). | TelPro drops voiceai-webrtc / voiceai-turn; TelWeb hides the WebRTC phone. |
apiAccess | External API key access. | TelAPI rejects API-key requests; TelWeb hides key management. |
additionalProviders | Non-default AI providers (Azure, Pythia, TOBi). | TelWeb hides provider catalogue entries beyond the defaults. |
How a flag cascades
The flag set chosen for a deployment cascades into three places at bundle generation time:
docker-compose.yaml— optional containers are removed from the file when their flag is off (e.g.webrtcremoves the Janus and TURN services from TelPro's compose;audioPreprocessingremovesvoiceai-audioprocfrom Voice's compose).- Per-service
FEATURE_*env — the matchingFEATURE_*variable is set per service so application code can branch (e.g.FEATURE_WEBRTC=falseon the Web and API services). - TelWeb runtime config — the same flags are mirrored into TelWeb's
/api/configendpoint so the UI hides gated surfaces (the WebRTC phone, registration page, billing portal, etc.).
When the bundle is generated by an internal config tool (e.g. when KI Kombinat hosts your deployment), the cascade happens automatically. For a hand-rolled bundle the operator edits the docker-compose.yaml for each service to remove unused containers and sets the FEATURE_* env variables in SSM under each service's namespace.
What's enabled by default in a fresh deployment
Newly created deployments default to all flags enabled. Turn off the ones you don't need before first boot — the absence of an optional container is cheaper than ignoring it at runtime.
| Flag | Recommended default |
|---|---|
webrtc | On if you want browser-based calls; off if SIP-only. |
audioPreprocessing | On if you observe noisy carrier audio; otherwise off (saves the voiceai-audioproc container). |
ttsMediaCache | On in production (cuts TTS provider cost dramatically); requires the Media service. |
aiFlowBuilder | On (it's purely additive UI; no extra containers). |
qaScoring | On if you have evaluation workflows; off otherwise (Tasker workload is non-trivial). |
registration | Off in production unless you run a public-signup deployment. |
subscriptions / subscriptionManagement | On if billing is in scope; off for fixed-cost / internal deployments. |
sms | On only when Vonage is configured. |
apiAccess | On if external clients use the public API; off for closed deployments. |
additionalProviders | On if you've configured Azure, Pythia, or Vodafone TOBi credentials. |
Changing a flag
- Update the deployment's flag set — either in your config tool, or by editing the bundle directly.
- The corresponding
FEATURE_*SSM values get set per service; the bundle'sdocker-compose.yamladds or removes optional containers. - Restart the affected services:
cd /opt/services/<service> && ./update.sh --restart-onlyfor env-only changes;./update.sh --config-ref <new-ref>if container topology changed. - Verify the change in TelWeb (UI surfaces appear / disappear) and in the affected service's logs.
New features ship off by default and are enabled explicitly per environment. Flags introduced or expanded around v0.9.11 are enumerated in /release-notes/v0.9.11 (operator rollout checklist and upgrade notes).
See also
- Delphi release notes — operator rollout checklist and upgrade callouts alongside the changelog.
- Configuration model — broader configuration sources.
- TelPro operations — WebRTC / Janus / TURN containers controlled by the
webrtcflag.