Version 1.0.30 · free, no limits

An MQTT broker you can see through

ELX-MQTT Broker is a Go broker with a full web dashboard. MQTT 3.1.1 and 5.0 are implemented from scratch, completely, with no third-party libraries. One binary, no dependencies: install it and it runs.

Debian · Ubuntu · Windows x64 · Linux arm64 and armhf

Installing on Debian / Ubuntu
$ sudo apt-get install elxmqttbroker
Setting up elxmqttbroker (1.0.30) ...
Created symlink /etc/systemd/system/multi-user.target.wants/elxmqttbroker.service

ELX MQTT Broker 1.0.30 — listening on :1883, :8883, dashboard on :8080
state restored retained=128 sessions=7 subscriptions=34 delayed=2
2 protocol versions: 3.1.1 and 5.0
0 third-party MQTT libraries
7 dashboard languages
6 credential sources

Everything you expect from a broker — plus a dashboard to watch it

The broker does not just deliver messages, it shows exactly what is happening: who is connected, which topics are alive, what the limiters drop.

Complete MQTT 5.0

Every packet property, topic aliases, shared subscriptions via $share, subscription identifiers, No Local, Retain Handling, Will Delay, Message Expiry, reason codes, the AUTH packet.

A live dashboard

Message-rate and traffic charts, machine health, active topics and an event feed — streamed over WebSocket, with no page reloads.

Topic-level permissions

ACL rules of filter + access + allow or deny, deny-by-default, and a $u placeholder that confines a client to its own branch in a single line.

Broker-to-broker bridging

Server-level two-way topic forwarding: out/in/both directions, prefixes, TLS, loop protection and automatic reconnect.

Delayed publish

Publishing to $delayed/60/topic reaches subscribers a minute later. EMQX-compatible, survives a restart, and the queue is visible and cancellable in the dashboard.

Flood control and topic limits

A per-connection token bucket plus per-topic-pattern rules: thin a stream down to a rate (keeping the latest value) or drop it entirely.

Six credential sources

The built-in list, MariaDB/MySQL, SQLite, CSV, JWT and an external HTTP service. Switching happens live, without restarting the broker.

REST API

Everything the dashboard does is available with a bearer token: provision devices and grant permissions from your own system. Read-only tokens are supported.

Survives restarts

Retained messages, persistent sessions, offline queues and delayed messages live in pure-Go SQLite — no CGO and no external database.

Installing takes a minute

An APT repository package for Debian and Ubuntu, a ready binary for Windows. No Docker, no runtime, no libraries to install.

  1. Add the key and the repository

    sudo wget -qO /usr/share/keyrings/elx-repo.gpg https://repo.um-d.ru/elx-repo.gpg
    echo "deb [signed-by=/usr/share/keyrings/elx-repo.gpg] https://repo.um-d.ru stable main" | sudo tee /etc/apt/sources.list.d/elx-repo.list
  2. Refresh the package list

    sudo apt-get update
  3. Install the broker

    sudo apt-get install elxmqttbroker
  1. Download the installer from the download page

  2. Run it and pick “Install as a Windows service”

  3. Open the dashboard and sign in as admin / admin

    http://localhost:8080

Once installed, the dashboard waits on :8080, MQTT on :1883 and MQTT over TLS on :8883. The default login is admin / admin — change it on first sign-in.

All download options →

What it looks like

Dark and light themes, seven interface languages, live charts. The dashboard is part of the broker — there is nothing separate to install.

Screenshot: What it looks like

All 24 screens →

What is supported

The codec encodes and decodes all 15 packet types, and topics are matched against the table from the specification.

Shared by 3.1.1 and 5.0

  • QoS 0, 1 and 2 with full handshakes
  • Redelivery after reconnect
  • Retained messages and branch clearing
  • Last Will and Testament
  • Clean and persistent sessions
  • Keep-alive and session takeover
  • The + and # wildcards
  • A $SYS tree with statistics

MQTT 5.0 only

  • Every packet property
  • Topic aliases in both directions
  • Session Expiry Interval
  • Receive Maximum and flow control
  • Subscription identifiers
  • Shared subscriptions $share/group/filter
  • No Local and Retain As Published
  • Retain Handling 0/1/2
  • Will Delay and Message Expiry
  • Content Type, Response Topic, Correlation Data
  • User Properties and reason codes
  • Server-side DISCONNECT and the AUTH packet

Transports

  • :1883 — MQTT over TCP
  • :8883 — MQTT over TLS
  • :8080/mqtt — MQTT over WebSocket
  • :8080 — the web dashboard
  • A TLS certificate is generated on first run
  • Your own certificate goes in the config

Install it and try

The broker is free, the number of devices and messages is unlimited, and no sign-up is required.