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
Plugin

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.
All reasons and checks

yanyan1115/ringringring

Install

Manual install

/plugin marketplace add yanyan1115/ringringring

Then `/plugin install ringringring@ringringring` and enter the SIP details and recognition key.

Access and checks

How we review

Extended 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.

Plugins

A realtime voice layer on top of Claude Code, Codex and OpenCode that keeps talking and listening while background tasks run in parallel

CLIExtended access3.2KRepository stars

Local AI commands for voice and text: clipboard dictation, text fixes, speech, an assistant and parallel agents in worktrees

CLIExtended access239Repository stars

Sound and on-screen notifications for coding agents: game voice lines when the agent finishes or waits for permission

CLIExtended access5.1KRepository stars

A skill that lets an agent join a Google Meet, Teams or Zoom call with voice, an avatar, screen sharing and live transcription

SkillBroad access194Repository stars

echook plays a sound, a desktop toast or a message when Claude Code, Cursor or Codex finishes or waits for your permission

PluginExtended access90Repository stars

Voice control of Claude Code and Codex sessions on your machines: a small agent on each box links it to the pitupitu cloud.

CLIBroad access224Repository stars

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.

README badge

Report a problem