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
- MQTT v5.0 common client messaging path
- QoS 0, 1, and 2
- Retained messages
- Last will and testament
- Persistent sessions
- MQTT 5.0 session expiry and message expiry
- Shared subscriptions with
$share/<group>/<filter> $SYStopic publishing with ASCII decimal numeric payloads- 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
- Broker-integrated request hooks cover authentication, authorization,
OnMessagePublish, andOnMessageSubscribe OnMessagePublishcan reject a publish or rewrite topic, payload, retain flag, and dup flag before retain storage, QoS state persistence, and routingOnMessageSubscribecan reject a topic filter or downgrade the final granted QoS before subscription storage and retained-message delivery- Event-style hooks are available for disconnect and message/subscription lifecycle notifications
Operations and management
- Basic-auth protected REST API
- Plugin list, client list, topic list, retained message, and system information endpoints
- Node-local
/metricsendpoint for OpenMetrics-style broker counters - Cluster membership and raft metrics endpoints
- Configurable log level and listener rate limits
Not implemented yet
- MQTT 5.0 enhanced authentication, Topic Alias, and Subscription Identifier
- Disk-backed message persistence
- Built-in global cluster metrics aggregation
- Web UI dashboard