The voice-agent reads the following at startup
(integrations/voice/agent/config.go, LoadConfig). Each one's
source is locked in dev:
Var
Source in dev
Required?
LIVEKIT_URL
Hardcoded ws://livekit:7880 in docker-compose.polyphon.yml (service-to-service)
yes
LIVEKIT_API_KEY
Hardcoded devkey in compose
yes
LIVEKIT_API_SECRET
Hardcoded secret in compose
yes
MEMQL_GRPC_ADDR
Hardcoded bff:50051 in compose
yes
MEMQL_DEEPGRAM_API_KEY
.env.local via env_file: (genesis-sealed in genesis.znas)
yes
VOICE_AGENT_TOKEN
Shell env at compose-up time -- minted by scripts/dev/refresh.sh step 4 (see #184)
yes
MEMQL_AVATAR_VENDOR
Compose default anam; overridable via shell env
no
ANAM_API_KEY
.env.local via env_file:
required when MEMQL_AVATAR_VENDOR=anam
SIMLI_API_KEY
.env.local via env_file:
required when MEMQL_AVATAR_VENDOR=simli
LIVEKIT_PUBLIC_URL
.env.local, rewritten by lib_refresh_ngrok to a fresh ngrok tunnel
required for the avatar; audio-only works without it
If the token check (step 2 above) fails, the mint-and-inject step in
dev-refresh didn't land. Recover with the manual mint-and-recreate in
the failure-modes table below.
If the avatar fails to render but audio works, LIVEKIT_PUBLIC_URL
is the usual cause -- check ngrok is installed and authed
(scripts/dev/install-deps.sh surfaces a hint).