An Erlang MQTT client library and CLI tool supporting MQTT v5.0, v3.1.1, and v3.1.
emqtt is an open-source MQTT client library and command-line tool implemented in Erlang. It enables applications to connect to MQTT brokers for publish/subscribe messaging, supporting protocol versions 5.0, 3.1.1, and 3.1. It solves the need for a robust, protocol-compliant client in Erlang ecosystems, particularly for IoT and distributed systems.
Erlang/Elixir developers building IoT applications, real-time messaging systems, or tools that need to interact with MQTT brokers. It's also useful for DevOps engineers and testers who need a CLI for MQTT debugging and automation.
Developers choose emqtt for its native Erlang implementation, which offers reliability and concurrency benefits, full MQTT v5.0 support, and the dual utility of both a library and a CLI. Its support for multiple transports (TCP, TLS, WebSocket, QUIC) and enhanced authentication provides flexibility not found in many other clients.
Erlang MQTT 5.0 Client
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports the latest MQTT v5.0 protocol with enhanced authentication and properties, alongside v3.1.1 and v3.1, ensuring compatibility with modern brokers.
Includes command-line tools 'emqtt pub' and 'emqtt sub' for quick testing and scripting, plus a comprehensive Erlang API for programmatic integration.
Offers TCP, TLS/SSL, WebSocket, and experimental QUIC transports, providing flexible connectivity for diverse network environments.
Leverages Erlang's strengths in fault tolerance and concurrency, making it robust for scalable IoT and real-time messaging systems.
The command-line interface does not support enhanced authentication mechanisms for MQTT v5.0, limiting advanced security testing without using the library.
QUIC transport is experimental and may cause compilation problems, requiring a build flag to disable it, as noted in the README.
Requires Erlang/OTP installation and building from source, which can be cumbersome for teams not already invested in the Erlang ecosystem.