Skip to main content

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
  • $SYS topic 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 public tenant

Cluster and high availability

  • Raft-based cluster coordination
  • Dedicated raft groups for topic metadata, session actor mapping, and session state
  • bootstrap and join startup 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