Cloud Parts

EMQX

An Erlang MQTT broker built for very large device fleets, with a SQL rule engine, now under the Business Source License.

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 →

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 > 80

EMQX, 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.

EMQXHiveMQEclipse Mosquitto
Written inErlangJavaC
Licence of the free brokerBSL 1.1 since 5.9.0 (May 2025); Apache 2.0 core up to 5.8Community Edition: Apache 2.0; HiveMQ Platform is proprietaryEPL 2.0 or EDL 1.0 (BSD-3-Clause)
ClusteringCore 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-nodeNone in the open-source broker, only bridges between brokers; Cedalo’s commercial Pro Mosquitto adds clustering
MQTT versions5.0, 3.1.1, 3.1 (5.0 since EMQ X 3.0, 2018)5, 3.1.1, 3.1 in every edition5.0, 3.1.1, 3.1
Other transportsWebSockets, MQTT over QUIC; MQTT-SN, CoAP, LwM2M gatewaysTLS, WebSocketsWebSockets
Data integrationSQL rule engine with 50+ connectorsEnterprise extensions (Kafka, Kinesis, Pub/Sub, PostgreSQL, MongoDB)None built in
Managed serviceEMQX Cloud: Serverless, Dedicated Flex, BYOCHiveMQ Cloud: Starter, EnterpriseNot 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.0

The 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 + BSL

The 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.1

One 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

  1. 2012

    First commit of emqttd, an MQTT broker in Erlang

  2. 2016

    Relicensed to Apache 2.0; emqttd 1.0 released in April

  3. 2017

    EMQ founded to build a business around the broker

  4. 2018

    EMQ X 3.0, the first version with MQTT 5.0

  5. 2022

    EMQX 5.0 adds Mria core and replicant nodes

  6. 2025

    5.9 moves everything to BSL 1.1 (May); 6.0 adds message queues

Sources28 · facts checked 6 October 2026

Improve this page on GitHub