CallMe Plugin Claude Code: AI Phone Calls Setup

It’s 2:47 AM. Your phone rings. You answer groggily, expecting the worst. Instead, a calm, synthesized voice says: “Hey, the deployment finished. But I found three failing tests in the authentication module. The changes look risky. Should I roll back, or do you want me to investigate further?” You’re talking to Claude through the CallMe plugin, your AI coding assistant that just called you on your actual phone because it got stuck and needed a decision.

You’re talking to Claude. Your AI coding assistant just called you on your actual phone because it got stuck and needed a decision. No Slack ping you’ll miss. No email buried under fifty others. A real phone call, with two-way conversation, happening right now. This is what the CallMe plugin makes possible.

This isn’t science fiction. This is CallMe, an open-source project by ZeframLou that bridges the gap between AI agents running in the cloud and humans living in the physical world. It’s a Claude Code plugin that hands your AI assistant a phone, and the implications are bigger than they first appear. The CallMe plugin represents a fundamental shift in how developers interact with AI agents.

The Shift From Chat to Voice Using the CallMe Plugin

For years, we’ve interacted with AI through text. Typing a prompt, waiting for a response, reading it on a screen. It’s efficient for many tasks, but it has a critical flaw: it requires active attention. You have to keep the window open. You have to keep checking back. If Claude is running a long task and encounters a blocker, it can’t reach you unless you’re already looking at your screen.

The CallMe plugin changes that fundamental dynamic. Instead of Claude waiting for you to ask, Claude calls you. It’s the difference between a subordinate who waits silently at their desk hoping you’ll check in, and one who walks into your office and says, “I need a decision.”

This matters because many development workflows involve long waiting periods. Docker builds take 15 minutes. Deployments to production take 10. Database migrations take an hour. During these times, your AI assistant might hit a decision point—should it proceed? Should it roll back? Should it try an alternative approach? Currently, it waits. With the CallMe plugin, it doesn’t.

CallMe plugin interface showing AI initiating phone call to developer
AI phone call developer notification — A woman talking on a cell phone while holding a banana

What makes the CallMe plugin particularly clever is that it doesn’t trap you in a voice call. You can talk to Claude, but Claude can still use all its other tools—it can search the web, run code, query APIs—all while you’re on the phone with it. It’s not swapping one constraint (text-based) for another (voice-only). It’s adding a new capability on top of everything Claude already does.

How the CallMe Plugin Works Technically

The CallMe plugin is structured as a local MCP (Model Context Protocol) server, which means it runs on your development machine rather than in the cloud. This is important because it gives you control over your phone number and API credentials. You own the infrastructure.

The architecture has several moving parts, and understanding them helps explain why the CallMe plugin is more than just “a wrapper around Twilio.”

The Webhook Flow

When Claude decides to call you, here’s what happens:

  1. Claude invokes the initiate_call() function with an opening message.
  2. CallMe forwards this to your phone provider (Telnyx or Twilio).
  3. The provider calls your phone number.
  4. CallMe uses OpenAI’s text-to-speech API to convert the opening message into audio.
  5. You hear the message and respond by speaking.
  6. Your speech is captured and sent back to CallMe, which uses OpenAI Whisper to convert it to text.
  7. This text is fed back to Claude, which processes it and decides on a response.
  8. Claude either continues the conversation or ends the call.

The critical infrastructure piece here is ngrok tunneling. The CallMe plugin runs locally on your machine, but phone providers need a public URL to send webhook callbacks to. That’s where your incoming audio gets posted. Ngrok creates a secure tunnel from the internet to your local machine, so when the phone provider has audio to deliver, it knows where to send it.

AI phone call developer notification — a pink phone hanging from a cord on a wall
AI phone call developer notification — a pink phone hanging from a cord on a wall

Speech Processing Pipeline

The magic happens in the speech-to-text and text-to-speech layers. The CallMe plugin uses two OpenAI APIs:

  • Whisper converts your spoken words into text with high accuracy, even with background noise.
  • Text-to-Speech (TTS) converts Claude’s responses back into natural-sounding audio.

Both of these are relatively fast (sub-second for most inputs), which keeps the call flowing naturally. There’s minimal latency between when you finish speaking and when Claude starts responding.

Runtime and Language

CallMe is written in TypeScript and runs on the Bun runtime, not Node.js. Bun is faster and has better TypeScript support out of the box, which matters for responsiveness in a real-time phone call context.

The Four Functions Explained

The CallMe plugin exposes four core functions that Claude Code can call. Understanding each one unlocks the full potential of what this tool can do.

1. initiate_call(message)

This starts a new phone call with an opening message. Claude uses this when it first needs to reach you.

Real scenario: You ask Claude to deploy a microservice to production and run the integration tests. Claude orchestrates the deployment, runs the tests, and one test suite fails with a timeout error. Claude can’t automatically retry it without risking a cascade of failures. So it calls: initiate_call() using the CallMe plugin to reach you immediately.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top