finds.dev← search

// the find

warmcat/libwebsockets

★ 5,294 · C · NOASSERTION · updated Jun 2026

canonical libwebsockets.org networking library

libwebsockets is a C networking library covering HTTP/1, HTTP/2, HTTP/3, WebSockets, MQTT, and QUIC from embedded RTOS (ESP32, FreeRTOS, Pico) up to Linux servers. It's been around since ~2010, actively maintained by one person (Andy Green), and the 'canonical' in the description is accurate — this is the reference implementation many embedded systems ship. The Secure Streams API is the main abstraction layer worth knowing about: it separates connection policy (JSON config) from user code, making the wire protocol nearly irrelevant to the application layer.

The TLS backend matrix is genuinely impressive — GnuTLS, BoringSSL, wolfSSL, mbedTLS, SChannel, BearSSL, aws-lc all supported, with QUIC working on most of them (OpenSSL being the notable exception due to upstream API gaps). The Secure Streams serialization story is clever: the same application code runs whether the connection is fulfilled in-process or proxied over UART to a device with no network stack, as the Pico+UART example demonstrates. The 582-build CI across 30 platforms is not marketing — the .sai.json and custom Sai CI infrastructure are real, and this is one of the few C networking projects where cross-platform regressions actually get caught. 100+ CC0-licensed minimal examples mean you can usually find a working starting point rather than staring at the API headers.

The API surface is enormous and the learning curve is steep — there are two full API layers (wsi-level and Secure Streams), and the wsi layer has 100+ callback types that you need to handle correctly or get silent misbehavior. Single maintainer is a real bus-factor risk; the README's section on AI-assisted patching reads as a maintainability SOS rather than a feature. The CMakeLists.txt is hundreds of lines of conditional compile flags, and misconfiguring them produces libraries that silently lack features rather than failing loudly. Documentation lives across dozens of individual READMEs and a Doxygen site, with no single coherent guide to understanding the connection lifecycle — you'll spend time piecing it together from scattered sources.

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 →