Skip to content
davidborzekPublic

About

Terminal SIP softphone and declarative telephony test runner

Topics

Resources

Stars

9 stars

Watchers

0 watching

Forks

Repository files navigation


ringo

A terminal SIP softphone, a telephony test runner and an MCP server for LLM-driven calls, built on baresip.

CI ringo-phone on crates.io ringo-flow on crates.io ringo-mcp on crates.io License: MIT Rust 1.85+

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/

ringo-phone: alice picks her profile, calls Bob, then Charlie while Bob is on hold, switches back and hangs up

Tools

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

Internal crates

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

Install

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.

Development

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 --workspace

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

License

MIT — see LICENSE.

About

Terminal SIP softphone and declarative telephony test runner

Topics

Resources

Stars

9 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages