Each decision unblocks a specific engineering track. Recommendations are provided — confirm or override via the input form.
Zero external dependencies. Can execute immediately.
Qwen3 emits empty <think>\n\n</think> tags even with /no_think. TTS ignores them but they appear in logs.
re.sub(r'<think>.*?</think>', '', text, re.DOTALL)Redis on port 6379 has no authentication. Exposed to internet via port forwarding.
REDIS_PASSWORD to .envredis-server --requirepass $REDIS_PASSWORDLIVEKIT_REDIS_ADDRESSsip-config.yaml redis block10 ports exposed to WAN that should be LAN-only. UFW can block them immediately — no domain or TLS needed.
Gate 1 unlocks client demos. Gate 2 unlocks onboarding. Gate 3 unlocks multi-client scale.
Each gate must clear before the next phase activates. Items map to Current Priorities (CP), Client Input (CI), and Deferred (D) items.
Each activates when its blocking dependency resolves. No premature engineering.
| Item | Description | Blocked By | Activation Gate |
|---|---|---|---|
| D1 | Caddy Reverse Proxy + TLS Automatic HTTPS via Let’s Encrypt. 2–4 hours. |
CI1 Domain name | Domain purchased + DNS pointing to server |
| D2 | Full Firewall Lockdown Twilio IP whitelist for SIP/RTP. 1–2 hours. |
D1 Caddy running | Caddy proxies LiveKit WS, can restrict 7880-7882 |
| D3 | Inference Endpoint Auth API keys on vLLM, Whisper, TTS. Defense-in-depth. |
CP3 Partial firewall | Firewall blocks WAN; auth adds second layer |
| D4 | Rate Limiting Caddy rate_limit directive. DoS protection. |
D1 Caddy | Caddy config deployed |
| D5 | Multi-Tenant Architecture Number → config lookup via Redis/DB. 1–2 weeks. |
CI4 Timing decision | 5+ clients on single-tenant becomes painful |
| D6 | HIPAA Compliance BAA, encrypted recording, audit logs. 2–4 weeks. |
CI6 + D2 | Healthcare prospect in pipeline + security hardened |
| D7 | Streaming STT Partial transcripts. 100–200ms savings. |
CI5 Investment decision | Post-launch call data shows STT is the bottleneck |
| D8 | Sub-800ms Latency Target Competitive parity with Vapi (~465ms). |
D7 Streaming STT | Streaming STT + TTS optimization combined |
| Port | Service | Current | After Gate 1 | After Gate 2 |
|---|---|---|---|---|
22 | SSH | WAN | WAN | WAN |
443 | Caddy | — | WAN | WAN |
5060 | SIP | WAN | WAN | Twilio IPs |
7880-7882 | LiveKit | WAN | WAN | LAN only |
8000-8002 | vLLM | WAN | LAN only | LAN only |
8014-8015 | STT/TTS | WAN | LAN only | LAN only |
4000 | LiteLLM | WAN | LAN only | LAN only |
6379 | Redis | WAN | LAN only | LAN only |
10000-20000 | RTP | WAN | WAN | Twilio IPs |
| Resource | ID |
|---|---|
| Twilio Account SID | AC393a01f53432abcbd92641f0ae2ee333 |
| Twilio Trunk SID | TK9106b20a407834aa9395b2b2a4d76d42 |
| Phone Number | +1 (833) 635-0426 |
| LiveKit SIP Trunk | ST_omB2qeoJoogX |
| LiveKit Dispatch Rule | SDR_D3n8UmoR4iQM |
| Server LAN | 192.168.1.76 |
| Server WAN | 75.27.237.219 |