finds.dev← search

// the find

pion/turn

★ 2,234 · Go · MIT · updated Jul 2026

Pion TURN, an API for building TURN clients and servers

pion/turn is a Go library for building TURN and STUN servers and clients, implementing RFC 5389, 5766, 6062, and 6156. It's part of the broader Pion WebRTC ecosystem and is designed to be embedded in your own Go application rather than deployed as a standalone binary. The target audience is developers building WebRTC infrastructure or anything that needs NAT traversal relay support.

The library-not-binary design is the right call — you write auth logic in Go code instead of fighting config file syntax, and plugging in your own metrics or logging is straightforward. The example set is genuinely useful: bandwidth quota, permission filtering, mTLS auth, long-term credential REST endpoints, and IPv6 are all covered. E2E tests run against coturn for cross-implementation compatibility, which catches spec ambiguities that unit tests miss. Active maintenance (last push yesterday) with renovate, fuzz testing, and a golangci-lint config suggests this isn't abandonware.

The API surface is relatively low-level — you're responsible for wiring auth, logging, relay address generation, and lifetime management yourself, so the path from 'example compiling' to 'production-ready server' is longer than it looks. No built-in clustering or shared-state support; scaling beyond a single process means rolling your own allocation synchronization. The roadmap defers to the WebRTC repo's issue tracker, which makes it hard to know what's actually planned for this library specifically. Documentation outside of examples is thin — GoDoc exists but there's no architectural guide explaining nonce handling, allocation lifecycle, or the five-tuple model for someone unfamiliar with the RFCs.

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 →