Skip to content
View NormB's full-sized avatar

Organizations

@OpenSIPS

Block or report NormB

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
NormB/README.md

Norm Brandinger

Telecom systems engineer

SIP proxies, media relays, and the C and Rust underneath

OpenSIPS Kamailio FreeSWITCH Asterisk rtpengine Rust C

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


Building

Project What it is
sipnab · sipnab.com SIP & RTP capture, analysis and security. One binary, one dependency (libpcap). stars release
opensips-lsp Language server for OpenSIPS routing scripts — completion, diagnostics, go-to-definition. stars
kamailio-lsp The same, for Kamailio configuration files. stars
devstack-core Local VoIP development infrastructure — Docker, Postgres, MongoDB, RabbitMQ, Prometheus, Grafana. stars
voip-stack Production-shaped OpenSIPS + Asterisk + rtpengine deployment. stars
homebrew-tap brew install NormB/tap/sipnab
mod_mosquitto FreeSWITCH ↔ MQTT event handler. Lives upstream under the FreeSWITCH org. stars

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.

Upstream

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 OpenSIPSdb_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 modulesdispatcher ping_sock partition parameter, MySQL Unix-socket connections, Redis MOVED redirection, and per-socket rtpengine command routing.
2026 Kamailio fixestm 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
Project Merged
OpenSIPS/opensips 45
freeswitch/mod_mosquitto 5
kamailio/kamailio 4
signalwire/freeswitch 4
nats-io/nats.c 2
valkey-io/valkey-admin 1
Vocalocity/rtpcluster 4
signalwire/SignaLWire-ML-examples 2
OpenSIPS/sipssert-opensips-tests 1

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:

Currently

  • 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

Talks

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).

Tech & focus

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

Contact

sipnab.com · n.brandinger@gmail.com · linkedin.com/in/nbrandinger

For anything about a specific project, an issue on that repository reaches me fastest.

Pinned Loading

  1. sipnab sipnab Public

    SIP & RTP capture, analysis, and security tool. One binary, one dependency (libpcap), built in Rust.

    Rust 24 3

  2. opensips-lsp opensips-lsp Public

    Language Server Protocol implementation for the OpenSIPS routing script language (opensips.cfg)

    Rust 1 1

  3. kamailio-lsp kamailio-lsp Public

    Language Server Protocol implementation for the Kamailio configuration file language (kamailio.cfg)

    Rust

  4. devstack-core devstack-core Public

    Comprehensive local development infrastructure for VoIP services on Apple Silicon (M Series Processors) using Colima

    Shell

  5. voip-stack voip-stack Public

    Production-ready VoIP infrastructure with OpenSIPS, Asterisk, and RTPEngine for Apple Silicon

    Shell 2

  6. homebrew-tap homebrew-tap Public

    Homebrew tap for sipnab — brew install NormB/tap/sipnab

    Ruby