adlee-was-taken 2310367b15 spec: slice 1 — WebRTC media loopback design
Workspace scaffold + spearhead step 1: browser talks WebRTC to the core,
core terminates DTLS-SRTP, decodes Opus to canonical 16-bit PCM @24 kHz mono,
echoes back. Proves the media core + the codec-to-PCM boundary (pre-paves
the tap). Stubs lock the ADR-0002 fused-vertical boundaries for steps
2/5/6.

Drafted in brainstorming session 2026-06-28.
2026-06-28 09:26:38 -04:00

Rutster

A memory-safe, API-first, security-first telephony platform — a spiritual successor to Asterisk for the WebRTC/microservices era, written in Rust.

Not a port of Asterisk. A reimagining that keeps the power — era-bridging breadth, "wire anything to anything," a deep feature library — while dropping the legacy hardware/dead-protocol half and fixing Asterisk's two chronic wounds: memory-safety CVEs and toll fraud, at the design level.

What it is / isn't

  • Is: SIP (TLS-only) + WebRTC signaling, a real-time media plane (transcode / mix / DSP), a programmable call model exposed as a REST/gRPC API + event stream, a WASM-sandboxed plugin runtime, and a library of telephony features delivered as isolated services.
  • Isn't: A TDM/PSTN-hardware PBX. No DAHDI, no Sangoma/Digium cards, no ISDN/SS7, no IAX2/H.323/SCCP/MGCP/Unistim. PSTN reach is via SIP trunks / SBC only.

Core design pillars

  1. Memory-safe by construction — Rust everywhere on the hot path; fuzzed, sans-IO protocol parsers. Eliminates the buffer-overflow/RCE CVE class.
  2. Isolation over in-process modules — extensions run in a WASM sandbox, not as .so files in the daemon's address space. One bad plugin can't crash the box or read another tenant's media. (The Asterisk core show locks era ends here.)
  3. Secure & deny-by-default — mandatory TLS/SRTP, deny-by-default routing, built-in toll-fraud controls, mTLS gRPC admin (no plaintext AMI), hard multi-tenancy.
  4. Three planes, scaled independently — control / media / app. The media datapath stays tight; business logic is microservices and plugins around it.
  5. Observable & declarative — OpenTelemetry call traces across services; config-as-data, not imperative .conf files edited on a box.

Layout

  • docs/ARCHITECTURE.md — the three-plane model and pillars.
  • docs/PORT_PLAN.mdthe spine: every Asterisk subsystem mapped to a disposition (core / plugin / service / edge-FFI / dropped) with rationale.

Status

Scoping. No code yet — the port plan defines the crate/service boundaries that the workspace will be scaffolded from next.

Open decisions

  • License — undecided (Asterisk is GPLv2+commercial; rutster's model is TBD).
  • SIP stack — FFI to pjproject vs. front with an SBC (Kamailio/drachtio) vs. a long-term pure-Rust stack. See port plan §1.
  • WASM runtimewasmtime is the presumptive default (component model).
Description
Terribly-named "spiritual" ancestor to the niche Asterisk PBX filled in 2005, but for AI-first call centers in 2026
Readme 3.8 MiB
Languages
Rust 99.5%
HTML 0.5%