// the find
cesanta/mongoose
Embedded web server, with TCP/IP network stack, MQTT and Websocket
Mongoose is a networking library for embedded systems: drop two files into your project and get HTTP, WebSocket, MQTT, TLS, and a built-in TCP/IP stack. It targets microcontrollers (STM32, NXP, ESP32, RP2040) and bare-metal environments where you can't link against a full OS network stack. If you're putting a web dashboard or MQTT telemetry on a device, this is the serious option.
The two-file integration story is real — mongoose.c and mongoose.h compile clean on everything from Linux to a Cortex-M4 without a build system ceremony. The built-in TCP/IP stack means you can skip lwIP entirely on STM32/NXP Ethernet targets, which removes a dependency and a config headache. OSS-Fuzz + asan CI on every commit is a meaningful commitment for a C networking library handling untrusted input. The OTA firmware update support is baked in for a dozen specific MCU families, not left as an exercise for the reader.
The license is GPLv2 or commercial — if you're shipping a proprietary embedded product you're writing a check to Cesanta, which is a real cost many teams don't budget for until late in the project. The event-driven callback model is correct for embedded but actively hostile to sequential logic; anything beyond trivial flows quickly becomes deeply nested callbacks or explicit state machines. The two-file amalgamation is 200KB+ of C with all drivers included — you can configure out what you don't need but it's not discoverable what that costs you. Documentation lives almost entirely on mongoose.ws rather than in-repo, so offline development or air-gapped builds mean you lose the guides.