Documentation

One daemon that owns the whole call.

Strowger is a single Rust daemon that plugs directly into your SIP trunks and holds the entire conversation itself — SIP signalling, RTP media (G.711), and the real-time AI voice session, all in one process. Think of it as the autonomous softphone: no Asterisk, no FreeSWITCH, no bridge to wire between boxes. One binary, one config file, one HTTP API.

Principles
  • Self-contained HTTP API. Everything — placing calls, authorising inbound calls, receiving CDRs, managing trunks and routes — happens over one small HTTP contract. Any service can drive it, in any language, with zero coupling to the rest of your stack.
  • You own the media, end to end. Strowger holds the whole RTP path itself — nothing to wire up between boxes, no glue layer to babysit. A whole class of plumbing bugs is gone by construction.
  • Sovereign, on-prem. CDRs, recordings, transcripts and signalling never leave your infrastructure. Conversation audio goes to exactly one third party — the AI model provider you choose, under your own keys and your own DPA.
  • Hard-won audio lessons, encoded as requirements. Playout buffering, full-duplex barge-in, RTP watchdogs, session timers — months of production telephony debugging are design constraints here, not discoveries left for you to make again.
Architecture
Strowger architecture: HTTP clients drive the strowgerd daemon (httpd, call controller, sip, media, ai layers) down to the operator trunk over SIP and RTP. Strowger architecture: HTTP clients drive the strowgerd daemon (httpd, call controller, sip, media, ai layers) down to the operator trunk over SIP and RTP.

Strowger is a Cargo workspace of reusable crates — sip, media, ai, call, httpd — assembled into the single strowgerd daemon binary. Each crate is usable as a library on its own; together they form the process that answers and places calls on your behalf. A companion tool, strowger-cli, talks to that daemon over the same HTTP API to administer it locally.

Where to go next

01Getting started

Install the binary, write your first config.toml, wire a trunk and an inbound route, activate your licence, and place your first call.

Read the guide

02CLI reference

strowger-cli — the local admin tool: daemon status, licence, active calls, trunk management, config validation.

Read the reference

03API reference

The full HTTP contract: POST /calls, the inbound authorisation webhook, end-of-call callbacks, CDRs, hot trunk and route management, observability.

Read the reference