Skip to main content

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 coordination
  • mqtt: MQTT protocol implementation
  • plugin_host: plugin discovery, lifecycle management, IPC, and hook dispatch
  • plugin_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.

Continue with