// the find
wolfSSL/wolfMQTT
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.