Skip to main content

Feature flags

platform v0.9.11verified 2026-05-14

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

KeyDrivesWhat happens when disabled
aiFlowBuilderThe AI Flow Builder panel on top of the Flow Designer.TelWeb hides the AI panel; the Flow Designer still works with manual + source authoring.
qaScoringQA scoring jobs on flow hangup.Tasker skips the QA worker; TelWeb hides QA tabs in the Conversation view.
audioPreprocessingAudioProc container + STT preprocessing.Voice service drops voiceai-audioproc; TelPhi disables the preprocessing path.
ttsMediaCacheTTS media cache lookups and writes.TelPhi / TelAPI clear TTS_MEDIA_CACHE_* env; the Media VM compose is unchanged but unused.
registrationPublic registration flow.TelWeb blocks /register; TelAPI rejects registration RPCs.
subscriptionsSubscription enforcement and billing guards.Subscription / SMS guards relax across calls, APIs, and Tasker.
subscriptionManagementSelf-service subscription UI in TelWeb.TelWeb hides /billing/manage; subscriptions still enforce if subscriptions is on.
smsSMS (Vonage).Voice / TelAPI skip SMS dispatch.
webrtcWebRTC stack (Janus + TURN).TelPro drops voiceai-webrtc / voiceai-turn; TelWeb hides the WebRTC phone.
apiAccessExternal API key access.TelAPI rejects API-key requests; TelWeb hides key management.
additionalProvidersNon-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:

  1. docker-compose.yaml — optional containers are removed from the file when their flag is off (e.g. webrtc removes the Janus and TURN services from TelPro's compose; audioPreprocessing removes voiceai-audioproc from Voice's compose).
  2. Per-service FEATURE_* env — the matching FEATURE_* variable is set per service so application code can branch (e.g. FEATURE_WEBRTC=false on the Web and API services).
  3. TelWeb runtime config — the same flags are mirrored into TelWeb's /api/config endpoint 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.

FlagRecommended default
webrtcOn if you want browser-based calls; off if SIP-only.
audioPreprocessingOn if you observe noisy carrier audio; otherwise off (saves the voiceai-audioproc container).
ttsMediaCacheOn in production (cuts TTS provider cost dramatically); requires the Media service.
aiFlowBuilderOn (it's purely additive UI; no extra containers).
qaScoringOn if you have evaluation workflows; off otherwise (Tasker workload is non-trivial).
registrationOff in production unless you run a public-signup deployment.
subscriptions / subscriptionManagementOn if billing is in scope; off for fixed-cost / internal deployments.
smsOn only when Vonage is configured.
apiAccessOn if external clients use the public API; off for closed deployments.
additionalProvidersOn if you've configured Azure, Pythia, or Vodafone TOBi credentials.

Changing a flag

  1. Update the deployment's flag set — either in your config tool, or by editing the bundle directly.
  2. The corresponding FEATURE_* SSM values get set per service; the bundle's docker-compose.yaml adds or removes optional containers.
  3. Restart the affected services: cd /opt/services/<service> && ./update.sh --restart-only for env-only changes; ./update.sh --config-ref <new-ref> if container topology changed.
  4. Verify the change in TelWeb (UI surfaces appear / disappear) and in the affected service's logs.
Defaults

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