Skip to main content
Version: 0.9.17-patch1

Environment variable index

A consolidated catalogue of environment variables consumed by Delphi services. Each row carries a source badge (where the value comes from) and an optional scope badge.

Source legend
  • env — set in .env files or compose; the canonical local override.
  • SSM — AWS SSM Parameter Store; expanded into env at boot.
  • Secrets Manager — AWS Secrets Manager; expanded into env or files at boot.
  • Code default — value baked in code if nothing overrides it.
  • TelWeb · Team / TelWeb · Admin / TelWeb · Platform — DB-backed setting changed via TelWeb UI.
  • DB rowPlatformSetting or domain table (not exposed in TelWeb UI).
  • Redis (runtime) — ephemeral runtime cache.

Voice and SIP

NameSourceScopeDefaultDescription
JANUS_WS_PORTenvall8188 (local) / 443 (prod)Janus WebSocket port; required for WebRTC bridging.
TELPHI_MEDIA_HOSTenvallhost.docker.internal / TelPhi private IPTelSys → TelPhi media plane host.
TELPHI_MEDIA_PORTenvall12001TelSys → TelPhi media plane port.
TELPHI_MEDIA_SCHEMEenvallwsScheme for TelPhi media WebSocket.
TELPHI_MEDIA_PATHenvall/mediaPath for TelPhi media WebSocket.
RTPENGINE_HOSTenvall10.30.0.10 (local)RTPEngine control endpoint.
RTPENGINE_NG_PORTenvall22222RTPEngine ng control port.
KAMAILIO_SIP_DOMAINSSMprodPublic SIP domain Kamailio (https://www.kamailio.org/wikidocs/) serves.
REFER_TARGET_HOSTenvallKamailio REFER_SBC_HOST (TelPro). Defaults to DOMAIN_TELPRO. Align with TelPhi transfer REFER configuration.
COTURN_SHARED_SECRETSecrets ManagerprodShared secret for TURN credentials.
VGW_ENVIRONMENTenvvoiceOptional label sent as `VGW-Environment` for TOBi application metadata. Falls back to ENVIRONMENT / OTEL_DEPLOYMENT_ENVIRONMENT.
HEALTH_PROBE_ENABLEDenvtelprotrueEnable per-trunk SIP OPTIONS from the edge; health alarms do not change routing.
HEALTH_PROBE_INTERVALenvtelpro60Seconds between OPTIONS probe cycles.
HEALTH_PROBE_TARGET_PORTenvtelpro5060SIP target port for the first allowed source-IP entry of each enabled trunk. Verify CIDR-derived targets against the carrier. The probe uses the 45-second SIP transaction timer; the legacy HEALTH_PROBE_TIMEOUT example is not applied.
AMI_HOSTenvvoice127.0.0.1Asterisk Manager Interface host for integrations that use AMI. Since 0.9.17-patch1, trunk health uses edge SIP OPTIONS instead.
AMI_PORTenvvoice8038Asterisk Manager Interface port. TelSys listens on 8038 (`MYAMIPORT`). AMI clients must use the same port. The edge OPTIONS trunk monitor does not use AMI. Provisioned via `services/voice/vars.yaml`; the compose maps it to both TelSys (`MYAMIPORT`) and TelPhi.
AMI_USERenvvoiceasteriskAMI login user for integrations that use AMI. One value feeds both sides: TelSys (`AMIUSER`) and TelPhi (`AMI_USER`) via the voice compose. Mismatched values fail with "AMI login failed: Authentication failed" for AMI clients.
AMI_SECRETvoicetelsys image default (override per environment)AMI login secret, provisioned via Secrets Manager (`services/voice/vars.yaml`, sensitive). Must match on TelSys (`AMISECRET`) and TelPhi (`AMI_SECRET`); the compose maps one value to both.
AUDIOPROC_ENABLEDSSMvoicefalseStart the AudioProc preprocessor used for denoising and Silero speech detection. Also controlled by the `audioPreprocessing` feature flag. See [Call handling](/guide/users/flow-designer/call-handling-properties) and [Voice operations](/platform/operations/voice).
AUDIOPROC_URLenvvoicews://127.0.0.1:8790WebSocket URL TelPhi uses to reach the AudioProc container when AUDIOPROC_ENABLED is true.
TELAPI_SWAGGER_UI_ENABLEDenvapitrue in development, false in production and stagingWhen false, TelAPI serves neither `/documentation` (Swagger UI) nor the OpenAPI JSON under it, and `GET /` reports `docs: null`. Customer-facing and staging API hosts keep this false and use the versioned [API reference](/api/reference) instead of a live Swagger UI.
SIP_100REL_MODEenvalloffTelSys PJSIP 100rel mode: off (default) | peer_supported | yes | required — PRACK / reliable provisional responses toward TelPro. Synonyms accepted (e.g. no→off, on→yes). See Voice operations.
VAIASTERISKCONSOLELOGFORMATenvalljsonTelSys/Asterisk console log format. Use json for structured logging and log-to-span parsing; default/plain text is mainly for ad-hoc troubleshooting.
TELSYS_LOG_LEVELenvallinfoPino-aligned TelSys/Asterisk log level: trace | debug | info | warn | error | fatal. SIP capture remains available independently.
TELPRO_LOG_LEVELenvallLOG_LEVELPino-aligned TelPro/Kamailio log level. Replaces generated DEBUG_LEVEL overrides.
RTPENGINE_LOG_LEVELenvallLOG_LEVELPino-aligned RTPEngine log level, mapped to RTPEngine syslog verbosity. Replaces RTP_LOG_LEVEL.
WEBRTC_LOG_LEVELenvallLOG_LEVELPino-aligned Janus WebRTC log level, mapped to Janus verbosity. Replaces JANUS_*LOG_LEVEL overrides.
SIP_CAPTURE_ENABLE_PJSIP_LOGGERenvall1Enables detailed TelSys PJSIP SIP message logging for SIP ladder and log-to-span diagnostics.
MAX_CALL_DURATION_SECONDSenvvoice7200Fallback max call duration (seconds) used when a flow does not set its own. TelPhi force-hangs-up any call older than this and classifies the hangup as max_call_duration. A per-flow sessionConfig.maxCallDurationSeconds value overrides this; the per-flow value is validated by FlowDefinitionSchema, not clamped against this env here.
MAX_CALL_DURATION_WARNING_MESSAGEenvvoice(empty)Fallback warning text spoken ~10s before the max-duration hangup, used when a flow sets no warning of its own. Empty = silent hangup. A per-flow sessionConfig.maxDurationWarningMessage value takes precedence.

Database and Redis

NameSourceScopeDefaultDescription
DATABASE_URLSecrets ManagerallPostgres connection string. Keep `ssl*` query params out of the URL; TLS policy comes from `DATABASE_SSL_MODE` and the CA file (see [Internal encryption](https://docs.delphi.ki-kombinat.com/platform/security/internal-encryption)).
DATABASE_SSL_MODESSMalldisable (local)Client SSL policy: `disable` | `require` | `verify-ca` | `verify-full`.
DATABASE_SSL_CA_BUNDLE_B64Secrets ManagerprodBase64 PEM CA bundle for Postgres TLS verification; decoded to `./tls/database-ca.crt` and mounted at `/etc/ssl/database/ca.crt`. Use the CA that signs PgBouncer’s cert (or the RDS/Aurora global CA when connecting straight to AWS).
DATABASE_SSL_CA_FILEenvall/etc/ssl/database/ca.crtIn-container path to the decoded Postgres CA bundle.
MIGRATION_DATABASE_URLSecrets ManagerprodPrivileged direct Postgres URL for the Ops db-migrate one-shot only (DDL / migrations / delphi-setup). Separate from runtime DATABASE_URL. See Database credentials.
DATABASE_SECRET_ARNenvprodOptional Secrets Manager ARN for runtime DB credential refresh on long-running Node services (day-2 rotation of the CRUD user, not the migration user). See Database credentials.
DATABASE_SECRET_REGIONenvprodAWS_REGIONAWS region for DATABASE_SECRET_ARN when it differs from the deployment region.
REDIS_URLSecrets ManagerallRedis connection string; rediss:// when TLS is enabled.
REDIS_TLS_CA_BUNDLE_B64Secrets ManagerprodBase64 PEM CA bundle for Redis TLS; decoded to `./tls/redis-ca.crt` and mounted at `/etc/ssl/redis/ca.crt`. Often empty when relying on the system trust store (e.g. ElastiCache).
REDIS_TLS_CA_FILEenvall/etc/ssl/redis/ca.crtIn-container path to the decoded Redis CA bundle.

AWS and infrastructure

NameSourceScopeDefaultDescription
AWS_REGIONenvalleu-central-1AWS region for SSM / Secrets Manager / S3 calls.
ENVIRONMENTenvallDeployment identifier from bootstrap. Used for instance labels and default team Secrets Manager paths (`{ENVIRONMENT}/teams/{slug}/secrets`). Must reach TelWeb and TelAPI containers.
NAMESPACEenvallBootstrap SSM/Secrets Manager namespace for the deployment (e.g. `voiceai/staging` or a customer env id). Fallback for platform secret paths when `PLATFORM_SECRETS_NAMESPACE` is unset. Must reach TelWeb and TelAPI.
PLATFORM_SECRETS_NAMESPACEallNAMESPACE, else voiceai/localPreferred prefix for platform Secrets Manager collections (`{namespace}/platform/secrets`, `{namespace}/platform/trunk-tls`). Seeded per web/api service; required when multiple deployments share one AWS account.
NEXT_PUBLIC_ENVIRONMENTenvallLegacy build-time client hint. Team secret path suggestions now use runtime `/api/config` (`deploymentEnvironment` / `platformSecretsNamespace`) instead of this value.
HTTP_PROXYenvprodForward proxy for outbound HTTP, including AWS and LLM provider paths.
HTTPS_PROXYenvprodForward proxy for outbound HTTPS.
NO_PROXYenvprodHosts to bypass the proxy.
EGRESS_TLS_REJECT_UNAUTHORIZEDenvalltrueWhether outbound HTTPS/WSS egress (STT/TTS/LLM providers) verifies remote TLS certificates. Applies to both proxied and direct (`NO_PROXY`) connections. Set `false` only in dev/staging when flows target mock providers with self-signed certificates; relaxed direct requests are logged as `fetch_direct_tls_relaxed`.
SSM_PARAM_PREFIXenvall/delphi/<env>/Prefix under which Delphi SSM params live.
S3_CONFIG_BUCKETenvprodS3 bucket where the deployment config bundles live; consumed by fetch-config on every host. Bundles include `.config-manifest.json` for checksum verification.
CONFIG_BASE_PATHenvprod/opt/servicesOptional base path used by fetch-config when promoting verified config bundles on a host.
BASTION_HOSTenvopsBastion host used by Tasker service-refresh jobs to reach API, Voice, and TelPro instances.
BASTION_SSH_KEY_B64Secrets ManageropsBase64 private SSH key used by Tasker service-refresh jobs when the key is not already present on disk.
BASTION_SSH_KEY_PATHenvopsOptional filesystem path to the SSH key used by Tasker service-refresh jobs.
EDGE_TLS_FULLCHAIN_B64Secrets Managerapi,telproBase64 PEM full-chain certificate for public edge TLS listeners on API and TelPro.
EDGE_TLS_PRIVKEY_B64Secrets Managerapi,telproBase64 PEM private key matching EDGE_TLS_FULLCHAIN_B64 for public edge TLS listeners.
EDGE_TLS_CA_BUNDLE_B64Secrets Managerapi,telproOptional CA bundle for edge TLS verification chains and trust material.
EDGE_TLS_VERSIONSSMapi,telproMonotonic edge TLS material version. Service refresh uses it to detect and roll certificate changes.
EDGE_TLS_RENEWAL_THRESHOLD_DAYSenvops30Tasker renewal threshold; certificates expiring within this many days are renewed by EDGE_TLS_RENEW.
EDGE_TLS_CERTBOT_STAGINGenvopsfalseUse the ACME staging endpoint for edge TLS renewal tests.
API_TLS_ENABLEDSSMapifalseEnables the API public edge TLS listener once edge certificate secrets are available.
CERTBOT_EMAILenvopsACME account email used by Tasker edge TLS renewal jobs.

Observability

NameSourceScopeDefaultDescription
OTEL_EXPORTER_OTLP_ENDPOINTenvall10.0.1.10:4317 (prod)OTLP collector endpoint.
OTEL_SERVICE_NAMEenvallService identifier in spans / logs.
OTEL_ENABLEDenvwebtrueEnables TelWeb OpenTelemetry instrumentation in generated Web service config.
SIGNOZ_URLenvallhttps://signoz.<env>.delphi/URL TelWeb queries for the Debug tab.
SIGNOZ_API_TOKENSecrets ManagerprodAPI token for SigNoz Logs / Traces queries.
SIGNOZ_API_KEYSecrets ManagerallEditor or Admin SigNoz service-account key used by apply-alert-rules.sh on the SigNoz host (header SIGNOZ-API-KEY). Not the same as SIGNOZ_API_TOKEN (TelWeb Debug queries). See SigNoz operations → Upgrade.
SIGNOZ_VERSIONSSMall0.139.0signoz/signoz image tag (v prefix added). /opt/deployment/.env wins over SSM. Bump with ./update.sh --signoz-version on the SigNoz host.
SIGNOZ_OTLP_ENDPOINTenvdevOptional OTLP endpoint override for local or tunneled SigNoz collection.
LOG_TO_SPAN_OTLP_ENDPOINTenvalllocalhost:4318OTLP HTTP endpoint used by the TelPro log-to-span sidecar to send SIP ladder spans through the local collector.
LOG_TO_SPAN_EXPORT_LOGSenvallfalseWhen true, exports parsed SIP capture logs as OTLP logs in addition to spans. Keep false unless the collector/parser path is sized for the volume.
ENABLE_PII_LOGGINGenvallfalseWhen not true, enables PII redaction: OTel collector transform/pii (and transform/pii_traces on Voice) scrubs logs/traces before SigNoz export; TelPhi redacts transcript + caller number on DB persist; TelAPI redacts browser-action transcripts. SIP ladder logs (event=sip_message) stay unmasked. Does not control transcript retention — full text is still written to S3 when app Recording is on. Production: keep false except short support sessions. Staging/dev: may set true for debugging. See Monitoring in SigNoz — PII redaction and Conversations — Recording and transcript retention.
MSISDN_UNMASKED_DIGITSenvall4Trailing phone-number digits kept when masking MSISDNs in collector logs/traces, TelPhi DB writes, and callerNumber attributes (for example ***3456). Must match on voiceai-telphi, telapi, and voiceai-otel-collector on each host.

Service log levels

All values use the Pino labels trace, debug, info, warn, error, and fatal. Service-specific variables override the global LOG_LEVEL for that service.

NameSourceScopeDefaultDescription
LOG_LEVELenvallinfoGlobal fallback log level when a service-specific override is unset.
TELPHI_LOG_LEVELenvvoiceLOG_LEVELTelPhi conversation engine log level.
TELAPI_LOG_LEVELenvapiLOG_LEVELTelAPI HTTP/WebSocket service log level.
TELWEB_LOG_LEVELenvwebLOG_LEVELTelWeb server-side log level.
TASKER_LOG_LEVELenvopsLOG_LEVELTasker worker and scheduler log level.
SCALER_LOG_LEVELenvopsLOG_LEVELScaler decision-loop log level.
AUDIOPROC_LOG_LEVELenvvoiceLOG_LEVELAudioProc log level. Pino labels are mapped to Python logging levels.

Feature flags

NameSourceScopeDefaultDescription
FEATURE_AI_FLOW_BUILDERenvalltrueAI Flow Builder UI + runtime.
FEATURE_QA_SCORINGenvalltrueQA scoring jobs and tab.
FEATURE_AUDIO_PREPROCESSINGenvalltrueAudioProc container in the voice stack.
FEATURE_TTS_MEDIA_CACHEenvalltrueTTS cache lookups and writes.
FEATURE_REGISTRATIONenvallfalsePublic registration flow.
FEATURE_SUBSCRIPTIONSenvallfalseSubscription / billing guards.
FEATURE_SMSenvallfalseSMS dispatch through seven.io.
FEATURE_WEBRTCenvalltrueJanus + TURN WebRTC stack. When false, browser SDK session/runtime/endpoint TelAPI surfaces are not registered.
FEATURE_API_ACCESSenvalltrueExternal REST/SDK access and related TelWeb API surfaces. When false, deployments keep health/webhooks but hide API keys, API Server Config, and SDK session/runtime routes.
FEATURE_ADDITIONAL_PROVIDERSenvalltrueAdditional provider catalogue entries beyond the core set, including Gemini Live, Inworld, Grok, Pythia, and TOBi where available.
FEATURE_SUBSCRIPTION_MANAGEMENTenvallfalseSelf-service subscription UI, custom deals, and related billing administration surfaces.
FEATURE_ALGOLIA_ASK_AIenvallfalseOptional TelWeb Ask AI docs assistant.

SMS delivery

NameSourceScopeDefaultDescription
SMS_API_KEYSecrets ManageropsSingle provider credential, scoped to the Tasker SMS worker. Required only when FEATURE_SMS is enabled.

TelWeb public UI

NameSourceScopeDefaultDescription
LEGAL_BANNER_HTMLenvallTrusted operator-provided HTML shown as a legal notice on unauthenticated/public TelWeb pages. Takes precedence over LEGAL_BANNER_TEXT.
LEGAL_BANNER_TEXTenvallPlain-text legal notice shown on unauthenticated/public TelWeb pages when LEGAL_BANNER_HTML is unset.

Sessions and passwords

NameSourceScopeDefaultDescription
NEXTAUTH_URLenvallPublic TelWeb origin used for sign-in cookies and for password-expiry / usage-notification links. Set the same value on TelWeb, Tasker, TelAPI, and TelPhi.
SESSION_TIMEOUTenvall1800000Main session timeout used for server cookies and client idle logout.
MAX_CONCURRENT_SESSIONSenvall2 in prod; unlimited outside prodMaximum active sessions allowed for one user. Positive integers set a cap; 0 or negative disables the cap. Verify the Web bundle exposes this var before overriding.
SESSION_HEARTBEAT_TTLenvallSESSION_TIMEOUTTTL in milliseconds for session heartbeat records used by concurrent-session enforcement. Must stay between 60000 and SESSION_TIMEOUT.
LOGIN_MAX_ATTEMPTS_CREDENTIALSenvall5Failed credentials-login attempts before an account is locked. Set to 3 to enforce a three-attempt policy; verify the Web bundle exposes this var before overriding.
LOGIN_LOCKOUT_MINUTES_CREDENTIALSenvall30Credentials-login counting window and displayed lockout duration. Locked accounts stay locked until reset-password unlocks them.
LOGIN_MAX_ATTEMPTS_AZURE_ADenvall10Failed Microsoft Entra ID attempts before an account is locked when that provider is enabled.
LOGIN_LOCKOUT_MINUTES_AZURE_ADenvall60Microsoft Entra ID lockout window reported to users and audit events.
PASSWORD_MAX_AGE_DAYSenvall90Password age after which users must change their password. Set on TelWeb and Tasker (must match).
PASSWORD_WARNING_DAYSenvall10Days before password expiry when users see warnings and Tasker sends reminder emails. Set on TelWeb and Tasker (must match).
PLATFORM_ROLE_EMAIL_CODE_SECRETSecrets ManagerwebDedicated HMAC secret for Super Admin / Super Viewer role-change email codes. Required on TelWeb and Tasker in production (at least 32 characters). Local non-production processes may fall back to NEXTAUTH_SECRET.
PLATFORM_ROLE_EMAIL_TASKER_READYenvwebfalseSet true on TelWeb only after every Tasker replica can send PLATFORM_ROLE_CHANGE_CODE_EMAIL. Leave false during a rolling Tasker upgrade or role-change emails 412.

API credential jail

NameSourceScopeDefaultDescription
API_CREDENTIAL_JAIL_ENABLEDenvapitrueWhen true, TelAPI temporarily blocks API keys / webhook credentials after too many auth failures. See API keys → Credential retry jail.
API_CREDENTIAL_MAX_RETRIESenvapi5Failed auth attempts allowed inside API_CREDENTIAL_RETRY_WINDOW_MS before a credential is jailed.
API_CREDENTIAL_RETRY_WINDOW_MSenvapi300000Sliding window (ms) for counting credential auth failures (default 5 minutes).
API_CREDENTIAL_JAIL_MSenvapi300000How long a jailed credential stays blocked (default 5 minutes).
API_CREDENTIAL_JAIL_WEBHOOKS_ENABLEDenvapitrueApply the same jail to webhook credential failures.

Microsoft Entra SSO

See Microsoft Entra SSO.

NameSourceScopeDefaultDescription
AUTH_WITH_MICROSOFTenvwebfalseWhen true, TelWeb registers the Microsoft Entra (azure-ad) auth provider.
AUTH_MICROSOFT_ENTRA_ID_IDenvwebEntra application (client) ID for the Delphi app registration.
AUTH_MICROSOFT_ENTRA_ID_SECRETSecrets ManagerwebEntra client secret value for the Delphi app registration.
AUTH_MICROSOFT_ENTRA_ID_ISSUERenvwebOIDC issuer URL, typically https://login.microsoftonline.com/<directory-tenant-id>/v2.0
AUTH_WITH_CREDENTIALSenvwebtrueWhen false, password login is omitted server-side and from the login page.

Scaling and background jobs

NameSourceScopeDefaultDescription
SCALING_EVALUATION_INTERVAL_MSenvall30000How often the Scaler leader evaluates API and Voice scaling rules.
SCALING_DRAIN_TIMEOUT_MSenvall3600000Maximum time in milliseconds a Voice instance may drain active calls during scale-down.
SCALING_MAX_PARALLEL_BELOW_MIN_SCALE_UPSenvall8Maximum replacement instances the Scaler may provision in one evaluation when a group is below minInstances.
AUDIT_LOG_RETENTION_DAYSenvall180Days of AuditLog rows retained by the Tasker audit-log cleanup cron. Must be a positive integer.
STALE_SERVER_HEARTBEAT_SECONDSenvall3600How long a Voice/API host must stay silent after it has already heartbeated before Tasker STALE_SERVER_CLEANUP deletes its inventory row. Minimum 300. Scale-up placeholders are never deleted by this job.

Billing

NameSourceScopeDefaultDescription
STRIPE_SECRET_KEYSecrets ManagerprodStripe API key for checkout / subscriptions.
STRIPE_WEBHOOK_SECRETSecrets ManagerprodVerifies inbound Stripe webhook signatures.
BILLING_DEFAULT_PLANTelWeb · PlatformallDefault plan assigned on registration; mutable in TelWeb.

Removed or deprecated

v0.9.17

VariableRemoved fromReplacement
VONAGE_SMS_FROM_NAMEOps / TaskerFlow from (optional) or the platform default sender
VONAGE_SMS_API_KEYOps / TaskerSMS_API_KEY
VONAGE_SMS_API_SECRETOps / Taskerunused — seven.io uses a single API key

See SMS delivery.

v0.9.14-patch3

VariableReplaced in generated configsReplacement
DEBUG_LEVELTelPro / KamailioTELPRO_LOG_LEVEL
RTP_LOG_LEVELRTPEngineRTPENGINE_LOG_LEVEL
JANUS_LOG_LEVELJanus WebRTCWEBRTC_LOG_LEVEL
JANUS_DEBUG_LEVELJanus WebRTCWEBRTC_LOG_LEVEL
JANUS_JSON_LOG_LEVELJanus WebRTCWEBRTC_LOG_LEVEL

The lower-level variables may still appear in container internals, but generated service configuration now takes the Pino-aligned service variables above.

v0.9.13-patch3

VariableRemoved fromReplacement
RATE_LIMIT_MAXTelAPIAdmin Settings → API Server Config → API Rate Limit Max
RATE_LIMIT_WINDOW_MSTelAPIAdmin Settings → API Server Config → API Rate Limit Window (ms)

TelAPI also dropped the rateLimitPerApiKey database flag — limits are always per client IP by route tier.

See also