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 |
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 |
ringo-core |
The shared engine — an FFI backend statically linking baresip/libre, plus the call-event model |
- Rust 1.85+ to build
- A C toolchain + CMake to build the vendored baresip/libre/OpenSSL, which are statically linked — so neither the softphone nor the test runner needs a separate
baresipinstall, at build or run time
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 --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.