---
created: 2026-06-23T01:56
updated: 2026-06-23T02:56
---
---
created: 2026-06-23T02:56
updated: 2026-06-23T02:56
---

## Voice Switchboard Built (2026-06-23, ~2-3am)

**Goal:** Route inbound/outbound phone calls to Link + agent network (Path B switchboard).
Brandon: "call and say hey can I speak with link, or route by question type to best agent."

### Architecture (WORKING, tested end-to-end)
```
Caller -> Twilio (+12132799996 "Atlas LA") -> Dograh (QNAP) -> litellm -> voice-router (Mac mini :3500) -> dario/Claude Opus
```
- **Dograh** = self-hosted OSS voice-AI platform on QNAP (kirby, 192.168.7.5). Containers: dograh-api/ui/postgres/redis/minio, litellm, honcho, tensorzero. Owns telephony+STT(deepgram)+TTS(elevenlabs voice iP95p4xoKVk53GoZ742B).
  - dograh-api.disorganized.net (public 38.172.82.24, Traefik). OSS local-auth. User brandon@disorganized.net, org 1, workflow 1 "Atlas Phone".
  - Inbound webhook: Twilio voice_url -> https://dograh-api.disorganized.net/api/v1/telephony/inbound/run (UNTOUCHED, still works)
- **litellm** config: /share/appconfigs/litellm/config.yaml (QNAP). Host port 192.168.7.5:14000, internal http://litellm:4000. master_key: jacobs-fright-aim-VITAMINS
  - Pointed existing model `atlas-phone-default` -> voice-router (so Dograh needed ZERO config change)
- **voice-router** = /Users/brandon/.openclaw/scripts/voice-router.mjs (zero-dep Node, OpenAI-compatible /v1/chat/completions)
  - LaunchAgent: ai.openclaw.voice-router (port 3500), logs ~/.openclaw/logs/voice-router.log
  - Detects "speak with X" + topic routing. Agents: link(default),pantry,ledger,anchor,shepherd,muse
  - Calls dario Claude endpoint http://127.0.0.1:3456/v1/messages (key dario-lan-54f04da29c68a316)
  - Add new agent = edit AGENTS{} in router, no other change.

### 1Password (FIXED the popup problem)
- Service account token (working): saved ~/.openclaw/op-token (mode 600), also in gateway plist env
- Hardened ~/.openclaw/scripts/op-secret.sh: self-loads token from file, unsets desktop-integration vars -> NO desktop popups possible
- Aliases: twilio-account-sid, twilio-auth-token, twilio-api-key/secret, twilio-number, elevenlabs-key
- Twilio account: AC11e8e075b22f82f162f160cb39d97ca6 (PhoneClaw). 1Password "login.twilio.com" Live:Account SID field is MISLABELED (f338... wrong); real SID found via API.

### Cleanup done
- Disabled voice-call plugin (Dograh owns telephony; my earlier Telnyx build was wrong path)
- Deleted stray Telnyx Call Control app I'd created
- Removed Twilio/ElevenLabs env from gateway plist (Dograh has own creds)
- QNAP SSH: admin@192.168.7.5 with ~/.ssh/id_link key. docker at /share/ZFS530_DATA/.qpkg/container-station/bin/docker

### Enabled hooks (hooks.enabled, token ~/.openclaw/voice-hook-token) - async runId only, NOT used by router (router uses dario directly for sync low-latency)

### TODO / not yet done
- Outbound calls via Dograh API (auth method not figured out; inbound fully works)
- Per-call agent persistence across turns (router currently re-evaluates each turn from default)
- Live phone test pending Brandon calling +12132799996
