
EMQX
An Erlang MQTT broker built for very large device fleets, with a SQL rule engine, now under the Business Source License.
- What it is
- IoT device messaging
- Type
- Commercial product
- Made by
- EMQ Technologies Inc.
- License
- Business Source License 1.1 since 5.9.0 (May 2025; source-available, not OSI open source, each version becomes Apache 2.0 after four years); Apache 2.0 core up to 5.8.x; EMQX Cloud is proprietary
- Facts checked
- 6 October 2026
What it is
Devices connect to EMQX over MQTT 5.0, 3.1.1 or 3.1, over WebSockets or MQTT over QUIC, or through gateways for MQTT-SN, CoAP and LwM2M. The broker keeps each client’s session and subscriptions and copies every published message to the matching subscribers. Nodes are Erlang VMs joined by Erlang distribution. Since 5.0, a layer called Mria splits them into core nodes, which hold and replicate the routing table, the topic tree and persistent session data, and replicant nodes, which take client connections and receive changes asynchronously through a replication log. Replicants can be added or removed without growing the full mesh between cores. A built-in rule engine runs SQL such as SELECT payload.temp FROM "plant/+/temp" on each message and sends the results to Kafka, PostgreSQL, ClickHouse, S3 and more than 50 other systems.
Since 5.9.0 (May 2025) there is one edition under the Business Source License 1.1. It is free for non-production use and for production on a single node, unless you offer it to third parties as a hosted service or embedded in a product; schools and non-profits may use it freely when not for commercial profit. Clusters need a commercial licence (a 15-day trial allows 10,000 sessions). Each version becomes Apache 2.0 four years after release. EMQX Cloud Serverless is free up to 1 million session minutes, 1 GB of traffic and 1 million rule actions a month, then $2.00 per million session minutes, $0.15 per GB and $0.25 per million rule actions, for up to 1,000 connections. Dedicated Flex starts at $234 a month; BYOC and self-managed Enterprise are quoted (list prices checked 6 October 2026).
Why teams pick it
- Built for scale: EMQ reported 100 million MQTT clients connected to one 23-node cluster when it released 5.0
- SQL rule engine inside the broker filters and reshapes messages and writes them to Kafka (both ways), databases and object storage with no extra service
- Many ways in: MQTT 5.0, 3.1.1 and 3.1, MQTT over QUIC and WebSockets, and gateways for MQTT-SN, CoAP and LwM2M
- Managed options from a free Serverless tier to dedicated clusters and BYOC in your own cloud account; 6.0 added durable, load-balanced message queues on
$q/topics
Watch out for
- No longer open source: since 5.9.0 the BSL allows production use only on a single node, and never as a hosted service or embedded in a product you sell, without a commercial licence
- The last Apache 2.0 line is 5.8 (5.8.9, December 2025), and even there connectors such as Kafka were BSL-licensed enterprise code
- Serverless caps at 1,000 connections and 1,000 message transactions per second; session minutes include offline clients with persistent sessions, connections under a minute count as a full minute, and traffic is billed in both directions
- Dedicated Flex charges its hourly base fee whatever the load, and a suspended pay-as-you-go deployment still costs $0.06 an hour for data retention
- Running your own cluster means operating Erlang nodes; core nodes should share a private network with under 10 ms of latency
Alternatives
What all iot device messaging have in common →
AWS IoT CoreAWSAWS’s managed MQTT broker for devices, with per-device certificates, a SQL rules engine that routes messages into AWS services, and cloud-side device state.
Eclipse ZenohIncubatingOpen sourceA pub/sub, query and storage protocol that runs peer to peer or through routers, from microcontrollers to the cloud; also a ROS 2 middleware.How it fits with other technologies
A rule that picks out overheating readings (EMQX rule engine) · sql
-- Runs on every message published to plant/<line>/temp.
-- Attach an action in the Dashboard or REST API: republish, Kafka, PostgreSQL...
SELECT
clientid,
topic,
payload.temp AS temp,
timestamp
FROM
"plant/+/temp"
WHERE
payload.temp > 80EMQX, HiveMQ and Mosquitto#
Three widely used MQTT brokers. All speak MQTT 5.0, so devices can move between them; they differ most in licence and in what you have to pay for to run more than one node.
| EMQX | HiveMQ | Eclipse Mosquitto | |
|---|---|---|---|
| Written in | Erlang | Java | C |
| Licence of the free broker | BSL 1.1 since 5.9.0 (May 2025); Apache 2.0 core up to 5.8 | Community Edition: Apache 2.0; HiveMQ Platform is proprietary | EPL 2.0 or EDL 1.0 (BSD-3-Clause) |
| Clustering | Core and replicant nodes; needs a commercial licence (the free licence is single-node) | Masterless cluster in the paid Platform and Cloud; Community Edition is single-node | None in the open-source broker, only bridges between brokers; Cedalo’s commercial Pro Mosquitto adds clustering |
| MQTT versions | 5.0, 3.1.1, 3.1 (5.0 since EMQ X 3.0, 2018) | 5, 3.1.1, 3.1 in every edition | 5.0, 3.1.1, 3.1 |
| Other transports | WebSockets, MQTT over QUIC; MQTT-SN, CoAP, LwM2M gateways | TLS, WebSockets | WebSockets |
| Data integration | SQL rule engine with 50+ connectors | Enterprise extensions (Kafka, Kinesis, Pub/Sub, PostgreSQL, MongoDB) | None built in |
| Managed service | EMQX Cloud: Serverless, Dedicated Flex, BYOC | HiveMQ Cloud: Starter, Enterprise | Not from Eclipse; Cedalo sells Pro Mosquitto |
EMQX licences by version#
Check which version you run: the licence changed twice in four years.
1.0 to 4.x
Apache 2.0The repository moved from MPL 1.1 (2012) to MIT (2014) to Apache 2.0 in February 2016, two months before emqttd 1.0.
5.0 to 5.8
Apache 2.0 + BSLThe core stayed Apache 2.0, but EMQX Enterprise code in the same repository, such as the Kafka connector, was under BSL 1.1. The 5.8 line got patches until 5.8.9 in December 2025.
5.9.0 and later
BSL 1.1One edition for everything. Free for non-production and single-node production, not as a hosted or embedded offering; education and non-profit use is free. Each version converts to Apache 2.0 four years after it is published, so 5.9.0 (May 2025) converts in 2029.
See it in a real stack
No architecture uses EMQX yet. Drop it into the playground and wire it up yourself.Open playground →Where it came from2012–2025
EMQX began in December 2012 as emqttd, an open-source MQTT broker written in Erlang; its 2014 licence file names Feng Lee as the copyright holder. After two years and more than fifty iterations, emqttd 1.0 shipped in April 2016 with full MQTT 3.1.1 support, clustering between broker nodes and a claim of 1 million connections on a single server.
EMQ, the company behind it, was founded in 2017 and is now based in Menlo Park, California, with offices including Hangzhou and Stockholm. Renamed EMQ X, the broker’s 3.0 release in December 2018 was its first to support MQTT 5.0. EMQX 5.0, in June 2022, added Mria: core nodes hold the shared tables and replicant nodes copy them asynchronously. EMQ reported 100 million MQTT clients on a 23-node cluster.
The licence followed the business. Version 5.0 put enterprise features under the Business Source License, and in May 2025 EMQX 5.9 merged the open-source and enterprise editions into one BSL 1.1 product. CEO Feng Lee said the change meant “accelerating our investment in MQTT and AI”.
Why it’s built this way
- Erlang/OTP
- Erlang’s built-in distribution joins broker nodes into a cluster: each node is named
name@host, nodes authenticate with a shared cookie and pass messages over TCP. - Core and replicant nodes
- In a full-mesh cluster every node talks to every other. Mria lets replicants apply routing changes asynchronously, which cuts that network overhead and lets them scale up and down without affecting consistency.
- A SQL rule engine inside the broker
- Filtering, transforming and routing messages in the broker, with no custom code, means device data can reach Kafka or a database without a separate bridge service to write and run.
- One source-available edition
- EMQ wanted to keep the code public while funding development. BSL 1.1 lets anyone read and run it, limits production to a single node, and turns each version into Apache 2.0 after four years.
Timeline
- 2012
First commit of emqttd, an MQTT broker in Erlang
- 2016
Relicensed to Apache 2.0; emqttd 1.0 released in April
- 2017
EMQ founded to build a business around the broker
- 2018
EMQ X 3.0, the first version with MQTT 5.0
- 2022
EMQX 5.0 adds Mria core and replicant nodes
- 2025
5.9 moves everything to BSL 1.1 (May); 6.0 adds message queues
- emqx/emqx: LICENSE in December 2014 (MIT, copyright Feng Lee)
- emqx/emqx release: emqttd v1.0 (April 2016)
- emqx/emqx release: EMQ X 3.0 beta.1, first release with MQTT 5.0 (September 2018)
- emqx/emqx release: EMQX 5.0.0 (June 2022; Mria, 100 million clients on 23 nodes)
- EMQ news: EMQX adopts the Business Source License (May 2025)
- EMQ: About (founded 2017, offices)
Sources28 · facts checked 6 October 2026
- emqx/emqx on GitHub (README: protocols, features, licence note)
- emqx/emqx: LICENSE (BSL 1.1, Additional Use Grant, Change Date)
- emqx/emqx: commit switching LICENSE to BSL 1.1 for 5.9.0 and later (April 2025)
- emqx/emqx: LICENSE at v5.8.9 (Apache 2.0 default, BSL for Enterprise apps)
- emqx/emqx: first LICENSE, MPL 1.1 (December 2012)
- emqx/emqx: relicensed to Apache 2.0 (February 2016)
- emqx/emqx release: v5.8.9 (December 2025)
- emqx/emqx release: e5.9.0 (May 2025)
- EMQ news: EMQX adopts the Business Source License (May 2025)
- EMQX docs: License (Community, trial and commercial licences)
- EMQX docs: Cluster introduction (Erlang distribution, Mria core and replicant nodes)
- EMQX pricing (Serverless, Dedicated Flex, BYOC, Enterprise)
- EMQX Cloud docs: Pricing and billing
- EMQX docs: Listener configuration (TCP, SSL, WebSocket ports)
- EMQX docs: Rule SQL syntax
- EMQX docs: Stream MQTT data into Apache Kafka
- EMQX docs: Ingest MQTT data into PostgreSQL
- EMQX docs: Ingest MQTT data into TimescaleDB
- EMQX docs: Ingest MQTT data into ClickHouse
- EMQX docs: Ingest MQTT data into GreptimeDB
- EMQX docs: Ingest MQTT data into Amazon S3
- EMQX Enterprise 6.0.0 changelog (September 2025; message queues)
- Eclipse Mosquitto (supported MQTT versions)
- mosquitto.conf man page (bridges, WebSockets listeners)
- eclipse-mosquitto/mosquitto: LICENSE.txt (EPL-2.0 OR BSD-3-Clause)
- Cedalo: Pro Mosquitto (clustering and high availability)
- hivemq/hivemq-community-edition on GitHub (Java, Apache 2.0, MQTT 3 and 5)
- HiveMQ docs: Clustering