A terminal SIP softphone, a telephony test runner and an MCP server for LLM-driven calls, built on baresip.
ringo is a cargo workspace of SIP telephony tools sharing one engine: a softphone you live in, a scenario runner that drives SIP agents headless for automated call testing, and an MCP server that hands those agents to an LLM.
📖 Documentation: https://davidborzek.github.io/ringo/
| Crate | What it is | Docs |
|---|---|---|
ringo-phone |
The ringo softphone — a ratatui TUI managing multiple SIP profiles, with calls, contacts, transfers, remote control and headless automation |
Guide |
ringo-flow |
A telephony scenario test runner — bring up SIP agents from a JavaScript/TypeScript scenario, drive them, and assert call behaviour (incl. audio) | Guide · API |
ringo-mcp |
An MCP server — exposes SIP agents as tools to LLM clients (dial, DTMF, transfer, INVITE headers, audio playback, recording) | Guide |
Support crates with no stable public API — pin an exact version if you depend on them directly.
| Crate | What it is |
|---|---|
ringo-agent |
The per-agent process backend — runs a SIP user agent as its own process over a framed stdio protocol (live audio in/out); backs ringo-flow and ringo-mcp |
ringo-core |
The shared engine — an FFI backend statically linking baresip/libre, plus the call-event model |
ringo-profile |
The profile file format and custom-header templates — shared by ringo-phone and ringo-mcp |
The SIP stack (baresip, libre, OpenSSL) is built in — no separate baresip
install needed.
| ringo-phone | ringo-flow | ringo-mcp | |
|---|---|---|---|
| Homebrew | brew install davidborzek/tap/ringo |
brew install davidborzek/tap/ringo-flow |
brew install davidborzek/tap/ringo-mcp |
| AUR | ringo-phone-bin |
ringo-flow-bin |
ringo-mcp-bin |
| Nix | nix profile install github:davidborzek/ringo#ringo-phone |
…#ringo-flow |
…#ringo-mcp |
| cargo | cargo binstall ringo-phone |
cargo binstall ringo-flow |
cargo binstall ringo-mcp |
| Docker | — | ghcr.io/davidborzek/ringo-flow |
— |
Pre-built binaries for Linux and macOS (x86_64 + arm64) are on the
releases page. The
getting-started pages
(phone,
flow,
mcp) have
the details: the Nix binary cache, runtime libraries for the plain binaries, and
cargo install from source.
Then run ringo and press Ctrl+N to create your first
profile.
Building from source needs Rust 1.85+ and a C toolchain + CMake for the vendored baresip/libre/OpenSSL, which are statically linked. The repo is a cargo workspace; build and test all crates together:
cargo build --workspace
cargo test --workspace
cargo clippy --workspaceSee BUILD.md for the full build setup — git submodules, system dependencies, and the vendored/static linking of libre, libbaresip and OpenSSL.
Contributions are welcome. Please open an issue before submitting large changes so we can discuss the approach first.
MIT — see LICENSE.
