# convox environment. Copy to .env and fill in. Never commit .env. # Canonical reference: docs/tech-spec/configuration.md # --- core ------------------------------------------------------------- CONVOX_ENV=dev # dev | test | prod (test forces fakes) PUBLIC_BASE_URL=https://localhost:8443 EDGE_WSS_BASE=wss://localhost:8443 # leg URL = {base}/ws/leg?call=…&side=…&sample-rate=16000 # PAIRS_FILE=convox/config/pairs.yaml # optional override; defaults to the packaged file DEFAULT_PROVIDER=exotel # exotel | plivo LOG_LEVEL=INFO # --- storage (not on the hot path; FakeLeg runs without them) --------- DATABASE_URL=postgresql+asyncpg://convox:convox@localhost:5432/convox REDIS_URL=redis://localhost:6379/0 # --- AI vendors ------------------------------------------------------- # Sarvam: STT (Saarika/Saaras streaming), Mayura translate, Bulbul TTS, language id SARVAM_API_KEY= # ElevenLabs: Flash v2.5 TTS for Hindi and English targets ELEVENLABS_API_KEY= # Anthropic: LLM idiom repair on low-confidence translations (v2, off by default) ANTHROPIC_API_KEY= ANTHROPIC_MODEL=claude-haiku-4-5-20251001 LLM_REPAIR_ENABLED=false # Deepgram: optional English/Hinglish STT fallback. Leave empty to use Sarvam for all legs. DEEPGRAM_API_KEY= # --- telephony (fill when access lands) ------------------------------ EXOTEL_ACCOUNT_SID= EXOTEL_API_KEY= EXOTEL_API_TOKEN= EXOTEL_API_HOST=api.exotel.com # Singapore region; India: api.in.exotel.com EXOTEL_EXOPHONE= EXOTEL_FLOW_URL= EXOTEL_DIALIN_NUMBER= EXOTEL_WS_BASIC_USER= EXOTEL_WS_BASIC_PASS= EXOTEL_ALLOWED_IPS= PLIVO_AUTH_ID= PLIVO_AUTH_TOKEN= PLIVO_NUMBER= PLIVO_STREAM_CONTENT_TYPE=audio/x-l16;rate=16000 # fall back to audio/x-mulaw;rate=8000 # --- platform API and console ---------------------------------------- PLATFORM_API_KEYS=dev:change-me # dev only: platform_id:key pairs WEBHOOK_SIGNING_SECRET=change-me CONSOLE_PASSWORD=change-me # Umami analytics on the public pages; both empty = off UMAMI_WEBSITE_ID= UMAMI_SCRIPT_URL= # Lobby waitlist on the landing page: the project's public key and https:///v1/wl.js LOBBY_PROJECT_KEY= LOBBY_SCRIPT_URL= # --- fakes and dev switches ------------------------------------------ STT_IMPL=fake # real | fake MT_IMPL=fake TTS_IMPL=fake ENABLE_WEBRTC_LEG=true BENCH_REALTIME=false # --- per-call recording and logs (diagnosis; dev and test only) ------- # CALL_RECORDING: unset = on when CONVOX_ENV=dev, off otherwise. It records both # callers' audio: only with consent, never on in prod by default (DPDP). # CALL_RECORDING=true CALL_RECORDING_DIR=out/calls # out/calls/// LOG_FILE=logs/convox.log # JSON lines, rotating 10 MB x 5; empty = off # --- phrase / audio cache and next-turn prewarm (L10) ------------------ TTS_CACHE_MB=64 # in-memory TTS audio LRU, shared by every call TTS_CACHE_DIR=out/tts_cache # phrase-pack audio on disk; empty = memory only PHRASE_PREFILL=true # prefill the call's phrase pack in the background PHRASE_PREFILL_RPS=4 # at most this many MT/TTS requests per second NEXT_TURN_PREWARM=true # warm the listener's STT/TTS sockets at playback start