ELXSoftware

Industrial automation and IoT

ELX-MQTT Broker

A complete MQTT broker with a live web dashboard

MQTT 3.1.1 and 5.0 implemented from scratch, with no third-party protocol libraries. A single binary that carries its own dashboard, storage and TLS: install it and it runs.

v1.0.39 WindowsLinuxARM Free

Both protocol versions, in full

MQTT 3.1.1 and 5.0 written from the specification: every packet property, topic aliases, shared subscriptions, subscription identifiers, No Local, Retain Handling, Will Delay, Message Expiry, reason codes and the AUTH packet.

A dashboard that shows the traffic

Message rates, bandwidth, connected clients, live topics and an event feed — streamed over WebSocket with no page reloads. You can see a misbehaving device rather than deduce it.

Permissions per topic

Access rules are filter plus access plus allow or deny, denied by default. A single line with the $u placeholder confines a client to its own branch of the tree.

Bridges to other brokers

Two-way topic forwarding at the server level: direction, prefixes, TLS, loop protection and automatic reconnect. Joining two installations does not need a script in the middle.

Delayed publish and rate limits

Publishing to $delayed/60/topic arrives a minute later and survives a restart. A per-connection token bucket and per-topic rules thin a chatty sensor down instead of dropping the client.

Everything over REST

Whatever the dashboard can do, a bearer token can do: provision devices, grant permissions, read statistics. Read-only tokens exist for monitoring systems.

Screenshots

The dashboard: message rate, traffic, connections and machine health at a glance
Connected clients with their protocol version, subscriptions and traffic
The live topic tree with rates and retained values
Bandwidth and message-rate history
Publishing a message by hand, with QoS and retain
Topic rewrite rules
Users and their topic permissions
Broker settings: ports, TLS, limits and persistence
Bridges to other brokers
Built-in documentation, available offline inside the broker

What it is

ELX-MQTT Broker is a message broker for the MQTT protocol — the transport most sensors, controllers and home-automation systems speak. Devices publish messages to topics, other devices subscribe to those topics, and the broker sits in the middle deciding who may talk to whom and making sure nothing is lost along the way.

The protocol here is not a wrapper around somebody else's library. Both versions are implemented directly from the specification, which is why the awkward parts — shared subscriptions, message expiry, will delay, flow control — actually behave as the specification says rather than as a dependency happened to implement them.

One file, no dependenciesThe dashboard, the assets, the storage engine and the TLS stack are inside the executable. There is no Docker image to pull, no runtime to install and no external database to configure — even persistence uses a pure-Go SQLite that needs no CGO.

What it does

AreaWhat you get
ProtocolMQTT 3.1.1 and 5.0, QoS 0/1/2, retained messages, Last Will, persistent sessions, offline queues
TransportsPlain TCP, TLS, MQTT over WebSocket and secure WebSocket
DashboardLive charts, client list, topic tree, event feed, publish form, settings — in seven languages
Access controlTopic-level ACLs, deny by default, per-user placeholders, read/write separation
CredentialsBuilt-in list, MariaDB or MySQL, SQLite, CSV, JWT, external HTTP service
RoutingTopic rewrite rules, automatic subscriptions, broker-to-broker bridges
Traffic shapingPer-connection token bucket, per-topic rate limits and drop rules
SchedulingDelayed publish through $delayed, EMQX-compatible, visible and cancellable
IntegrationREST API with bearer tokens, read-only tokens, statistics endpoints
PersistenceRetained messages, sessions, queues and delayed messages in SQLite

Getting it running

On Linux, the package installs a systemd service and starts it. On Windows, the executable runs as it is — double-click it and open the dashboard.

Debian / Ubuntu
sudo dpkg -i elxmqttbroker_*.deb
sudo systemctl status elxmqttbroker
# dashboard: http://<server>:8567   MQTT: 1883, TLS: 8883
Windows
elxmqttbroker.exe
# dashboard: http://127.0.0.1:8567
# default login: admin / admin — change it on first entry
Ports1883 is plain MQTT, 8883 is MQTT over TLS, 8567 is the dashboard, and WebSocket shares the dashboard port. All four are configurable, and none of them has to be exposed to the internet for the broker to be useful.

At a glance

Protocol
MQTT 3.1.1 and MQTT 5.0
Operating systems
Debian, Ubuntu, Windows 10 and 11
Architectures
amd64, arm64, armhf
Written in
Go, no CGO
Storage
SQLite, single file
Dashboard languages
Seven
Default ports
1883, 8883, 8567
External dependencies
None

Frequently asked questions

How many clients can it hold?
Tens of thousands of concurrent connections on ordinary server hardware, and several thousand on a small ARM board. The published benchmark report on the download page gives the exact figures and the conditions they were measured under.
Will my existing MQTT clients work with it?
Yes. It is a standard broker: anything that speaks MQTT 3.1.1 or 5.0 — Paho, mosquitto_pub, Node-RED, Home Assistant, ESP32 firmware, industrial gateways — connects without modification.
Can I move over from Mosquitto or EMQX?
Yes, and clients do not need changing. What has to be recreated is the configuration: users, ACLs and bridges live in the dashboard rather than in a text file. Delayed publish is deliberately compatible with the EMQX $delayed syntax.
Does it need a database?
No. It uses SQLite in a single file next to the broker. A database is only involved if you choose to keep credentials in MariaDB or MySQL, and that is optional.
Can I authenticate against my own system?
Yes — point the broker at an HTTP endpoint of yours, and it will ask that endpoint whether a client may connect and what it may do. JWT tokens are supported as well, for devices that already carry one.
Is TLS included?
Yes, on both the MQTT port and the dashboard. Supply a certificate and key, or let it generate a self-signed pair for a closed network.

ELX-MQTT Broker

A complete MQTT broker with a live web dashboard

Download

Nearby programs