Show HN: An extensible pub/sub messaging server for edge applications

Narwhal vows easier chat for apps; HN split between “finally!” and “why again”

TLDR: Narwhal is a new Rust-based message hub that keeps routing simple and pushes app logic to a separate service. Commenters argued whether it’s a smart middle ground or just reinventing old chat tech, with concerns about a single modulator, real-world proof, and hype versus usefulness.

Show HN dropped Narwhal, a lightweight “publish/subscribe” server—that’s tech-speak for a message hub—aimed at “edge” apps like phones and IoT gadgets. The twist: it offloads the brainy stuff (auth, permissions, validation) to an external Modulator, so the server just routes messages. Fans cheered: “Keep the core thin, let my app do the smarts.” Skeptics rolled eyes: “We’ve seen XMPP (chat protocol) and MQTT (IoT messaging) do this for years.”

The fiercest debate? One server, one modulator. Supporters say it ensures consistent rules; critics cry single point of failure and “edge but centralized.” Some called it a clever middle ground between heavyweight XMPP and rigid MQTT; others dubbed it “Yet Another Messaging Thing” with shiny Rust paint. Benchmarks got the side‑eye (“Show me production, not lab numbers”), while the OpenSSL test command became a mini‑meme: “If it doesn’t work in s_client, is it even real?”

Naming jokes flew (“A whale with a router for a horn”), and Rust fans flexed while cynics warned that fast code doesn’t fix product fit. Still, the examples—from simple username/password to JSON validators and private messages—won points for practicality. The vibe: cautiously curious, sass-loaded, and waiting for a real-world demo to prove this isn’t just another edge-lord gadget.

Key Points

  • Narwhal is an extensible pub/sub messaging server for edge applications, implemented in asynchronous Rust.
  • It delegates authentication, authorization, validation, and other logic to an external “modulator,” with a one-to-one server-to-modulator relationship.
  • The system supports three connection types: client-to-server (C2S), server-to-modulator (S2M), and modulator-to-server (M2S).
  • Features include TLS/SSL by default with dev certificate generation, fine-grained channel management, and high performance routing.
  • Setup requires Rust 1.90+ and OpenSSL; configuration is via TOML, with example modulators and documentation provided.

Hottest takes

“Cool idea, but ‘one modulator per server’ screams SPOF” — snarkbyte
“It’s XMPP with a haircut and MQTT with vibes—ship a real app” — mqtt_monk
“Rust is fast, sure, but who’s paying the complexity tax?” — rustacean_irl
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.