Plenty of tools can send a notification; very few can hold a conversation and let you interrupt. Two design calls make it work: the calling model is the brain, so there is no second API to pay for, and the voice server can only dial the one SIP URI you configure — it cannot reach arbitrary numbers. The caveats section in the README is unusually honest, and worth reading before you rely on it for anything time-critical.
Two MCP servers that let an LLM reach you away from the keyboard: `ringback-alert` for a one-way push or SIP ring, and `ringback-voice` for a live two-way phone call where you speak, it transcribes you, and the model answers in speech. The model already driving the MCP is the voice on the line, so there is no separate conversation API key.
- `ringback-alert` — `alert_me` with `severity` of `info`, `warn` or `critical`, plus `alert_test` and `alert_status`; channels are chosen with `ALERT_CHANNEL` from ntfy, pushover and call, and a rate-limit guard defaults to 5 alerts per 60s
- `ringback-voice` — `call_start` rings your phone and returns your first words, `converse` speaks and listens in one interruptible turn, `get_conversation` returns the full transcript including where it was interrupted, `call_end` hangs up
- Barge-in: talk over the agent and it stops immediately, telling the model how far it got and what you said
- Fully self-hosted — pjsua2 for SIP, whisper.cpp for speech-to-text, Piper for neural TTS, and a free Linphone SIP account; no Twilio and no per-minute fees
- A bundled watchdog skill escalates only when you are actually away, judged by input-idle time: chat status, then a chat warning, then a push, then a call — and de-escalates the moment you touch the keyboard
macOS or Linux natively, Windows through WSL2 or Docker; Python 3.10+, and a free Linphone SIP account plus the Linphone app on your phone. The Docker plugin path is one command in Claude Code; the native path runs `./setup.sh` (or `./setup-linux.sh`), which compiles pjsua2 from source in roughly 20 to 30 minutes and creates `voice.env`. Three variables are required there: `VOICE_SIP_ID`, `VOICE_SIP_USER` and `VOICE_SIP_PASS`. Register with `claude mcp add ringback-voice --scope user`. Things to know before relying on it: expect about 1 to 2 s per turn, since the loop is record then whisper then LLM then TTS; your machine must be awake and a Claude session live for the call's duration; barge-in assumes a handset or headset, because speakerphone echo can false-trigger interruption; and on iPhone only Pushover's paid Critical Alerts truly pierce Focus and Silent. Apache-2.0, with a GPL caveat for the pjproject dependency behind the voice server.
One command plus a key — docker build -t ringback ., then supply credentials
