finds.dev← search

// the find

wolfSSL/wolfMQTT

★ 587 · C · GPL-3.0 · updated Jun 2026

wolfMQTT is a small, fast, portable MQTT client implementation, including support for TLS 1.3.

wolfMQTT is a C MQTT client library built for embedded and constrained environments, tightly coupled with the wolfSSL TLS library. It supports MQTT 3.1.1, 5.0, and MQTT-SN, with a recent addition of a lightweight broker. The target audience is firmware engineers working on IoT devices where mbedTLS or OpenSSL are too heavy.

First, the memory model is explicit and honest — callers supply their own TX/RX buffers at init time, so there are zero hidden heap allocations in the hot path, which is exactly what you need on bare-metal or RTOS targets. Second, MQTT-SN support over UDP is real and tested against Eclipse Paho gateway, not just stubbed out, which is rare in open-source MQTT clients. Third, TLS 1.3 post-quantum support (ML-KEM-768, ML-DSA-65) is already wired in via wolfSSL, making this one of the only embedded MQTT clients that can credibly claim post-quantum readiness today. Fourth, the build system covers an unusually wide surface — autotools, CMake, vcpkg, Arduino, Zephyr, Espressif IDF, QNX, and ThreadX — and the CI matrix actually tests them.

First, the wolfSSL dependency is mandatory for TLS; there is no pluggable TLS backend, so if your platform already uses mbedTLS you are either building two TLS stacks or forking the socket layer yourself. Second, non-blocking I/O requires a separate compile-time flag (--enable-nonblock) and a completely separate example client — it is not a runtime option on the default build, which means application code is not portable between blocking and non-blocking configurations without a rewrite. Third, the broker added in recent versions lacks persistence by default and the encrypted persistence feature is only available on POSIX — not useful for the embedded targets the project is ostensibly designed for. Fourth, the multithreading story has a known Linux caveat buried in the README (conditional signal issues with WOLFMQTT_NO_COND_SIGNAL) with no real fix documented, just a workaround define.

View on GitHub → Homepage ↗

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