Call Your OpenClaw Over the Phone Using ElevenLabs Agents
What if you could call your OpenClaw bot and ask how your coding project is going?
Or ask it to remember something while you're driving?
Or get a digest of what happened today while you're walking the dog?
OpenClaw supports text-to-speech and speech-to-text out of the box. But making it truly conversational takes work. Turn-taking, interruption handling, latency management, phone integration... it adds up.
ElevenLabs Agents handles all of that. You bring the brains (OpenClaw). They bring the voice.
Here's how to wire them together.
The Architecture
The split is clean:
ElevenLabs Agents handles:
- Turn-taking (knowing when you're done speaking)
- Speech synthesis (text to voice)
- Speech recognition (voice to text)
- Phone integration (Twilio numbers)
- Voice-related latency optimization
OpenClaw handles:
- Tools and actions
- Memory and context
- Skills and capabilities
- The actual thinking
The two systems communicate using the standard OpenAI /chat/completions protocol. ElevenLabs sends the conversation history, OpenClaw responds, ElevenLabs speaks the response.
Simple. Powerful.
Prerequisites
Before you start:
- ElevenLabs account (for the voice agent platform)
- OpenClaw installed and running (local or hosted)
- ngrok installed (to expose your local instance, or skip if using Clawctl)
- Twilio account (if you want a real phone number)
Step 1: Configure OpenClaw
In your openclaw.json, enable the chat completions endpoint:
{
"gateway": {
"http": {
"endpoints": {
"chatCompletions": {
"enabled": true
}
}
}
}
}
This exposes /v1/chat/completions on your gateway port. That's the universal endpoint ElevenLabs will use to interact with your OpenClaw.
Restart your OpenClaw instance for the changes to take effect.
Step 2: Expose Your OpenClaw
ElevenLabs needs to reach your OpenClaw instance over the internet.
Option A: ngrok (Quick and Dirty)
Start a tunnel:
ngrok http 18789
Replace 18789 with your actual gateway port.
ngrok gives you a public URL like https://your-unique-url.ngrok.io. Keep this terminal open.
Option B: Clawctl (Production-Ready)
If you're running OpenClaw through Clawctl, your instance is already securely exposed with:
- Token authentication on every request
- Audit logging for every interaction
- Network egress control
- No need for ngrok tunnels
Your endpoint is already at https://your-tenant.clawctl.com/v1/chat/completions.
Step 3: Configure ElevenLabs Agent
Manual Setup (via Dashboard)
- Create a new ElevenLabs Agent in their dashboard
- Under LLM settings, select Custom LLM
- Set the URL to your endpoint:
- ngrok:
https://your-unique-url.ngrok.io/v1/chat/completions - Clawctl:
https://your-tenant.clawctl.com/v1/chat/completions
- ngrok:
- Add your OpenClaw gateway token as the authentication header
Automated Setup (via API)
If you prefer scripting this (or want your coding agent to do it), here are the API calls:
Create the secret first:
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": "openclaw_gateway_token",
"value": "YOUR_OPENCLAW_GATEWAY_TOKEN"
}'
This returns a response with the secret ID:
{
"type": "stored",
"secret_id": "abc123...",
"name": "openclaw_gateway_token"
}
Then 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 assistant.",
"custom_llm": {
"url": "https://YOUR_NGROK_URL.ngrok-free.app/v1/chat/completions",
"api_key": {
"secret_id": "RETURNED_SECRET_ID"
}
}
}
}
}
}'
Replace the placeholders:
YOUR_ELEVENLABS_API_KEY- your ElevenLabs API keyYOUR_OPENCLAW_GATEWAY_TOKEN- from youropenclaw.jsonundergateway.auth.tokenYOUR_NGROK_URL- your ngrok subdomain (or Clawctl tenant URL)RETURNED_SECRET_ID- the secret_id from the first API call
ElevenLabs now routes all conversation turns through your OpenClaw. It sends the full message history on each turn, so your assistant has complete context.
At this point, you can already talk to your OpenClaw bot using the ElevenLabs agent interface.
Step 4: Attach a Phone Number
This is where it gets interesting.
- In Twilio, purchase a phone number (or use an existing one)
- In the ElevenLabs agent settings, go to the Phone section
- Enter your Twilio credentials:
- Account SID
- Auth Token
- Connect your Twilio number to the agent
That's it. Your OpenClaw now answers the phone.
Call the number. Talk to your agent. Ask it to check on your project, add a reminder, or summarize your day.
What This Actually Enables
Once your OpenClaw is phone-accessible, use cases open up:
While driving:
- "What's the status of the deployment?"
- "Remember to follow up with the client tomorrow"
- "What meetings do I have this afternoon?"
Quick check-ins:
- "Did any alerts fire in the last hour?"
- "What's our current MRR?"
- "Summarize the Slack channel from today"
Hands-free operations:
- "Deploy the staging branch to production"
- "Roll back the last release"
- "Check the database connection count"
Your agent has all the same capabilities it has in text mode. Now you can access them with your voice.
Security Considerations
A few things to think about before you expose your agent to the phone network:
Authentication:
- Every call to your OpenClaw should require a gateway token
- ElevenLabs stores this as a secret, not in plaintext
- Rotate tokens periodically
Audit trails:
- Phone conversations should be logged the same as text interactions
- If you're using Clawctl, this is automatic
- If self-hosting, make sure you're capturing conversation history
Sensitive actions:
- Consider requiring additional confirmation for high-risk actions
- "Deploy to production" over the phone should probably ask "Are you sure?"
- Clawctl's approval workflow handles this automatically
Exposure surface:
- ngrok tunnels are convenient but not production-grade
- Anyone who guesses your ngrok URL could potentially interact with your agent
- For production, use proper authentication and a stable endpoint
The Production Setup
For a real deployment (not just demos), here's the recommended stack:
| Component | Recommended Approach |
|---|---|
| OpenClaw hosting | Clawctl (managed, secure, audited) |
| Voice platform | ElevenLabs Agents |
| Phone numbers | Twilio |
| Authentication | Gateway tokens + Clawctl audit logs |
| High-risk actions | Clawctl approval workflow |
This gives you:
- A phone number anyone (or just you) can call
- Voice conversations routed to your OpenClaw brain
- Full audit trail of every interaction
- Approval workflows for sensitive operations
- No ngrok tunnels or exposed ports
Wrapping Up
The combination of ElevenLabs Agents + OpenClaw is powerful. ElevenLabs handles everything voice-related. OpenClaw handles everything intelligence-related.
You get a voice interface to your AI agent with minimal custom code.
The main decision is how you expose your OpenClaw:
- ngrok for quick demos and local testing
- Clawctl for production with security, auditing, and approvals built in
Either way, the setup takes about 15 minutes. And then you can call your AI agent from your phone.
Try explaining that to someone five years ago.
Deploy OpenClaw securely with Clawctl
If you copy this article to your coding agent, it can perform many of the setup steps for you automatically.