Webhook security
When a proxy or tunnel sits in front of the Gateway, the plugin reconstructs the public URL for signature verification. These options control which forwarded headers are trusted:string[]
Allowlist hosts from forwarding headers.
boolean
Trust forwarded headers without an allowlist.
string[]
Only trust forwarded headers when the request remote IP matches the list.
- Webhook replay protection is enabled for Twilio, Telnyx, and Plivo. Replayed valid webhook requests are acknowledged but skipped for side effects.
- Twilio conversation turns include a per-turn token in
<Gather>callbacks, so stale/replayed speech callbacks cannot satisfy a newer pending transcript turn. - Unauthenticated webhook requests are rejected before body reads when the provider’s required signature headers are missing.
- The voice-call webhook uses the shared pre-auth body-read profile (64 KB max body, 5-second read timeout) plus a per-key in-flight cap (8 concurrent requests per key by default) before signature verification.
CLI
voicecall commands
delegate to the Gateway-owned voice-call runtime so the CLI does not bind a
second webhook server. If no Gateway is reachable, the commands fall back to
a standalone CLI runtime.
latency reads persisted call records from SQLite by default. Use
--file <path> to read an existing custom JSONL log (with a basename other than
calls.jsonl) and --last <n> to limit
analysis to the last N records (default 200). Output includes min/max/avg,
p50, and p95 for turn latency and listen-wait times.
Agent tool
Tool name:voice_call.
The voice-call plugin ships a matching agent skill.
Gateway RPC
dtmfSequence is only valid with mode: "conversation"; notify-mode calls
should use voicecall.dtmf after the call exists if they need post-connect
digits.