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-cartesia.ai host or a zero HMAC_FRESHNESS_MS. The agent itself (LLM, tools, conversation logic) is configured where it lives: in your Line deployment on Cartesia. The variables here configure the transport and optional per-call overrides.

Required

Per-call overrides

Your Line agent’s own deployment config is the default:

Call governor

Cartesia knows nothing about your budget - enforce time limits here:
The Line wire has no “say this exact text” message. Without a TTS model + voice, the governor goodbye is a goodbye_request custom event your Line agent code may speak - silent otherwise. Arming MAX_CALL_MINUTES without TTS logs a startup warning for exactly this reason.

Server and transport

The bridge exposes GET /healthz (liveness) and GET /metrics (Prometheus text format: calls, duration histogram, rejects, relay/drop counters, agent errors) on the same port - keep it private to your network or scrape through your ingress.
Audio formats are not configurable: the wire is PCM 16 kHz by contract and the Line stream is pinned to pcm_16000 - the bridge relays base64 payloads verbatim. The full environment reference, wire protocol, and library API live on the project site.