Skip to main content
The bridge is configured entirely by environment variables (a .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 - the same goes for a non-deepgram.com host, a malformed VISION_API_URL, or a non-https think endpoint.

Required

The agent

There is no dashboard - these variables define the agent:

BYO-LLM endpoint

Deepgram-managed open_ai and anthropic work with just a model name. Third-party providers require an endpoint that Deepgram dials itself:

Common options

Vision (the look tool)

The look tool is registered automatically. The Voice Agent API is audio-only, so the bridge answers it via your endpoint:

Custom tools

Function tools your own code executes (lookup_order, transfer_call, …) are registered programmatically and run in-process, inside your trust boundary - see Extending the agent’s tools and the example.

Region and residency

Advanced

HMAC_FRESHNESS_MS (default 60000), MAX_CONNECTIONS (64), MAX_CONNECTIONS_PER_IP (= total cap), PRE_START_TIMEOUT_MS (10000), WORKER_IDLE_TIMEOUT_MS (90000), TLS_CERT_PATH / TLS_KEY_PATH (native wss://), LOG_LEVEL (info), and LOG_TRANSCRIPTS (false; still gated on Teams recording being active). The bridge also exposes GET /metrics (Prometheus text, including a call-duration histogram). Full reference: configuration-reference.

Privacy

Caller audio, transcripts, and any vision descriptions transit Deepgram’s cloud (and the configured think provider) per your Deepgram data settings. Keep LOG_TRANSCRIPTS off and vision unconfigured if not needed, use the regional hosts for in-region residency, and disclose the AI on the call via DEEPGRAM_GREETING. See Governors and privacy.

Docs site

Installation

Source