CallMe: Claude Code Plugin for Phone Calls—Quick Setup
CallMe – The Minimal Claude Code Plugin for Phone Calls
If you’ve ever wished Claude could finish a task and then call you to discuss the next steps, CallMe turns that wish into reality. It is an ultra‑lightweight open‑source plugin that turns Claude Code into a Voice‑Enabled assistant. Whether you want to stay in the loop after a code review or get instant feedback on a feature, CallMe gives you a phone ring instead of an email or Slack message.
The plugin supports two popular voice‑API providers – Telnyx (recommended for its low cost) and Twilio – and uses ngrok to expose local webhooks securely. Once set up, the plugin exposes four convenient tools to your prompts:
| Tool | What it does |
|---|---|
initiate_call |
Start a new phone call |
continue_call |
Ask a follow‑up question |
speak_to_user |
Speak without waiting for a reply |
end_call |
Terminate the conversation |
Below is a complete, step‑by‑step tutorial that will have CallMe ringing in your pocket in minutes.
Prerequisites
| Item | Why you need it |
|---|---|
| A phone number | The number Claude will dial from |
| A Telnyx or Twilio account | Access to voice API and webhook management |
| An OpenAI account | TTS (Text‑to‑Speech) and STT (Speech‑to‑Text) services |
| ngrok account | Tunnel local HTTP server to the public internet |
git and a modern CLI |
Clone the repo and run commands |
All providers give you a free tier, making the cost negligible during testing.
1️⃣ Get the Provider Set Up
Option A: Telnyx (recommended)
- Visit portal.telnyx.com and verify your account.
- Order a phone number (~$1/month).
- Create a Voice API application:
- Webhook URL:
https://<your‑ngrok‑url>/twiml - API version:
v2 - Copy the Application ID and API Key.
- (Optional) In Account Settings → Keys & Credentials, copy the Public Key for webhook signing.
Option B: Twilio (alternative)
- Sign up at twilio.com and grab the free trial number.
- Copy the Account SID and Auth Token from the dashboard.
2️⃣ Configure Environment Variables
Create a JSON file at ~/.claude/settings.json (recommended) with the following structure:
{
"env": {
"CALLME_PHONE_PROVIDER": "telnyx",
"CALLME_PHONE_ACCOUNT_SID": "YOUR_APPID_OR_SID",
"CALLME_PHONE_AUTH_TOKEN": "YOUR_API_KEY_OR_TOKEN",
"CALLME_PHONE_NUMBER": "+15551234567",
"CALLME_USER_PHONE_NUMBER": "+15559876543",
"CALLME_OPENAI_API_KEY": "sk-…",
"CALLME_NGROK_AUTHTOKEN": "YOUR_NGROK_TOKEN"
}
}
Tip: For Twilio simply switch the
CALLME_PHONE_PROVIDERvalue and replace the two SID/Token entries.
If you opted for the optional webhook signing, add:
"CALLME_TELNYX_PUBLIC_KEY": "YOUR_PUBLIC_KEY"
All other environment variables are optional and have sensible defaults.
3️⃣ Install the Plugin
# In Claude Code
/plugin marketplace add ZeframLou/call-me
/plugin install callme@callme
Restart Claude Code to load the new tools.
4️⃣ Run the Local MCP Server
The plugin bundles a lightweight MCP (Multi‑Channel Provider) server that automatically spins an ngrok tunnel.
cd call-me
bn run dev # (or bun run dev if bun is installed)
The server will log the public URL; this is your webhook endpoint.
5️⃣ Start a Call
In your Claude prompt, you can now invoke the tools. For example:
You finished the auth flow! Call me to discuss next steps.
Claude will respond with:
{
"tool": "initiate_call",
"arguments": {
"message": "Hey! I finished the auth system. What should I work on next?"
}
}
Claude will place the call, ring your phone, and let you speak. As you converse, you can *
continue_call
speak_to_user
6️⃣ Cost Snapshot
| Item | Telnyx | Twilio |
|---|---|---|
| Outbound per minute | ~$0.007 | ~$0.014 |
| Phone number per month | ~$1 | ~$1.15 |
| OpenAI TTS/ STT | ~$0.02/min | Same |
| Totals | ~$0.03–$0.04/min | ~$0.04–$0.05/min |
All numbers are estimates and vary with usage volume.
7️⃣ Troubleshooting Guide
| Issue | Likely Cause | Fix |
|---|---|---|
| Claude won’t use the tool | Environment variables missing | Add all mandatory vars to settings.json |
| No call rings | Wrong webhook URL | Ensure the URL matches the ngrok output |
| Audio glitches | Phone number not verified | Re‑verify provider number |
| ngrok errors | Auth token wrong | Re‑generate and set CALLME_NGROK_AUTHTOKEN |
| Tool name mismatch | Using older Claude Code | Update to the latest plugin |
Check claude --debug for detailed MCP logs.
8️⃣ Advanced Usage
Custom TTS Voice
Add a line to your env:
"CALLME_TTS_VOICE": "onyx" // options: alloy, echo, fable, onyx, nova, shimmer
Using a Custom ngrok Domain
If you have a paid ngrok plan, set:
"CALLME_NGROK_DOMAIN": "mycustom.ngrok.io"
The MCP server will bind to that domain.
9️⃣ Scaling & Deployment
While the local MCP server works great for prototypes, you can containerize the server or expose it via a cloud function. The repository already contains a Dockerfile and a bun run dev command for easy Docker builds.
docker build -t callme .
docker run --env-file ~/.claude/settings.json -p 3333:3333 callme
Once deployed, point your provider’s webhook URL to the public endpoint.
📌 Conclusion
CallMe gives Claude the missing human touch in the form of a real phone call, combining natural language understanding, TTS/STT, and telephony into one minimal effort. Whether you’re building a remote‑first startup, orchestrating a distributed team, or just want a more engaging way to interact with Claude, the plugin delivers instant, hands‑free communication.
Ready to give it a whirl? Clone the repo, set up Telnyx or Twilio, and let Claude ring your phone. Happy calling!