npx skills add ...
npx skills add deepgram/deepclaw --skill deepclaw-voice
npx skills add deepgram/deepclaw --skill deepclaw-voice
Set up phone calling to OpenClaw using Deepgram Voice Agent API
Use this skill when the user wants to call you on the phone, set up voice calling, or talk to OpenClaw via phone.
Phone calls to OpenClaw using:
Ask: "What's your Deepgram API key?"
Ask: "What's your Twilio phone number, Account SID, and Auth Token?"
Run this to get the token from their OpenClaw config:
Or generate a new one:
If generating new, tell them to add it to ~/.openclaw/openclaw.json under gateway.auth.token.
Create ~/deepclaw/.env with their values:
Check their ~/.openclaw/openclaw.json has:
If not, add it and restart the gateway: openclaw daemon restart
Note the HTTPS URL (e.g., https://abc123.ngrok-free.app).
https://<ngrok-url>/twilio/incomingTell them: "Call your Twilio number now!"
Watch the server logs for:
Edit ~/deepclaw/deepclaw/voice_agent_server.py, find get_agent_config(), change the model in speak:
English: thalia (F, default), orion (M), apollo (M), athena (F), luna (F), zeus (M), draco (M, British), pandora (F, British), hyperion (M, Australian)
Spanish: estrella (F, Mexican), javier (M, Mexican), alvaro (M, Spain), celeste (F, Colombian)
German: fabian (M), aurelia (F), lara (F)
French: hector (M), agathe (F)
Italian: cesare (M), livia (F)
Dutch: lars (M), daphne (F)
Japanese: ebisu (M), izanami (F)
Format: aura-2-<name>-<lang> (e.g., aura-2-estrella-es)
When something goes wrong, check the server logs first. Here's how to diagnose common issues:
Symptom: You call, phone hangs up, but no logs appear in the server terminal.
Cause: Twilio webhook URL doesn't match your ngrok URL.
Fix:
https://<your-ngrok-url>/twilio/incomingSymptom: Call connects, you hear the greeting, then Deepgram says "Check your think provider settings" and hangs up.
Cause: Deepgram can't reach the LLM proxy endpoint, or it's returning an error.
Fix:
401 Unauthorized, the auth is blocking requests. This shouldn't happen with the latest code.curl http://127.0.0.1:18789/healthSymptom: First exchange works (greeting + one response), then call drops with "FAILED_TO_THINK" in logs.
Cause: SSE stream formatting issue—usually fixed in latest code.
Fix:
cd ~/deepclaw && git pullSymptom: TTS says "Whydo you want" instead of "Why do you want"
Cause: Markdown stripping was removing spaces between streaming chunks.
Fix:
cd ~/deepclaw && git pullSymptom: Server responds to curl, ngrok works, but calling from your phone gets immediate disconnect with no logs.
Cause: Your carrier may be blocking calls to the Twilio number, or you're dialing wrong.
Fix:
Symptom: Logs show errors from OpenClaw like "No API key found for provider"
Fix:
openclaw configure --section model to set it upopenclaw daemon restartSymptom: Every time you restart ngrok, you get a new URL and have to update Twilio.
Fix: Use a fixed ngrok domain (requires ngrok account):
curl http://localhost:8000/healthcurl https://<ngrok-url>/healthcurl http://127.0.0.1:18789/healthcurl -X POST https://<ngrok-url>/v1/chat/completions -H "Content-Type: application/json" -d '{"model":"gpt-4","messages":[{"role":"user","content":"test"}]}'DEEPGRAM_API_KEY=<their_deepgram_key>
TWILIO_ACCOUNT_SID=<their_sid>
TWILIO_AUTH_TOKEN=<their_token>
OPENCLAW_GATEWAY_URL=http://127.0.0.1:18789
OPENCLAW_GATEWAY_TOKEN=<their_gateway_token>{
"gateway": {
"http": {
"endpoints": {
"chatCompletions": {
"enabled": true
}
}
}
}
}ngrok http 8000cd ~/deepclaw
python -m deepclaw.voice_agent_server"speak": {"provider": {"type": "deepgram", "model": "aura-2-orion-en"}},