A terminal SIP softphone and telephony test runner built on baresip.
ringo is a cargo workspace of telephony tools built on baresip — a SIP softphone you live in, and a scenario runner that drives baresip headless for automated call testing, both sharing one engine.
📖 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 Rhai script, drive them, and assert call behaviour (incl. audio) | Guide · API |
ringo-core |
The shared engine — baresip spawning, the ctrl_tcp wire protocol, the call-event model (internal, no stable API) |
— |
- baresip >= 3.14 in
$PATH(used by both the softphone and the test runner) - Rust 1.85+ to build
Install the softphone and open the profile picker:
cargo install ringo-phone # installs the `ringo` binary
ringo # Ctrl+N to create your first profileSee the documentation for install options, configuration, remote control and writing scenario tests with ringo-flow.
The repo is a cargo workspace; build and test all crates together:
cargo build --workspace
cargo test --workspace
cargo clippy --workspaceContributions are welcome. Please open an issue before submitting large changes so we can discuss the approach first.
MIT — see LICENSE.