adlee-was-taken 098814b734 docs: capture vision revision — self-hosted AI-era contact-center engine
Records the decisions from pressure-testing the four founding docs:

- North-star reframe: the engine for the AI-era contact center, not an
  Asterisk-protocol successor (Asterisk's map = checklist, not template)
- Fused per-call vertical + composable horizontal platform (tightens the
  three-plane model; removes the control<->media hot-path gRPC hop)
- Rust-native trunk SIP, IP-allowlisted; drops the Kamailio/rtpengine C
  shield (reverses ADR-0001, to be formalized as ADR-0003)
- Pillars re-weighted: +data-ownership, spend-control promoted to
  constitutive, WASM demoted out of the core story
- Developer-first DX spine (config-as-code, AEL lesson, engine+batteries)
- GUI as pure API client (FreePBX model) + k8s declarative/operational split
- Sequenced thin-slice first proof + capability ladder

For review before applying to README/ARCHITECTURE/PORT_PLAN and writing
ADR-0002 (identity) and ADR-0003 (SIP).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RUtgQTo3wHGXP1TixHr4gd
2026-06-26 22:47:47 -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 5 MiB
Languages
Rust 95.1%
Python 2.6%
Dockerfile 1.3%
Shell 0.6%
HTML 0.4%