phone-voiceConnect ElevenLabs Agents to your OpenClaw via phone with Twilio. Includes caller ID auth, voice PIN security, call screening, memory injection, and cost tracking.
Install via ClawdBot CLI:
clawdbot install cortexuvula/phone-voiceTurn your OpenClaw into a phone-callable assistant with ElevenLabs Agents + Twilio.
What you get:
Phone โ Twilio โ ElevenLabs Agent โ Your Bridge โ Anthropic Claude โ OpenClaw Tools
โ
Memory Context
(MEMORY.md, USER.md)
Flow:
Not needed for this skill โ the bridge bypasses OpenClaw and calls Claude directly. This gives you more control over memory injection and cost tracking.
The bridge is a FastAPI server that:
/v1/chat/completions requests from ElevenLabsKey files:
server.py โ FastAPI app with /v1/chat/completions endpointfred_prompt.py โ System prompt builder (loads memory files).env โ Secrets (API keys, tokens, whitelist)contacts.json โ Caller whitelist for screeningPermanent, secure alternative to ngrok:
# Install cloudflared
brew install cloudflare/cloudflare/cloudflared
# Login and configure
cloudflared tunnel login
cloudflared tunnel create <tunnel-name>
# Run the tunnel
cloudflared tunnel --url http://localhost:8013 run <tunnel-name>
Add a CNAME in Cloudflare DNS:
voice.yourdomain.com โ <tunnel-id>.cfargotunnel.com
Or use ngrok (temporary):
ngrok http 8013
https://voice.yourdomain.com/v1/chat/completionsAuthorization: Bearer # Step 1: Store your bridge auth token as a secret
curl -X POST https://api.elevenlabs.io/v1/convai/secrets \
-H "xi-api-key: YOUR_ELEVENLABS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "new",
"name": "bridge_auth_token",
"value": "YOUR_BRIDGE_AUTH_TOKEN"
}'
# Response: {"secret_id": "abc123..."}
# Step 2: Create the agent
curl -X POST https://api.elevenlabs.io/v1/convai/agents/create \
-H "xi-api-key: YOUR_ELEVENLABS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"conversation_config": {
"agent": {
"language": "en",
"prompt": {
"llm": "custom-llm",
"prompt": "You are a helpful voice assistant.",
"custom_llm": {
"url": "https://voice.yourdomain.com/v1/chat/completions",
"api_key": {"secret_id": "abc123..."}
}
}
}
}
}'
In ElevenLabs agent settings:
Done! Your bot now answers that phone number.
Recognizes whitelisted numbers automatically:
// contacts.json
{
"+12505551234": {
"name": "Alice",
"role": "family"
}
}
For unknown callers or high-security actions:
VOICE_PIN = "banana" # Set in .env
Caller must say the PIN to proceed.
Unknown numbers get a receptionist prompt:
"This is Fred's assistant. I can take a message or help with general questions."
Configurable per-hour limits:
RATE_LIMIT_PER_HOUR = 10
Prevents abuse and runaway costs.
The bridge auto-loads context before each call:
Files read:
MEMORY.md โ Long-term facts about user, projects, preferencesUSER.md โ User profile (name, location, timezone)Live data injection:
All injected into the system prompt before Claude sees the conversation.
Every call logs to memory/voice-calls/costs.jsonl:
{
"call_sid": "CA123...",
"timestamp": "2026-02-03T10:30:00",
"caller": "+12505551234",
"duration_sec": 45,
"total_cost_usd": 0.12,
"breakdown": {
"twilio": 0.02,
"elevenlabs": 0.08,
"anthropic": 0.02
}
}
Run analytics on the JSONL to track monthly spend.
Call your bot:
Outbound calling (optional):
curl -X POST https://voice.yourdomain.com/call/outbound \
-H "Authorization: Bearer <BRIDGE_TOKEN>" \
-d '{"to": "+12505551234", "message": "Reminder: dentist at 3pm"}'
Environment variables (.env):
ANTHROPIC_API_KEY=sk-ant-...
ELEVENLABS_API_KEY=sk_...
ELEVENLABS_AGENT_ID=agent_...
TWILIO_ACCOUNT_SID=AC...
TWILIO_AUTH_TOKEN=...
TWILIO_NUMBER=+1...
LLM_BRIDGE_TOKEN=<random-secure-token>
VOICE_PIN=<your-secret-word>
CLAWD_DIR=/path/to/clawd
Whitelist (contacts.json):
{
"+12505551234": {"name": "Alice", "role": "family"},
"+12505555678": {"name": "Bob", "role": "friend"}
}
Restrict calls to business hours:
# In server.py
OFFICE_HOURS = {
"enabled": True,
"timezone": "America/Vancouver",
"weekdays": {"start": "09:00", "end": "17:00"},
"weekends": False
}
Outside hours โ voicemail prompt.
Test the bridge directly:
curl -X POST https://voice.yourdomain.com/v1/chat/completions \
-H "Authorization: Bearer <BRIDGE_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4",
"messages": [{"role": "user", "content": "Hello!"}],
"stream": false
}'
Check logs:
tail -f ~/clawd/memory/voice-calls/bridge.log
Verify Twilio webhook:
Per-minute breakdown:
Use rate limiting and call screening to control costs.
ElevenLabs official tutorial:
This skill (Phone Voice v2.0):
MIT โ use freely, credit appreciated.
Built by Fred (@FredMolty) โ running on OpenClaw since 2026.
Generated Feb 24, 2026
Professionals can call their AI assistant to manage schedules, set reminders, or get quick updates on tasks without needing to type. The system uses caller ID authentication for security and injects personal memory files like calendar events for context-aware responses.
Small businesses can set up a phone-based AI agent to handle common customer inquiries, such as store hours or product information, with call screening to filter unknown numbers. It logs transcripts for review and tracks costs to manage expenses effectively.
Clinics use this skill to automate appointment reminders via phone calls, with voice PIN security for patient verification and memory injection to pull patient details from files. It includes rate limiting to prevent spam and ensure compliance.
Students call an AI tutor for homework help or study questions, with the system loading educational context from memory files. Whitelist-based screening ensures only enrolled students access the service, and cost tracking helps monitor usage.
Elderly individuals use a phone-based assistant for daily check-ins, medication reminders, or casual conversation, with caller ID authentication for trusted contacts. The bridge injects personal preferences from memory files for personalized interactions.
Charge users a monthly fee for access to the phone-based AI assistant, with tiers based on call duration or features like memory injection. Revenue comes from recurring subscriptions, leveraging cost tracking to optimize pricing.
Sell the skill as a white-label solution to businesses needing automated phone support, with setup fees and ongoing maintenance charges. Revenue is generated through service contracts and usage-based billing tied to call analytics.
Offer basic phone AI functionality for free, with premium features like advanced security (voice PIN), detailed cost tracking, or priority support for paid users. Revenue streams from upgrades and add-ons.
๐ฌ Integration Tip
Ensure all API keys (ElevenLabs, Twilio, Anthropic) are securely stored in .env and test the bridge server locally before deploying with Cloudflare tunnel for reliability.
Turn your AI into JARVIS. Voice, wit, and personality โ the complete package. Humor cranked to maximum.
Local Voice Input/Output for Agents using the AI Voice Agent API.
Transcribe audio files using OpenAI's gpt-4o-mini-transcribe model with vocabulary hints and text replacements. Requires uv (https://docs.astral.sh/uv/).
ๆฌๅฐ็ๆ Telegram ่ฏญ้ณๆถๆฏ๏ผๆฏๆ่ชๅจๆธ ๆดใๅๆฎตไธไธดๆถๆไปถ็ฎก็ใ
Speak responses aloud on macOS using the built-in `say` command when user input indicates Voice Wake/voice recognition (for example, messages starting with "User talked via voice recognition on <device>").
ๅๆๅฎ Telegram ็พค็ปๅ้่ฏญ้ณๆถๆฏ