Repolode
vernemq

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

    Install Erlang/OTP 27-29 and libsnappy-dev, plus a C compiler

  2. 2

    Build VerneMQ from the source tree

    make rel
  3. 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