I build and debug the parts of telephony that carry actual calls: SIP proxies, media relays, and the tooling around them. I have been contributing upstream since 2006. Most of my work is on OpenSIPS, Kamailio, rtpengine, FreeSWITCH and Asterisk — upstream where it belongs, and in my own tools where nothing suitable existed.
20 years contributing upstream (since 2006) · 68 merged pull requests across 9 upstream projects · 10 conference talks, 2013–2026
| Project | What it is | |
|---|---|---|
| sipnab · sipnab.com | SIP & RTP capture, analysis and security. One binary, one dependency (libpcap). | |
| opensips-lsp | Language server for OpenSIPS routing scripts — completion, diagnostics, go-to-definition. | |
| kamailio-lsp | The same, for Kamailio configuration files. | |
| devstack-core | Local VoIP development infrastructure — Docker, Postgres, MongoDB, RabbitMQ, Prometheus, Grafana. | |
| voip-stack | Production-shaped OpenSIPS + Asterisk + rtpengine deployment. | |
| homebrew-tap | brew install NormB/tap/sipnab |
|
| mod_mosquitto | FreeSWITCH ↔ MQTT event handler. Lives upstream under the FreeSWITCH org. |
Not yet upstream. Three branches live in my OpenSIPS fork while they mature:
| Branch | What it adds |
|---|---|
feature/nats |
NATS support for OpenSIPS — event_nats, cachedb_nats, cachedb_nats_fts and nats_consumer, over a shared lib/nats, with fault-model and TLS-backend docs. 618 commits. |
feature/rust |
A Rust module SDK for OpenSIPS 4.0 (rust) plus six modules written against it — ACL, concurrent-call limits, credit check, HTTP webhooks, REFER handling and session timers. 106 commits. |
feature/rtpengine-subscribe-publish |
rtpengine_subscribe_request(), rtpengine_subscribe_answer(), rtpengine_publish() and unsubscribe script functions, with docs covering the all flag, L16 transcoding and multi-section SDP. +497 lines. |
Two decades of features and fixes that landed in other people's projects, oldest first.
| When | What |
|---|---|
| 2006 | The OpenSIPS PostgreSQL driver — rewrote db_postgres in the OpenSER days, adding connection pooling and fetch support. 58 commits to the module between 2006 and 2021, third by commit count (module docs). |
| 2008–2009 | FreeRADIUS patches for CDRTool — FreeRADIUS could not account for failed SIP sessions. Five patches adding acct type Failed (15) and MySQL stored-procedure support, carried in AG Projects' CDRTool as contrib/freeradius-brandinger/ and referenced from its install guide. |
| 2019 | mod_mosquitto — FreeSWITCH event handler bridging FreeSWITCH events to an MQTT broker. Written from scratch; now maintained upstream under the FreeSWITCH org. |
| 2021 | TLS for PostgreSQL in OpenSIPS — db_postgres use_tls, letting any OpenSIPS module reach Postgres over TLS via a tls_mgm client domain. |
| 2024 | Reported asterisk/asterisk#651 — MySQL 8.3 turned qualify into a reserved word, breaking Asterisk's alembic table scripts; fixed upstream. |
| 2024–2025 | Networking enhancements across four OpenSIPS modules — dispatcher ping_sock partition parameter, MySQL Unix-socket connections, Redis MOVED redirection, and per-socket rtpengine command routing. |
| 2026 | Kamailio fixes — tm transaction leak on drop, dialog race in link_dlg_profile, swapped comparison in core atomics, and a NULL deref in rtpengine DTMF handling. |
| 2026 | Per-key TTL in the NATS C client — brought nats.c KV to parity with nats.go's per-key TTL and limit markers, plus a follow-up preserving the create-path error through the marker-aware retry. |
Merged pull request counts by project — every number links to the search that produces it
Counts hide the interesting part. The OpenSIPS work alone spans at least a dozen
modules — cachedb_redis, dialog, tm, janus, rtpengine, b2b_entities,
pua_dialoginfo, stir_shaken, sockets_mgm, dispatcher, event_rabbitmq,
cfgutils — and is mostly memory-safety and concurrency work. A sample:
- Redis Cluster support for OpenSIPS — hash-tag support (#3815), safer redirect parsing (#3854), dynamic topology management (#3855) and Unix-socket transport with lazy connect (#3856)
- WebSocket fragment reassembly in the Janus module — RFC 6455 §5.4; fragmented frames were previously rejected outright
- Use-after-free and race in dialog cluster replication, and a
race in
sockets_mgmreceive_fd that spun the process on reload - STIR/SHAKEN: strip RFC 4904 user parameters from telephone numbers
- FreeSWITCH core —
switch_rtpmax-missed-packets handling, XML generation, a mod_v8 compile warning and switch_core parameter docs - Password handling in valkey-admin — decrypt passthrough and double-encryption fixes
- SIP→WebRTC transcoding regression tests —
four sipssert scenarios pinning down
rtp_relayissue #3902, contributed to the project's own test suite
- sipnab — deepening protocol coverage (SIP, SDP, RTP/RTCP, STUN/TURN, TLS/DTLS) and the MCP server that exposes it to agents
- opensips-lsp / kamailio-lsp — bringing real editor tooling to SIP routing scripts, which have never had any
- OpenSIPS upstream — reproducing and fixing memory-safety and concurrency bugs (use-after-free, races, leaks) across the dialog, tm, Redis and media modules, and writing regression tests so they stay fixed
- devstack-core — making a full VoIP stack reproducible on an ARM laptop
Speaking on SIP and real-time media since 2013, mostly at the OpenSIPS Summit and ClueCon.
| Year | Talk | Venue |
|---|---|---|
| 2026 | OpenSIPS Development with an AI Apprentice: Core Patches, Redis Clustering, and a Rust Module — recording | OpenSIPS Summit, Bucharest |
| 2025 | Networking Enhancements to the Dispatcher, MySQL, Redis & rtpengine modules — slides | OpenSIPS Summit, Amsterdam |
| 2024 | Foundations of building a highly available OpenSIPS / rtpengine system — slides | OpenSIPS Summit, Valencia |
| 2023 | An experimental module written in Rust — slides | OpenSIPS Summit, Houston |
| 2021 | How OpenSIPS solved a tricky SIPREC problem — recording · slides · writeup | OpenSIPS Summit, Distributed |
| 2020 | mod_mosquitto — building a FreeSWITCH event_handler module | ClueCon |
Earlier talks, 2013–2018
| Year | Talk | Venue |
|---|---|---|
| 2018 | Mid-registrar and registration redirection — slides | OpenSIPS Summit, Amsterdam |
| 2014 | Advanced SIP routing with FreeSWITCH modules | ClueCon |
| 2014 | Advanced SIP routing with OpenSIPS modules — slides | OpenSIPS Summit, Chicago |
| 2013 | High availability with OpenSIPS — slides | OpenSIPS Summit, Chicago |
Technical reviewer for FreeSWITCH 1.2 (Packt Publishing, second edition, May 2013, ISBN 978-1-78216-100-4).
SIP stacks OpenSIPS · Kamailio · Asterisk · FreeSWITCH
Media rtpengine · RTP/RTCP · SRTP · SDP · codecs
Languages Rust · C · Shell · Python
Data & bus Valkey/Redis · PostgreSQL · MongoDB · RabbitMQ · NATS
Ops Docker · Prometheus · Grafana · HAProxy · libpcap
Testing SIPp · tcpdump/pcap analysis · fault reproduction
sipnab.com · n.brandinger@gmail.com · linkedin.com/in/nbrandinger
For anything about a specific project, an issue on that repository reaches me fastest.





