Two files. Drop
mongoose.c and mongoose.h into any C/C++ project and get a
full network stack — HTTP, WebSocket, MQTT, TLS, firmware OTA
updates, device dashboard — on any microcontroller or desktop OS.
On the market since 2004, used by vast number of open source and commercial products - it even runs on the International Space Station! Features include:
- Cross-platform:
- works on Linux/UNIX, MacOS, Windows, Android, STM32, NXP, ESP32, Nordic, TI, Microchip, Infineon, Renesas and other chips
- write code once - and it'll work everywhere
- ideal for the unification of the network infrastructure code across company
- Built-in protocols: plain TCP/UDP, SNTP, HTTP, MQTT, Websocket, Modbus-TCP, and other
- Asynchronous DNS resolver
- Tiny static and run-time footprint
- Source code is both ISO C and ISO C++ compliant
- Very easy to integrate
- Own TCP/IP stack for bare metal / RTOS, or run on top of any existing one (lwIP, Zephyr, ...)
- Built-in TLS 1.3 ECC stack. Also can use external TLS libraries - mbedTLS, OpenSSL, or other
- Does not depend on any other software to implement networking
- Built-in firmware updates for STM32 H5, STM32 H7, NXP IMXRT, RP2040/2350, ESP32 and more
- Commercial support with proactive security updates; CRA-compliant
Mongoose is ideal for IoT devices, embedded web servers, OTA updates, MQTT telemetry, secure device dashboards, REST APIs on microcontrollers
See https://mongoose.ws/ for complete documentation, videos, case studies, etc.
Mongoose can work on top of any TCP/IP stack that supports BSD sockets API. Platforms supported by the 3rd party TCP/IP stacks:
| TCP/IP stack | Notes |
|---|---|
| lwIP | All devices running lwIP, for example ESP32, ESP32S3, ESP32C3, ESP32C6, etc |
| Zephyr | All devices supported by Zephyr |
| Other | Any other TCP/IP stack that supports BSD socket API, for example Amazon FreeRTOS-TCP |
| Linux, Mac, Windows | Workstations, server, single board computers, embedded Linux devices running on MPUs or FPGAs |