finds.dev← search

// the find

jart/gosip

★ 535 · Go · Apache-2.0 · updated Jun 2026

Public Switched Telecommunications Network Unleashed

gosip is a Go library for building PSTN telephony applications without Asterisk or FreeSWITCH in the middle. It implements SIP/SDP/RTP from scratch in pure Go (with assembly-optimized µLaw and audio mixing), so you can ship a single binary that handles signaling and audio without a PBX dependency. The target user is someone building a backend service that originates or terminates calls programmatically — think call screening, voicemail, or AI voice apps.

The Ragel-based SIP parser is a real engineering choice: generated from BNF taken directly from RFC 3261, which gives you a much higher chance of correctly handling malformed messages than a hand-rolled parser. The SRV/NAPTR failover support with ICMP refusal detection is the kind of thing most home-grown SIP clients skip and then regret when their trunk goes down. Assembly-optimized saturating addition for audio mixing (sadd_amd64.s, sadd_arm64.s) means the DSP path is actually thought through, not bolted on. The per-call process model is a legitimate architectural stance — it makes rolling deploys trivial and isolates failure.

µLaw only. No G.711 A-law, no Opus, no G.722 — this will be a hard stop if your carrier or peer requires anything else, and modern WebRTC interop is simply not possible. Version 0.1 since the initial commit and last serious activity looks sporadic; SIP stacks bit-rot fast when RFCs get errata and carriers start enforcing edge cases. No TLS/SRTP support visible in the tree, which means your signaling and audio are in plaintext — fine for internal lab use, a problem in production with any reasonable security posture. The examples are all test files rather than runnable programs, which makes the onboarding experience harder than it needs to be.

View on GitHub →

// 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 →