.env file works with
node --env-file=.env). Numeric variables fail loudly at startup if set to a non-number, so a typo
stops the process with a clear message rather than silently misbehaving.
Required
Common options
There is no chat lane and no chat variable. The bridge serves the calling WebSocket,
/healthz and /metrics - nothing else. Leave the identity’s Agent messages URL empty.Vision (the look tool)
Give the agent a client tool named look to let it see the caller’s camera or screen-share.
The bridge answers it two ways:
Without a vision endpoint,
look falls back to uploading the frame to ElevenLabs (multimodal), which
is only allowed when Teams recording is active. For a fully custom vision hook in code, see the
library API.
Region and residency
Advanced
HMAC_FRESHNESS_MS (default 60000), MAX_CONNECTIONS (64), MAX_CONNECTIONS_PER_IP (8),
PRE_START_TIMEOUT_MS (10000), LOG_LEVEL (info), and LOG_TRANSCRIPTS (false; still gated on
Teams recording being active). Full reference:
configuration-reference.
TLS
TLS_CERT_PATH and TLS_KEY_PATH are optional and go together. Set both and the bridge serves
wss:// natively; leave them unset and it serves plain WebSocket and must sit behind a TLS terminator
(tunnel, ingress, or load balancer). StandIn requires wss:// in any real deployment, so a bridge on
a tunnel needs no cert of its own.
Privacy
Caller audio and any vision descriptions transit ElevenLabs’ cloud and are retained per the agent’s settings. For deployments that must not retain caller data with a third party, enable the agent’s zero-retention setting and disclose the AI on the call viaEL_FIRST_MESSAGE. See
Governors and privacy.