// the find
DrmagicE/gmqtt
Gmqtt is a flexible, high-performance MQTT broker library that fully implements the MQTT protocol V3.x and V5 in golang
Gmqtt is a Go library for embedding a full MQTT broker into your application, supporting both v3.1/3.1.1 and v5 protocols. It's designed to be extended via a hook system and plugin architecture rather than configured as a standalone product. Target audience is Go developers who need MQTT brokering as a component, not operators looking for a drop-in broker.
The hook system is genuinely well thought out — 18+ hook points covering the full client lifecycle (OnAccept through OnClosed) give you fine-grained control over auth, ACL, and message mutation without forking the core. Full v5 protocol support including enhanced auth and topic aliases is rare in Go broker libraries. The persistence layer is properly abstracted with pluggable backends (memory vs Redis) and clean interfaces, so swapping storage doesn't touch broker logic. gRPC + REST admin API via the admin plugin means you can introspect and publish messages programmatically without hacking internal state.
The README opens with 'This project is less maintained due to personal reasons' — that's not a minor caveat, it's a yellow flag for production adoption. The federation/clustering feature is explicitly marked experimental and has never been used in production, so horizontal scaling is effectively off the table. Redis is the only non-memory persistence backend; if you want Postgres or anything else you're writing it yourself. The auth plugin stores passwords as MD5 hashes (visible in the API response example showing 'password':'20a0db53bc...' as a hex string), which is 2010-era security practice.