npx skills add ...
npx skills add deepgram/deepclaw --skill deepclaw-voice
Set up phone calling to OpenClaw using Deepgram Voice Agent API
npx skills add deepgram/deepclaw --skill deepclaw-voice
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"}]}'openssl rand -hex 24DEEPGRAM_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"}},