An open source MQTT broker (server) supporting MQTT 5.0, 3.1.1 and 3.1, plus C/C++ client libraries and command-line tools.
vernemq/vernemq
A distributed, Erlang-based MQTT message broker for IoT and industrial messaging, supporting MQTT 3.1, 3.1.1 and 5.0.
- Stars
- 3,642
- Forks
- 432
- Open issues
- 172
- Last commit
- 3 days ago
What is it?
VerneMQ is an Apache 2.0 licensed MQTT message broker written in Erlang. It routes publish/subscribe messages between devices and applications, and is designed to scale horizontally across a cluster on commodity hardware while handling many concurrent publishers and subscribers.
The broker implements MQTT 3.1, 3.1.1 and 5.0, with QoS 0, 1 and 2, TLS, WebSockets, shared subscriptions, bridges and offline message storage backed by LevelDB. Authentication and authorization can be delegated to MongoDB, Redis, MySQL, PostgreSQL, CockroachDB or HTTP webhooks, and it exposes an administration HTTP API, $SYS monitoring topics and a cluster status page.
Building from source requires Erlang/OTP 27 to 29 and libsnappy-dev, and the project provides binary packages and a Docker image. Commercial support is offered by the maintainers.
Key features
- 01Implements MQTT 3.1, 3.1.1 and 5.0 with QoS 0, 1 and 2.
- 02Distributed clustering with session balancing and shared subscriptions.
- 03TLS and WebSocket support for encrypted and browser-based connections.
- 04Authentication and authorization via MongoDB, Redis, MySQL, PostgreSQL or HTTP webhooks.
- 05Offline message storage backed by LevelDB.
- 06Administration HTTP API and $SYS monitoring topics.
Use cases
- Collecting telemetry from large fleets of IoT or industrial devices.
- Serving as the messaging hub for a smart-product or IoT platform.
- Bridging factory-floor devices to cloud applications over MQTT.
- Running a multi-node MQTT backbone that must tolerate node failures.
Quick start
- 1
Install Erlang/OTP 27-29 and libsnappy-dev, plus a C compiler
- 2
Build VerneMQ from the source tree
make rel - 3
Start the built VerneMQ server
bin/vernemq start
Things to know
- Requires Erlang/OTP 27-29 and libsnappy-dev, so building from source takes some setup.
- Commercial support and binary packages are offered separately from the open-source project.
In collections
Topics
FAQ
- What is vernemq?
- A distributed, Erlang-based MQTT message broker for IoT and industrial messaging, supporting MQTT 3.1, 3.1.1 and 5.0. VerneMQ is an Apache 2.0 licensed MQTT message broker written in Erlang. It routes publish/subscribe messages between devices and applications, and is designed to scale horizontally across a cluster on commodity hardware while handling many concurrent publishers and subscribers.
- Is vernemq free to use? What license does it have?
- vernemq is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is vernemq still maintained?
- Actively maintained. The last commit to vernemq was on Oct 22, 2026.
- What can I use vernemq for?
- Collecting telemetry from large fleets of IoT or industrial devices. Serving as the messaging hub for a smart-product or IoT platform. Bridging factory-floor devices to cloud applications over MQTT. Running a multi-node MQTT backbone that must tolerate node failures.
- How do I install vernemq?
- Install Erlang/OTP 27-29 and libsnappy-dev, plus a C compiler Build VerneMQ from the source tree: make rel Start the built VerneMQ server: bin/vernemq start
- Where can I get vernemq?
- The source code and installation instructions are on GitHub: https://github.com/vernemq/vernemq
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Open-source, high-performance time-series database for IoT, connected cars and industrial IoT workloads, with SQL querying.
An actor-model framework for Go, inspired by Erlang/OTP, for building supervised, network-transparent distributed systems.
Distributed task queue for Python that runs background jobs and schedules work across workers and message brokers.
A portable runtime that gives distributed apps and AI agents durable workflows, service-to-service security, state, and pub/sub through a sidecar.
An orchestration engine for background tasks, AI agents and durable workflows, with Python, TypeScript, Go and Ruby SDKs and Postgres as its durability layer.