-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path.env.example
More file actions
99 lines (84 loc) · 5.84 KB
/
.env.example
File metadata and controls
99 lines (84 loc) · 5.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# ============================================================================
# didww-voice-agent — environment configuration
# ============================================================================
# Copy to .env and fill in. .env is git-ignored — never commit real secrets.
# Consumed by server/agent.js, server/webhook.js, server/echo-test.js and
# server/call-forward.js.
#
# The DEMO section is all you need for a working AI voice agent: a DIDWW
# trunk, a Gemini API key and a drachtio secret. Everything under ADVANCED
# is optional. See docs/QUICKSTART.md.
# ============================================================================
# ─────────────────────────────────────────────────────────────────────────
# DEMO — minimum required to answer a call with the built-in demo agent
# ─────────────────────────────────────────────────────────────────────────
# Public IPv4 of this server — used in SIP/SDP. REQUIRED.
PUBLIC_IP=
# Google Gemini API key — https://aistudio.google.com/apikey. REQUIRED.
GEMINI_API_KEY=
# drachtio admin secret — MUST match <admin secret="..."> in
# provision/drachtio.conf.xml. Generate one: openssl rand -hex 24
DRACHTIO_SECRET=
# ── SIP trunk (DIDWW two-way trunk) ──
# DIDWW two-way trunks authenticate by IP: register this server's PUBLIC_IP in
# the DIDWW panel, leave SIP_USER/SIP_PASSWORD blank, and inbound calls arrive
# with no registration. SIP_DOMAIN is DIDWW's outbound proxy (used for outbound
# calls). For a registration-based trunk instead, set all three. See
# docs/DIDWW-SETUP.md.
SIP_DOMAIN= # DIDWW outbound proxy host (outbound calls)
SIP_USER= # leave blank for DIDWW IP-authenticated trunks
SIP_PASSWORD=
CLI= # outbound caller ID — a DIDWW-owned DID, E.164 digits
# ─────────────────────────────────────────────────────────────────────────
# Demo agent — persona and locale (safe defaults; tune to taste)
# ─────────────────────────────────────────────────────────────────────────
ASSISTANT_NAME=Aria # the demo assistant's name
DEMO_LANGUAGE_CODE=en-US # demo agent language (BCP-47)
AGENT_TIMEZONE=UTC # IANA tz for the "current time" given to the model
DIDWW_DEFAULT_COUNTRY_CODE=1 # country code prepended to national-format caller IDs
# GEMINI_MODEL=gemini-3.1-flash-live-preview # inbound 1:1 Live model
# GEMINI_VOICE=Aoede # Gemini prebuilt voice
# GEMINI_LANGUAGE_CODE=en-US # overrides DEMO_LANGUAGE_CODE if set
# ── drachtio (SIP server — runs in Docker; see provision/) ──
DRACHTIO_HOST=127.0.0.1
DRACHTIO_PORT=9022
# ── rtpengine (media — runs in Docker) ──
# Required for outbound calls, conferences, WhatsApp, and inbound calls that
# need transcoding. A PCMU/L16 inbound-only demo can run without it.
RTPENGINE_NG_HOST=127.0.0.1
RTPENGINE_NG_PORT=22222
# ── agent RTP port range + call limits ──
RTP_PORT_MIN=10000
RTP_PORT_MAX=20000
MAX_CONCURRENT_CALLS=20
MAX_CALL_SECONDS=600 # hard per-call cap — guards against runaway model cost
VAD_RMS_THRESHOLD=500
ANNOUNCE_QUEUE_MAX=3
# DEBUG_MEDIA=1 # per-leg RTP / jitter-buffer instrumentation
# ─────────────────────────────────────────────────────────────────────────
# Live transcription (Deepgram) — OPTIONAL
# Without a token the caller transcript falls back to Gemini's own ASR.
# ─────────────────────────────────────────────────────────────────────────
DEEPGRAM_TOKEN=
# DEEPGRAM_MODEL=nova-3
# DEEPGRAM_LANGUAGE=en # fallback when auto-detect is off / inconclusive
# DEEPGRAM_AUTO_DETECT=true # detect caller language from the first ~2.5s
# DEEPGRAM_DETECT_MS=2500
# ─────────────────────────────────────────────────────────────────────────
# ADVANCED — external config service + WhatsApp Business Calling (WABA)
# Not needed for the demo. See docs/ADVANCED.md.
# ─────────────────────────────────────────────────────────────────────────
# External per-caller config service. When set, agent.js fetches the system
# prompt + tools from it instead of using server/demo-config.js.
INTERNAL_VOICE_URL=
INTERNAL_VOICE_TOKEN= # bearer token shared with the control app
# HMAC secret for control-app → agent /v1/calls/* requests (outbound, announce).
VOICE_VPS_ANNOUNCE_SECRET=
# WhatsApp/WABA bridge (server/webhook.js).
WA_PROD_IPS= # comma-separated IP allow-list for /api/waba/*
WEBHOOK_PORT=3000
WEBHOOK_BIND=127.0.0.1
AGENT_CONTROL_URL=http://127.0.0.1:3002
# GEMINI_CONFERENCE_MODEL=gemini-2.5-flash-native-audio-preview-12-2025
# ── call-forward utility (server/call-forward.js) ──
FORWARD_TO= # every inbound call is forwarded here (E.164)