VEXYL AI

Environment reference (2 of 2): brain, realtime, widget, API, behaviour, webhooks, operations

This page lists every environment variable the gateway reads. Set them in .env (or the container environment).

  • Default is the value used when the variable is unset. Booleans show as on or off; unset means the build has no default. Where a chapter states a default, this table follows the chapter.
  • <LANG> rows are families: replace <LANG> with the language code upper-cased and - changed to _, so ml-IN becomes ML_IN (for example GOOGLE_VOICE_ML_IN). A few families use the short code, such as _ML; the row says which.
  • Chapter links to the section that explains the setting.
  • The list is split in two: this is part 2 (brain, realtime, widget, API, behaviour, webhooks, operations); part 1 is Environment reference (1 of 2).

AI brain

Variable Default What it does Chapter
CUSTOM_LLM_AUTH_HEADER unset Header name that carries the token when the type is header. AI brain
CUSTOM_LLM_AUTH_TOKEN unset Token for bearer or header authentication. AI brain
CUSTOM_LLM_AUTH_TYPE none none, bearer or header. AI brain
CUSTOM_LLM_RESPONSE_FIELD unset Dot path to the reply text when your JSON is not a recognised shape. AI brain
CUSTOM_LLM_SESSION_FIELD unset Dot path to your session id in the reply. AI brain
CUSTOM_LLM_TIMEOUT 30000 Request timeout in milliseconds. AI brain
CUSTOM_LLM_URL unset Your HTTP endpoint. Required when the brain is custom. AI brain
LITEBOT_API_URL http://localhost:3000 Address of the LiteBot server. AI brain
LITEBOT_BOT_ID customer-service Bot that answers calls. AI brain
LITEBOT_ERROR_TEXT_GUARD on Never speak an error that LiteBot returns as the reply. AI brain
LITEBOT_ERROR_TEXT_PATTERN unset Regular expression for what counts as a relayed error. AI brain
LITEBOT_HANGUP_TOOLS hangupCall Comma-separated tool names that end the call. AI brain
LITEBOT_RECONCILE_COST on At hang-up, read LiteBot's session total and correct the per-call cost. AI brain
LITEBOT_RECONCILE_TIMEOUT_MS 1500 Hard cap on that lookup. AI brain
LITEBOT_SESSION_END on Tell LiteBot the session ended so its end-of-session hooks run at once. AI brain
LITEBOT_SESSION_END_TIMEOUT_MS 5000 Time allowed for that notification. AI brain
LITEBOT_STREAMING on Speak the answer sentence by sentence as it arrives. Off waits for the whole answer. AI brain
LITEBOT_TIMEOUT 30000 Request timeout in milliseconds. AI brain
LITEBOT_TRANSFER_TOOLS unset Comma-separated tool names that trigger a transfer. Empty relies on the bot's escalate flag. AI brain
LLM_FINAL_TIMEOUT_MESSAGE built-in English Spoken on hard AI failure. AI brain
LLM_FINAL_TIMEOUT_MESSAGE_ML built-in English Malayalam (ml-IN) variant; other languages use the base message. AI brain
LLM_PROVIDER required Always set litebot or custom. Unset is not a supported configuration. AI brain
LLM_TIMEOUT_MESSAGE built-in English Spoken when the AI is slow, while the gateway keeps waiting. AI brain
LLM_TIMEOUT_MESSAGE_ML built-in English Malayalam (ml-IN) variant; other languages use the base message. AI brain
LLM_TIMEOUT_RETRY_MESSAGE built-in English Spoken when the gateway retries a slow AI request. AI brain
LLM_TIMEOUT_RETRY_MESSAGE_ML built-in English Malayalam (ml-IN) variant; other languages use the base message. AI brain
TIMEOUT_MESSAGE_ENABLED off Speak the timeout message while a slow reply is still awaited. AI brain

Realtime mode

Variable Default What it does Chapter
BOT_REGISTRY_EXTERNAL_DIR unset Folder holding your bots, prompts and tools (config in the install directory). Realtime mode
BOT_REGISTRY_HOT_RELOAD on Reload bot files when they change. Realtime mode
DEFAULT_BOT_ID default Bot used when a session names none (realtime modes). Realtime mode
GATEWAY_COMMIT_ON_SILENCE off Commit the audio buffer when silence is detected. Realtime mode
GATEWAY_ENABLE_TRANSCRIPTION off Ask the service to transcribe the caller. Realtime mode
GATEWAY_INSTRUCTIONS You are a helpful AI assistant. Be concise and natural. System instructions for the session. Realtime mode
GATEWAY_LOG_TRANSCRIPTS off Write transcripts to the log. Realtime mode
GATEWAY_MAX_ERRORS 10 Errors tolerated before the call is dropped. Realtime mode
GATEWAY_MAX_TOKENS 4096 Most tokens per response. Realtime mode
GATEWAY_MODALITIES audio,text Output types requested. Realtime mode
GATEWAY_MODE off Bridge every call to a remote realtime service. Realtime mode
GATEWAY_TEMPERATURE 0.8 Sampling temperature. Realtime mode
GATEWAY_TRANSCRIPTION_MODEL whisper-1 Model used for that transcription. Realtime mode
GATEWAY_VAD_PREFIX_MS 300 Audio kept from before speech starts. Realtime mode
GATEWAY_VAD_SILENCE_MS 500 Silence that ends a turn. Realtime mode
GATEWAY_VAD_THRESHOLD 0.5 Speech detection sensitivity. Realtime mode
GATEWAY_VAD_TYPE server_vad Speech detection type. Realtime mode
GATEWAY_VOICE alloy Voice requested from the service. Realtime mode
GEMINI_LIVE_API_KEY unset Gemini Live key. Falls back to GEMINI_API_KEY. Realtime mode
GEMINI_LIVE_DRAIN_MS 15000 Ceiling for letting the goodbye finish at hang-up. Realtime mode
GEMINI_LIVE_DRAIN_STALL_MS 300 Abort the wait if queued audio stops shrinking for this long. Realtime mode
GEMINI_LIVE_INBOUND_GAIN 2.0 Gain applied to caller audio before it reaches the model. Realtime mode
GEMINI_LIVE_MODEL unset Model used when the bot configuration names none. Realtime mode
GEMINI_LIVE_PRICE_AUDIO_IN_PER_1M unset Audio input price, USD per million tokens, for cost tracking. Unset uses the built-in table. Realtime mode
GEMINI_LIVE_PRICE_AUDIO_OUT_PER_1M unset Audio output price, USD per million tokens. Unset uses the built-in table. Realtime mode
GEMINI_LIVE_PRICE_TEXT_IN_PER_1M unset Text input price, USD per million tokens. Unset uses the built-in table. Realtime mode
GEMINI_LIVE_PRICE_TEXT_OUT_PER_1M unset Text output price, USD per million tokens. Unset uses the built-in table. Realtime mode
GEMINI_LIVE_TRANSCRIPTS on Send caller and bot transcripts to logs and webhooks. Realtime mode
GEMINI_LIVE_VAD unset Empty uses the model's own speech detection; silero uses local detection. Realtime mode
GEMINI_LIVE_VOICE unset Voice used when the bot configuration names none. Realtime mode
LITEBOT_LIVE_API_KEY unset LiteBot server key used to authenticate. Realtime mode
LITEBOT_LIVE_BOT_ID unset Bot to start on LiteBot. Falls back to LITEBOT_BOT_ID. Realtime mode
LITEBOT_LIVE_CONTINUOUS_STREAM on Keep a steady audio stream to LiteBot even when the handset sends nothing during silence. Realtime mode
LITEBOT_LIVE_DRAIN_MS 15000 Ceiling for letting the goodbye finish when the session ends. Realtime mode
LITEBOT_LIVE_DRAIN_STALL_MS 300 Abort the wait if queued audio stops shrinking for this long. Realtime mode
LITEBOT_LIVE_FRAME_MS 20 Length in milliseconds of each audio frame sent to LiteBot. Realtime mode
LITEBOT_LIVE_INBOUND_GAIN unset Gain on caller audio. Falls back to GEMINI_LIVE_INBOUND_GAIN. Realtime mode
LITEBOT_LIVE_INBOUND_RATE 16000 Sample rate of caller audio; use 8000 if the bot is set up for 8 kHz. Realtime mode
LITEBOT_LIVE_KICKOFF on Ask the bot to greet first once the session is ready. Realtime mode
LITEBOT_LIVE_MAX_BACKLOG_FRAMES 25 Frames that may queue toward LiteBot before older ones are dropped. Realtime mode
LITEBOT_LIVE_PING_MS 30000 Keep-alive interval; 0 disables it. Realtime mode
LITEBOT_LIVE_TOKEN unset A JWT, as an alternative to the server key. Realtime mode
LITEBOT_LIVE_TRANSFER_TOOLS escalateToHuman Comma-separated tool names whose execution triggers a transfer. Realtime mode
LITEBOT_LIVE_URL unset Base address of LiteBot (ws:// or wss://, host and port); the gateway adds /voice. Required for LiteBot Live. Realtime mode
LLM_API_KEY unset Key sent to the remote realtime service in gateway mode. Realtime mode
LLM_WEBSOCKET_URL unset WebSocket address of the realtime service. Required in gateway mode. Realtime mode
REALTIME_PROVIDER unset Empty runs the speech-recognition, brain and voice pipeline; gemini-live or litebot selects a realtime mode. Realtime mode

Browser widget

Variable Default What it does Chapter
WEBSOCKET_AUDIO_ALLOWED_BOT_IDS unset Comma-separated bot ids a page may choose. Empty allows any. Browser widget
WEBSOCKET_AUDIO_ALLOWED_ORIGINS unset Comma-separated allowed origins. Empty allows any. Browser widget
WEBSOCKET_AUDIO_API_KEY unset When set, a page must send it as ?apiKey= or an x-api-key header. Unset means no authentication. Browser widget
WEBSOCKET_AUDIO_ENABLED off Start the browser widget endpoint. Browser widget
WEBSOCKET_AUDIO_GREETING_MAX_CHARS 500 Longest greeting text a page may send; longer text is cut. Browser widget
WEBSOCKET_AUDIO_HOST 0.0.0.0 Address to listen on. Use 127.0.0.1 when a proxy on the same host fronts it. Browser widget
WEBSOCKET_AUDIO_IDLE_TIMEOUT_MS 300000 Close a session with no audio or control messages for this long. 0 disables. Browser widget
WEBSOCKET_AUDIO_MAX_PAYLOAD_BYTES 1048576 Largest single message accepted, in bytes. Browser widget
WEBSOCKET_AUDIO_MAX_PER_IP 5 Simultaneous connections allowed from one client address. Browser widget
WEBSOCKET_AUDIO_MAX_SESSION_MS 3600000 Hard limit on one session's length. 0 disables. Browser widget
WEBSOCKET_AUDIO_PORT 8082 Port the endpoint listens on. Browser widget
WS_AUDIO_TTS_STREAMING on Stream Google Chirp3-HD replies sentence by sentence to the browser. Off sends one message per sentence. Browser widget

HTTP API and outbound

Variable Default What it does Chapter
HTTP_ALLOWED_IPS unset Comma-separated IPs and IPv4 CIDR blocks allowed to call the API. Unset turns the whitelist off. HTTP API
HTTP_HOST 127.0.0.1 Address the API listens on. HTTP API
HTTP_PORT 8080 Port the HTTP API listens on. The fallback collides with AUDIOSOCKET_PORT, so set it explicitly (this manual uses 8081). HTTP API
HTTP_TRUST_PROXY off Read the client address from X-Forwarded-For. Set true only behind a reverse proxy. Browser widget
OUTBOUND_DEFAULT_GREETING_<LANG> built-in text Greeting text for dynamic outbound greetings in one language, for example OUTBOUND_DEFAULT_GREETING_ML_IN. Conversation behaviour
OUTBOUND_ENABLED off Open the outbound-call routes; otherwise they return 403. HTTP API
OUTBOUND_GREETING_MODE static Default greeting mode for outbound calls: static, dynamic or hybrid. HTTP API
OUTBOUND_ORIGINATE_ENDPOINT unset Your webhook that places the call. HTTP API
OUTBOUND_STATIC_AUDIO_<LANG> unset WAV played in static and hybrid outbound mode for one language, for example OUTBOUND_STATIC_AUDIO_ML_IN. Conversation behaviour
OUTBOUND_TIMEOUT 10000 Milliseconds to wait for that webhook. HTTP API

Conversation behaviour

Variable Default What it does Chapter
BARGE_IN_DELAY 200 Milliseconds at the start of playback during which interruption is ignored. Conversation behaviour
BARGE_IN_ECHO_GUARD on Ignore the bot's own voice leaking back from the handset. Conversation behaviour
BARGE_IN_ECHO_LOG on Log each ignored echo transcript. Conversation behaviour
BARGE_IN_ECHO_MARGIN_DB 8 How many dB louder than the measured echo the caller must be. Conversation behaviour
BARGE_IN_ECHO_MAX_THRESHOLD 24000 Upper limit for the echo-adjusted volume threshold. Conversation behaviour
BARGE_IN_ECHO_MAX_WORDS 3 Longest transcript treated as echo. Longer ones, doubled words and yes or no words count as the caller. Conversation behaviour
BARGE_IN_ECHO_TAIL_MS 800 After playback ends, transcripts that are the bot's own words are dropped for this long. Conversation behaviour
BARGE_IN_ECHO_WARMUP_PACKETS 10 Audio packets at the start of playback in which interruption is ignored. Conversation behaviour
BARGE_IN_ECHO_WINDOW_MS 4000 Window over which the echo level is measured, sampled only while the bot plays. Conversation behaviour
BARGE_IN_FALSE_TIMEOUT_MS 1500 How long to wait for words before resuming. 0 disables holding. Conversation behaviour
BARGE_IN_MAX_RESUMES 2 Resumes per turn before the tail is discarded. Conversation behaviour
BARGE_IN_MIN_WORDS 0 Words needed to confirm an interruption. 0 means any transcript that passes the gate confirms. Conversation behaviour
BARGE_IN_RESET_HYSTERESIS 5 Quiet frames needed before a new interruption can be counted. Conversation behaviour
BARGE_IN_RESUME on Hold and resume after a false interruption. Off discards the unplayed tail every time. Conversation behaviour
BARGE_IN_THRESHOLD 500 Volume threshold used when the detector is off. Conversation behaviour
BARGE_IN_USE_VAD on Decide interruptions with the speech detector, not raw volume. Conversation behaviour
BARGE_IN_VAD_THRESHOLD 0.5 Detector confidence needed to count as speech. Conversation behaviour
ENABLE_BARGE_IN off Let callers interrupt the bot. Conversation behaviour
ENABLE_INCOMPLETE_TURN_DETECTION off Honour the wait-for-more and give-time flags from the brain. Conversation behaviour
GOODBYE_MESSAGE unset WAV played at a bot-initiated hang-up when the brain gave no closing words. Conversation behaviour
GOODBYE_MESSAGE_TEXT_EN Thank you for calling. Goodbye! Spoken goodbye text when no WAV exists. Conversation behaviour
GOODBYE_MESSAGE_TEXT_<LANG> unset Spoken goodbye text for one language, short code (EN, ML, HI). Conversation behaviour
GOODBYE_MESSAGE_<LANG> unset Goodbye WAV for one language; the short code is used, for example GOODBYE_MESSAGE_ML. Beats GOODBYE_MESSAGE. Conversation behaviour
LLM_HANGUP_DRAIN_MAX_MS 15000 Longest the gateway waits for the goodbye audio to play out. Conversation behaviour
MAX_SILENCE_DURATION 1000 Milliseconds of silence before the caller's speech is processed. Conversation behaviour
MIN_SPEECH_DURATION 200 Minimum milliseconds of speech before processing. Conversation behaviour
MIN_UTTERANCE_LENGTH 2 Shortest utterance, in characters, kept; shorter ones are treated as noise. Conversation behaviour
NOISE_FLOOR_CALIBRATION_MS 1000 Listening-only period at the start of the call. Conversation behaviour
NOISE_FLOOR_ENABLED on Learn each call's background level and set the interruption threshold from it. Conversation behaviour
NOISE_FLOOR_LOG on Log the learned level. Conversation behaviour
NOISE_FLOOR_LOG_INTERVAL_MS 5000 Interval between those log lines. Conversation behaviour
NOISE_FLOOR_MARGIN_DB 6 How far above the quiet level the threshold sits. Conversation behaviour
NOISE_FLOOR_MAX_THRESHOLD 2000 Highest threshold allowed. Conversation behaviour
NOISE_FLOOR_MIN_THRESHOLD 200 Lowest threshold allowed. Conversation behaviour
NOISE_FLOOR_ROLLING_WINDOW_MS 10000 Window used to track the quiet level afterwards. Conversation behaviour
PIPELINE_INBOUND_GAIN 2.5 Gain applied to caller audio before recognition, speech detection and interruption checks. Conversation behaviour
PROCESSING_SOUND_DIR unset Folder holding filler files. Conversation behaviour
PROCESSING_SOUND_ENABLED off Play a filler sound while the AI works. Conversation behaviour
PROCESSING_SOUND_FILE unset Your own filler file, absolute or relative to the install directory. Conversation behaviour
PROCESSING_SOUND_HARD_CUT on Cut the filler the instant speech is ready. Off lets the phrase finish. Conversation behaviour
PROCESSING_SOUND_LOOP off Repeat the sound while waiting. Conversation behaviour
PROCESSING_SOUND_LOOP_DELAY 2000 Milliseconds between repeats. Conversation behaviour
PROCESSING_SOUND_START_DELAY 2000 Milliseconds of waiting before the sound starts. Conversation behaviour
PROCESSING_SOUND_TRANSITION_DELAY unset Pause in milliseconds after the filler before speech starts. Conversation behaviour
PROCESSING_SOUND_TYPE chime Built-in filler sound to use. Conversation behaviour
PROCESSING_SOUND_VOLUME 0.3 Playback volume. Conversation behaviour
REDEMPTION_MS 1400 Wait after the last transcript before the turn is processed. Conversation behaviour
TRANSFER_ERROR_MESSAGE unset WAV played when the transfer fails or is disabled. Conversation behaviour
TRANSFER_ERROR_MESSAGE_<LANG> unset Transfer-failure WAV for one language, short code (TRANSFER_ERROR_MESSAGE_ML). Conversation behaviour
TRANSFER_ERROR_TEXT_EN I am sorry, I was unable to transfer you. Please try calling again. Spoken text when no error WAV exists. Conversation behaviour
TRANSFER_ERROR_TEXT_<LANG> unset Transfer-failure text for one language, short code (EN, ML). Conversation behaviour
TRANSFER_MESSAGE unset WAV played before transferring. Conversation behaviour
TRANSFER_MESSAGE_TEXT_EN Please hold while I transfer you to a human agent. Spoken text when no WAV exists. Conversation behaviour
TRANSFER_MESSAGE_TEXT_<LANG> unset Pre-transfer text for one language, short code (EN, ML). Conversation behaviour
TRANSFER_MESSAGE_<LANG> unset Pre-transfer WAV for one language, short code (TRANSFER_MESSAGE_ML). Conversation behaviour
UTTERANCE_CHECK_INTERVAL 500 Milliseconds between checks that the system is idle. Conversation behaviour
UTTERANCE_COMBINATION_WINDOW 10000 Transcripts arriving within this window are combined. Conversation behaviour
UTTERANCE_MAX_WAIT 30000 Longest wait for the system to become idle. Conversation behaviour
UTTERANCE_TIMEOUT 3000 Milliseconds to wait for more speech before a turn is closed. Conversation behaviour
UTTERANCE_WINDOW_SIZE 5 Most utterances buffered, to bound memory. Conversation behaviour
VAD_BUFFER_INTERVAL 200 Milliseconds of audio between detector runs. Conversation behaviour
VAD_MAX_SPEECH_MS 6000 Longest single speech segment before it is cut. Conversation behaviour
VAD_MIN_SPEECH_FRAMES 4 Speech frames the detector needs to open a segment. Conversation behaviour
VAD_MIN_SPEECH_GATE_ADAPTIVE on Discard segments that are both short and quiet. Conversation behaviour
VAD_MIN_SPEECH_GATE_DURATION_MS 500 Segments shorter than this are candidates for discarding. Conversation behaviour
VAD_MIN_SPEECH_GATE_ENERGY_MULT 2.0 A candidate is discarded if its peak is below the noise floor times this value. Conversation behaviour
VAD_MODEL v5 Speech detector model version. Conversation behaviour
VAD_NEGATIVE_THRESHOLD 0.35 Confidence below which speech stops. Must be lower than the start value. Conversation behaviour
VAD_POSITIVE_THRESHOLD 0.5 Confidence that starts speech. Conversation behaviour
VAD_PRE_SPEECH_FRAMES 1 Frames kept from before speech starts. Conversation behaviour
VAD_REDEMPTION_FRAMES 8 Quiet frames tolerated before speech is considered ended. Conversation behaviour

Webhooks and billing

Variable Default What it does Chapter
BILLING_CDR_AUTH_HEADER Authorization Header that carries the token. Webhooks and billing
BILLING_CDR_AUTH_SCHEME Bearer Prefix before the token. Empty sends a bare token. Webhooks and billing
BILLING_CDR_AUTH_TOKEN unset Token sent with each delivery. Webhooks and billing
BILLING_CDR_DIR ./cdr Store root, relative to the working directory. Webhooks and billing
BILLING_CDR_ENABLED off Master switch for billing records. Webhooks and billing
BILLING_CDR_KEEP_DELIVERED off Archive delivered records in sent/. Webhooks and billing
BILLING_CDR_MAX_ATTEMPTS 10 Attempts before a record is moved to dead letters. Webhooks and billing
BILLING_CDR_SECRET unset Signing key, kept separate from WEBHOOK_SECRET. Webhooks and billing
BILLING_CDR_SWEEP_MS 60000 How often the gateway scans for records due a retry. Webhooks and billing
BILLING_CDR_TIMEOUT_MS 5000 Milliseconds to wait for your endpoint. Webhooks and billing
BILLING_CDR_URL unset Billing endpoint. Empty means store only. Webhooks and billing
COST_RATES_FILE unset Path to your rates file. Empty reads config/pricing.json. Webhooks and billing
COST_TRACKING_ENABLED on Compute a cost for each call. Webhooks and billing
COST_USD_INR 87 Conversion rate from US dollar list prices to rupees. Webhooks and billing
STATUS_WEBHOOK_MAX_PENDING 500 Status-update deliveries allowed in flight before new ones are skipped. Webhooks and billing
WEBHOOK_AUTH_HEADER Authorization Header that carries the token. Webhooks and billing
WEBHOOK_AUTH_SCHEME Bearer Prefix before the token. Empty sends a bare token. Webhooks and billing
WEBHOOK_AUTH_TOKEN unset Token sent with every request. Empty means no auth header. Webhooks and billing
WEBHOOK_MAX_PENDING 200 Deliveries allowed in flight; beyond this new events are skipped. Webhooks and billing
WEBHOOK_METHOD POST HTTP method used for delivery. Webhooks and billing
WEBHOOK_SECRET unset Signing key. Empty means requests are unsigned. Webhooks and billing
WEBHOOK_SSRF_CHECK on Refuse a URL that resolves to a private or loopback address. Set false for a receiver on your local network. Webhooks and billing
WEBHOOK_TIMEOUT 5000 Milliseconds to wait for your endpoint. Webhooks and billing
WEBHOOK_TOOL_DETAILS off Include the tool-call list in the call-ended payload. Webhooks and billing
WEBHOOK_TOOL_MAX_BYTES 2048 Cap per field; longer values are cut and flagged. Webhooks and billing
WEBHOOK_TOOL_MAX_ENTRIES 50 Tool entries kept per call; the rest are counted. Webhooks and billing
WEBHOOK_TOOL_PAYLOADS off Also include tool arguments and results, which may hold caller personal data. Webhooks and billing
WEBHOOK_URL unset Your lifecycle endpoint. Empty disables webhooks. Webhooks and billing

Operations and tuning

Variable Default What it does Chapter
LOG_LATENCY off Log a per-turn response-time line and write logs/performance.csv. Operations
LOOP_LAG_WARN_MS 40 Log a stall warning when the process falls this many milliseconds behind. Operations
LOOP_PROFILE_DIR /tmp Folder where those profiles are written. Operations
LOOP_PROFILE_MS 0 Record a CPU profile of this many milliseconds on demand to help attribute stalls. 0 disables. Operations
NATIVE_RESAMPLER_AUTO_DISABLE_ON_ERROR_RATE 0.01 Error rate, 0 to 1, at which the built-in resampler switches itself off. Operations
RTP_PACER_LEAD_MS 350 Audio cushion for outbound SIP audio. Operations
RTP_PACER_WORKER on Run the audio pacer in its own thread. Off paces on the main thread. Operations
TX_CATCHUP_SLACK_MS 200 How far behind schedule a sender may fall before it catches up. Leave it. Operations
USE_NATIVE_RESAMPLER false false uses FFmpeg only; true uses the built-in resampler with fallback; compare runs both. Operations

Diagnostic and test-only

These switches exist for support and testing. Leave them unset unless Vexyl asks.

Variable What it does
GATEWAY_LOG_RATE_LIMITS Log the realtime service's rate-limit updates.
GEMINI_LIVE_AUDIO_DEBUG Log Gemini Live audio details for diagnosis.
RECONCILE_LIVE_SESSION Test switch for the end-of-call cost lookup.
TEST_GROQ_ON_START Run a Groq speech-recognition self-test at start-up.
TEST_ITERATIONS Repeat count for the start-up self-tests.
TEST_LANGUAGE Language used by the start-up self-tests.
TEST_OPENAI_STT_ON_START Run an OpenAI speech-recognition self-test at start-up.
TEST_STT_ON_START Run a speech-recognition self-test at start-up.
TEST_TTS_ON_START Run a voice self-test at start-up.