Overview
YedMQ is a distributed MQTT broker written in Rust for modern IoT and device messaging systems. The current implementation focuses on MQTT v3.1.1 and MQTT 5.0 client traffic, multi-tenant isolation, Raft-backed clustering, and a process-based plugin runtime.
Project status
The YedMQ repository is now open on GitHub. YedMQ is still under active development and is not yet recommended for production use.
What YedMQ provides today
- MQTT v3.1.1 and MQTT 5.0 broker capabilities including QoS 0, 1, and 2, retained messages, last will, persistent sessions, session expiry, message expiry, and shared subscriptions
- TCP, TLS, WebSocket, and WSS listeners
- Tenant-aware routing, session handling, and REST operations
- Raft-managed cluster state for topics, session actor map, and session state
- Process-based plugins for authentication, authorization, message publish handling, and event-style integrations
- REST management API for plugins, clients, topics, retained messages, system information, and cluster operations
Architecture at a glance
YedMQ is split into a few clear runtime components:
broker: listeners, router, sessions, REST API, and cluster coordinationmqtt: MQTT protocol implementationplugin_host: plugin discovery, lifecycle management, IPC, and hook dispatchplugin_protocol: Protobuf definitions shared by the broker and plugins
Current boundaries
- MQTT 5.0 support is intentionally conservative. Enhanced authentication, Topic Alias, and Subscription Identifier are not implemented yet.
- The plugin runtime is process-based. Dynamic library loading is not part of the current implementation.
- The generated OpenAPI pages are the canonical API reference for request and response details.