ringringring plugin
A plugin that lets an AI agent phone you by voice over free SIP: on iPhone the Linphone app is all you need.
- 52 ★ on the repository
- Last commit
- AGPL-3.0
Extended access
Why this level
- The plugin keeps the SIP password and speech-recognition keys in `~/.config/ringringring/voice.env`.
- Phone speech goes to external recognition and synthesis services, and conversation transcripts land in the log.
Install
- Works in
Manual install
/plugin marketplace add yanyan1115/ringringringThen `/plugin install ringringring@ringringring` and enter the SIP details and recognition key.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The plugin keeps the SIP password and speech-recognition keys in `~/.config/ringringring/voice.env`.
- Phone speech goes to external recognition and synthesis services, and conversation transcripts land in the log.
This is third-party code. Review the repository files before installing.
What it does
ringringring gives an agent the `call_start`, `converse` and `call_end` tools and a `phone-call` skill with the call flow and privacy rules. The agent dials your Linphone account, you answer on the lock screen, and a multi-turn conversation follows: speech is transcribed to text and the agent reply is synthesized. If you start speaking during a reply, playback stops and the agent learns which part was said. One line per host: a second call during a conversation returns busy. Recognition and synthesis are configurable. Version 0.2.0 adds incoming calls, a quiet-listen mode (off by default) and a remote HTTPS version for the Claude, Gemini and ChatGPT apps.
Who it is for. People who run an agent on their own server and want a voice call from it instead of a chat message.
Good fit when
- A long task finished and the agent calls to report the result to an iPhone even with the screen off.
- The agent cannot decide without you and calls to ask, and you answer by voice.
- You call the agent yourself from Linphone using the incoming-call plugin.
- You want to swap speech recognition for a service compatible with `/audio/transcriptions`.
- Several agents on one host must share a single phone line.
Not a fit when
- The agent runs in a cloud container that blocks UDP for SIP: the dialer must run on a VPS or your computer.
- You need calls to other people numbers: the plugin calls your own Linphone account.
- You have no x86_64 Linux server with Python 3.11.
Example request
When the database migration finishes, call me through ringringring, state the result briefly and ask whether to start the release.Limitations
The dialer runs on x86_64 Linux with Python 3.11 and must sit on a VPS or your own computer; a cloud container that blocks UDP for SIP will not do. A free Linphone account and a speech-recognition key (ElevenLabs recommended, Groq as fallback) are required. The SIP password sits in `~/.config/ringringring/voice.env` with 600 permissions. The log keeps only connection facts and conversation text, and the phone network address is masked by default, though that is not strong isolation from the server admin.
How to disable. Remove the plugin through `/plugin` in Claude Code. Delete `~/.local/share/ringringring` and `~/.config/ringringring/voice.env` with the SIP password and keys by hand.
FAQ
How do I install the plugin?
In Claude Code run `/plugin marketplace add yanyan1115/ringringring` and `/plugin install ringringring@ringringring`. By hand: clone the repository and run `plugin-native/bin/install.sh`.
Do I need a paid number or an app?
No. The free Linphone app and an account at subscribe.linphone.org are enough. Speech recognition runs on free ElevenLabs or Groq quotas.
Does it work in OpenCode?
Yes, like any MCP client: set `plugin-native/bin/run-voice-native.sh` up as a stdio MCP server. With separate hosts, start the script over SSH on the telephony host.
Do I need to open ports?
No. The server sends audio outward first and crosses NAT through STUN, `stun.linphone.org:3478` by default.
Can I call the agent myself?
Yes, through the incoming-call plugin added in 0.2.0. It needs a second Linphone account reserved for the agent.
Discussion
No questions or reviews yet.
Related
PluginsA realtime voice layer on top of Claude Code, Codex and OpenCode that keeps talking and listening while background tasks run in parallel
Local AI commands for voice and text: clipboard dictation, text fixes, speech, an assistant and parallel agents in worktrees
Sound and on-screen notifications for coding agents: game voice lines when the agent finishes or waits for permission
A skill that lets an agent join a Google Meet, Teams or Zoom call with voice, an avatar, screen sharing and live transcription
echook plays a sound, a desktop toast or a message when Claude Code, Cursor or Codex finishes or waits for your permission
Voice control of Claude Code and Codex sessions on your machines: a small agent on each box links it to the pitupitu cloud.
README in short
The project calls the owner through a Linphone SIP account and runs a voice dialog with speech recognition and synthesis. It installs in Claude Code and has an MCP script for other clients.