Skip to content

Repository files navigation

ringo

A terminal SIP softphone and telephony test runner built on baresip.

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

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/

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 Rhai script, drive them, and assert call behaviour (incl. audio) Guide · API

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
ringo-core The shared engine — an FFI backend statically linking baresip/libre, plus the call-event model

Requirements

  • 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 baresip install, at build or run time

Quick start

Install the softphone and open the profile picker:

cargo install ringo-phone   # installs the `ringo` binary
ringo                       # Ctrl+N to create your first profile

See the documentation for install options, configuration, remote control and writing scenario tests with ringo-flow.

Development

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.

Releases

Packages

Contributors

Languages