Feature
YedMQ focuses on a practical MQTT broker core for distributed IoT systems. The items below describe the current implementation rather than planned future scope.
MQTT broker capabilities
- MQTT v3.1.1
- QoS 0, 1, and 2
- Retained messages
- Last will and testament
- Persistent sessions
$SYStopic publishing- Configurable maximum message size
Network listeners
- MQTT over TCP
- MQTT over TLS
- MQTT over WebSocket
- MQTT over Secure WebSocket
- REST management API
Multi-tenant behavior
- Tenant identity can be assigned by the authentication plugin
- Sessions, topics, retained messages, and client identities are isolated per tenant
- Connections without an assigned tenant use the default
publictenant
Cluster and high availability
- Raft-based cluster coordination
- Dedicated raft groups for topic metadata, session actor mapping, and session state
bootstrapandjoinstartup modes for first-node and scale-out workflows- REST endpoints for learner addition, membership changes, metrics, and raft initialization
Plugin system
- Plugin packages live in subdirectories under
plugin.dir - Plugins are launched as child processes
- Communication uses a local socket plus Protobuf messages
- Hook chains are ordered by priority
- Current broker integration centers on authentication, authorization, message publish, and disconnect-related flows
Operations and management
- Basic-auth protected REST API
- Plugin list, client list, topic list, retained message, and system information endpoints
- Cluster metrics and membership management endpoints
- Configurable log level and listener rate limits
Not implemented yet
- MQTT v5.0
- Shared subscriptions
- Disk-backed message persistence
- Prometheus metrics
- Web UI dashboard