# MQTTX: a chat window, a CLI and a web client for poking at MQTT brokers

> MQTTX is EMQ's open source, Apache-2.0 MQTT 5.0 client toolbox running on macOS, Linux and Windows as a desktop app, plus a CLI and a WebSocket client. Its chat-like interface tests connections, publishing and subscriptions over MQTT/TCP, MQTT/TLS and MQTT/WebSocket, and the repository now ships a skill file so coding agents can drive the CLI themselves.

**emqx/MQTTX** — A Powerful and All-in-One MQTT 5.0 client toolbox for Desktop, CLI and WebSocket.

- Repository: https://github.com/emqx/MQTTX
- Website: https://mqttx.app
- Stars: 5,066 · Forks: 549
- Language: TypeScript
- License: Apache-2.0
- Published: 2026-09-23 · Updated: 2026-09-23 · Language: en
- Canonical page: https://hysenlabs.com/projects/emqx-mqttx

## Publish and subscribe as a conversation

MQTTX simplifies test operation with a familiar, chat-like interface, which is the right metaphor for a pub/sub protocol, messages arrive like chat lines, and publishing is typing into a box. It is easy and quick to create multiple simultaneous online MQTT client connections, so a publish on one connection can be watched arriving on another, the fundamental MQTT test loop, without juggling two installations. It tests the connection, publishing and subscription functions of MQTT/TCP, MQTT/TLS and MQTT/WebSocket as well as other MQTT protocol features, and it supports formatting MQTT payload, turning raw bytes into readable JSON or other structured views. The protocol itself, MQ Telemetry Transport, is a publish/subscribe messaging protocol designed for constrained devices and low-bandwidth, high-latency or unreliable networks, and MQTTX targets the 5.0 generation of it specifically. Payload formatting in particular matters for IoT debugging, where devices exchange JSON, binary encodings or hex strings and the difference between a readable view and a byte dump decides whether a problem is visible at all.

## Desktop in every store, CLI and web in Docker

The installation surface is unusually broad. The desktop app is available on the macOS App Store, installable via Homebrew with

```shell
brew install --cask mqttx
```

and distributed for Linux through both Snapcraft and Flathub as com.emqx.MQTTX, covering the two competing desktop Linux package ecosystems. GitHub Releases and the EMQ download page carry direct packages for all three operating systems. Beyond desktop, Docker images exist for the other two form factors, emqx/mqttx-cli for the command line tool and emqx/mqttx-web for the browser client, so the same toolbox runs wherever the work happens, including a container that needs no local installation at all.

## A skill file so agents can drive the CLI

The repository's newest surface is its AI agent support, and it is built with unusual care. An INSTALL.md provides installation and update instructions written for agents, including environment detection, package selection and version verification, and the README suggests handing the agent one prompt, read the INSTALL.md URL and follow its instructions, then verify the executable path and version. A full agent skill lives at skills/mqttx-cli, covering connection checks, messaging, MQTT 5 features, TLS and authentication, payload codecs, benchmarks, data simulation and troubleshooting, installable with

```shell
npx skills add emqx/MQTTX --skill mqttx-cli
```

or from a local checkout, or by copying the skill directory into the agent's skills folder. The example task is a publish and subscribe round trip against a local broker at 127.0.0.1:1883, using a unique topic under mqttx-test and finishing within 15 seconds, a specification precise enough to grade.

## broker.emqx.io when you have no broker

The usage walkthrough begins with getting a broker, and offers a shortcut, the public MQTT 5.0 broker provided by EMQX Cloud for testing:

```shell
Broker IP: broker.emqx.io
Broker TCP Port: 1883
Broker SSL Port: 8883
```

For a local broker, EMQX is recommended, described as an open-source, cloud-native, distributed MQTT broker for IoT. Connection setup in the desktop app is three steps, click the plus button in the left menu bar, fill in the required fields in the form, then click Connect in the upper right corner, after which publish and subscription tests can proceed. The deeper documentation lives at mqttx.app/docs with a manual checked into the repository at docs/manual.md, so the reference ships with the source.

## Electron, Vue, TypeORM, SQLite, MQTT.js

The technology stack is six pieces, Electron for the desktop shell, Vue with the Element component library for the interface, TypeScript throughout, TypeORM over SQLite for local persistence, and MQTT.js as the actual protocol implementation. Development wants Node v18, and the flow is git clone, yarn install, then yarn run electron:serve for hot reload development or yarn run electron:build for a production build, with per-platform variants, electron:build-win, electron:build-linux and electron:build-mac, producing operating system specific installers in the dist_electron directory. The repository carries a cypress.json for end to end tests and separate cli and web directories for the other two form factors, one codebase shipping three products.

## Four postinstall patches tell the dependency story

The package.json postinstall script is a small archaeology site, running electron-builder's app-deps step and then four patch scripts, patch-mcp-sdk, patch-monaco-clipboard, patch-azure-sdk and patch-typeorm-uml. Each patch marks a place where an upstream dependency needed adjustment to behave inside this application, an MCP SDK patch that lines up with the agent skill work, a clipboard fix for the Monaco editor, an Azure SDK adjustment, and a TypeORM UML correction. That a desktop MQTT client pulls in Monaco, Azure and MCP libraries at all says something about its scope, it is a workbench with an embedded script editor and cloud connectivity, not a thin socket tool. A SQL debug mode exists too, electron:serve with VUE_APP_SQL_DEBUG set, for watching the local database layer.

## Three READMEs and a steady 1.13 line

The README ships in English, Chinese and Japanese, README-CN.md and README-JP.md alongside the default, matching where MQTT development concentrates. Releases are steady, v1.12.1 on 2025-09-30, v1.13.0 on 2026-01-23 and v1.13.1 on 2026-09-20, with the repository pushed as recently as 2026-09-24. Community channels include GitHub discussions, an official Discord, a Slack invite and the EMQ YouTube channel, alongside the @EMQTech Twitter account. The relationship to the parent company is stated plainly under Better Together with EMQX, one-click connection and a simple graphical interface to debug EMQX or EMQX Cloud, with a 14-day free cloud trial offered, while the client itself stays Apache 2.0 and broker agnostic in practice. A scripts-example directory collects copyable snippets for common tasks, and the docs directory carries the manual that the website mirrors, so offline reference and online reference stay in step.

## Conclusion

Use MQTTX whenever an MQTT broker needs to be observed or provoked by hand, debugging a device integration, checking a subscription path, or benchmarking a broker, since the chat-like interface plus CLI plus web trio covers desk, terminal and browser contexts. Look elsewhere for a long-running production client, this is a test toolbox rather than a service. Before installing, pick the channel that matches your workflow, app stores, cask, snap, flathub, releases or the Docker images, and if an agent will operate it, install the mqttx-cli skill and let it read INSTALL.md so the environment detection and version verification happen correctly.

## FAQ

### How do I install MQTTX?

On macOS, through the App Store or brew install --cask mqttx. On Linux, through Snapcraft or Flathub as com.emqx.MQTTX. Windows and other platforms can download installers from GitHub Releases or the EMQ downloads page, and Docker images exist for the CLI and web clients, emqx/mqttx-cli and emqx/mqttx-web.

### how to use mqttx?

Get a broker first, either the public test broker at broker.emqx.io on TCP port 1883 or SSL port 8883, or a local EMQX installation. Then click the plus button in the left menu bar, fill in the connection fields, click Connect, and perform publish and subscription tests. Full details are at mqttx.app/docs and in the repository's docs/manual.md.

### What does MQTT stand for?

MQTT stands for MQ Telemetry Transport. It is a publish/subscribe, extremely simple and lightweight messaging protocol, designed for constrained devices and low-bandwidth, high-latency or unreliable networks, and MQTTX targets its 5.0 generation.

### Is emqx MQTT free?

MQTTX itself is open source under Apache License 2.0. The EMQX broker it is designed to test is described as an open-source, cloud-native, distributed MQTT broker, and EMQX Cloud is offered with a 14-day free trial for those who prefer a hosted broker.

## Sources

- [emqx/MQTTX on GitHub](https://github.com/emqx/MQTTX)
- [License: Apache-2.0](https://github.com/emqx/MQTTX/blob/main/LICENSE)
- [Project website](https://mqttx.app)
- [README](https://github.com/emqx/MQTTX/blob/main/README.md)
- [Releases](https://github.com/emqx/MQTTX/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/emqx-mqttx
