Let Claude Code call people.
A Claude Code plugin for macOS. Claude starts a call on Google Meet or Zoomsoon and invites the person. A voice agent asks them your questions, and Claude answers anything about your code mid-call. When they hang up, the answers are back in your session.
/plugin marketplace add robertoyamanaka/voy-voythen /plugin install voy@voyvoy and /voy:setup in Claude Code
- ── Ana Ruiz joined ──
- AGENTHi Ana, I'm Sam's AI agent, and I'll be taking notes.
- ANAHa, okay. Hi! So, the onboarding form?
- AGENTSam wants to shorten it. Which fields have to stay?
- 1.41 s
- ANAEmail and company size. Do we even store company size?
- ?Do we already store company size? → Claude Code
- AGENTGood question. Let me check Sam's code.
- AGENTWe do. It's saved already, just optional.
- 1.52 s
- ANAThen make it required. And drop phone.
- ✓fields: email + company size (required), no phone
- ── call ended ──
- >/voy:call ask Ana which onboarding fields she wants
- ●voy_call_start contact: Ana · meet: new
- ●voy_call_wait
- ●Read src/models/account.ts
- ●voy_call_answer “Yes, on the Account model. Optional today.”
- ●voy_call_wait
- ●Making company size required, removing phone.
- ●Update src/onboarding/StepTwo.tsx
A phone for Claude Code.
- Starts the call
- Opens a Google Meet in its own purple Chrome window, waits for them, and greets them by name.
- Or takes yours
- Hand over the call you're already in, in Google Meet or a Slack huddle.
- Answers from your code
- Questions only the code can answer go to Claude Code mid-call, and come back in plain words.
- Your keys, your Mac
- Runs on your own LiveKit project. There's no VoyVoy server in the middle.
- Silent on your Mac
- The call never plays through your speakers, so you keep working while it talks.
- English and Spanish
- Spanglish and tech jargon come through fine.
- Always disclosed
- Its first words say it's an AI. No setting turns that off.
- Notes for Claude
- Every call lands in .voy/calls/ with the answers, ready to act on.
- MIT licensed
- Read every line, fork it, swap any piece.
Two brains on every call.
Voice needs speed and your codebase needs depth, so VoyVoy splits the job. A fast talker runs the conversation on LiveKit. The slow reasoner is the Claude Code session you're already in, with your whole repo in context.
It's the Talker–Reasoner pattern from Google DeepMind, built on LiveKit's subagent delegation. The twist: the reasoner isn't another model call. It's you, plus Claude.
| STT (speech-to-text) | deepgram/nova-3hears English, Spanish, and both at once |
|---|---|
| LLM (the talker) | google/gemini-2.5-flashabout 0.4 s to its first word |
| TTS (the voice) | cartesia/sonic-3any voice your provider has |
| Reasoner (the brain) | your Claude Code sessionover MCP: ask · answer · steer |
Swap any line in ~/.voy/config.toml. Voice-to-voice is about 1.5 s, measured on your Mac.
From /voy:call to a finished change.
Claude Codethe talkerVoyVoy
- PrepareClaude reads the code that matters, writes the goals, and finds the person.
- CallVoyVoy opens a Meet in its own window. Claude sends the invite.
- TalkThey join. The agent says it's an AI and works through the goals.
- DelegateA code question goes to Claude. The agent keeps talking while it checks.
- Wrap upIt reads back the plan, waits for their yes, and says goodbye.
- Back to workThe notes land in your session, and Claude makes the change.
Three commands, all inside Claude Code.
You need macOS 14.2 or later, Google Chrome, uv, the Xcode command line tools, and a free LiveKit Cloud project.
/plugin marketplace add robertoyamanaka/voy-voy/plugin install voy@voyvoy/voy:setup
/voy:setup asks for your first name and your LiveKit keys, then:
- installs BlackHole, the free virtual mic your agent speaks through (signature checked);
- builds the audio helper and downloads the voice models;
- opens the purple VoyVoy agent window so you sign into Google once.
Prefer the terminal?
uv tool install git+https://github.com/robertoyamanaka/voy-voyvoy initvoy doctor
Principles
- Always disclosed.
- The first words of every call say it's an AI. Code speaks that line, not the model, and there's no setting to turn it off.
- Never calls without your yes.
- Claude asks before calling anyone, and the invite says an AI agent is joining.
- Call content isn't a command.
- What people say reaches Claude as their request, never as instructions. Claude Code's permissions still apply.
- Local first.
- Audio goes from your Mac to your own LiveKit project. The agent's Chrome window is a separate profile that never touches yours.
Roadmap
Next
- Gemini Live speech-to-speech as an option
- A menu-bar light that shows when a call is on
- A signed audio helper, so permissions survive updates
- One-line install from PyPI
Later
- Your own voice, with a consent check
- Phone calls and WhatsApp
- Slack huddles started by the agent
- More languages, and harnesses beyond Claude Code
Install it in Claude Code.
/plugin marketplace add robertoyamanaka/voy-voy