finds.dev← search

// the find

fonoster/routr

★ 1,686 · TypeScript · MIT · updated May 2026

⚡ The future of programmable SIP servers.

Routr is a programmable SIP proxy, registrar, and location server built in TypeScript, designed to run on Kubernetes and Docker. It targets telecom carriers and VoIP integrators who want a cloud-native alternative to Kamailio or OpenSIPS. The v2 architecture is microservice-based, with gRPC between components and a plugin model for custom processors and middleware.

- The Processor/Middleware split is genuinely well thought out — feature logic lives in Processors, cross-cutting concerns (auth, rate limiting) live in Middleware, each with the same interface. This keeps routing code from becoming a monolith.

- Kubernetes-first with a real Helm chart and multi-component architecture (edgeport, dispatcher, location, registry as separate services) means you can scale the hot path independently of the management plane.

- Redis-backed location service as an alternative to in-memory is a practical choice for multi-node deployments — avoids the split-brain registration problem that kills naive SIP proxies at scale.

- SIPp scenario files are checked in under etc/scenarios, which means actual protocol-level regression testing rather than just unit tests. Most SIP projects skip this entirely.

- STIR/SHAKEN is listed as not implemented. For any carrier-grade deployment in North America this is a compliance blocker, not a nice-to-have — calls without attestation get flagged as spam by downstream carriers.

- The monorepo uses Lerna with per-module npm packages, which means the local dev story involves coordinating package symlinks and build order across mods/. The one-click Gitpod path hides this pain but you'll hit it immediately in a real development setup.

- The Node SDK examples use CommonJS require() syntax with no ESM alternative shown, and the TypeScript in the Processor example leaks type annotations into JS output (req: MessageRequest in a .js file). Small thing, but suggests the SDK isn't regularly tested as a plain JS consumer.

- No web UI is on the roadmap — the CTL is interactive (prompts, not flags) which makes scripting and CI-driven provisioning awkward. Automating trunk setup means shelling out and parsing stdout.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →