ios & ipados status: released · v2026

MQTT Commander

Native MQTT client and debugger for iPhone and iPad. Browse live topics, inspect JSON payloads, publish test messages, and diagnose TLS/auth failures with a stage-by-stage Connection Doctor.

$ specsheet mqtt-commander

role
Solo developer
year
2026
platforms
iOS 17+ · iPadOS 17+
stack
Swift 6 · SwiftUI · MQTTNIO · SwiftNIO
status
released

MQTT Commander is a native iOS and iPadOS MQTT client and debugger (version 1.0.9), built with Swift 6 and SwiftUI for developers, IoT engineers, smart-home power users, and QA teams who need to see what a broker is really sending. It speaks MQTT 3.1.1 and 5.0 over TCP, TLS, and WebSocket, and ships with a demo mode so the whole app can be explored without a real broker.

Problem

MQTT debugging on a phone usually means squinting at raw payloads with no structure, no history, and a generic “connection failed” when TLS or auth goes wrong. Engineers working with Home Assistant, Zigbee2MQTT, Mosquitto, ESPHome, or AWS IoT Core needed a tool that made live traffic legible and made broken connections diagnosable — on the device in their hand.

Solution

MQTT Commander organizes the work into seven focused workspaces:

  • Connections — save broker profiles, connect/disconnect, and monitor status.
  • Live Topics — discover topics as a filtered tree or a whole-broker view.
  • Message Log — full traffic history with powerful filters and JSON/CSV/NDJSON export.
  • Publish — compose messages with templates, QoS/retain, smart-home presets, and a safer retained-delete flow.
  • Certificates — import CA and client certs, configure TLS/mTLS with SNI/ALPN.
  • Connection Doctor — diagnose host/port/auth/TLS failures with recovery hints.
  • Profiles & Diagnostics — manage brokers and review privacy-safe events.

Payloads are readable by default: a JSON inspector pretty-prints and syntax-highlights, diffs two payloads, decodes hex/Base64, previews images, and copies values by JSONPath — with private values masked unless you ask to see them.

Engineering Highlights

  • MQTTNIO transport: built on Apple’s SwiftNIO stack (MQTTNIO 2.13.0) with MQTT 5 properties, QoS 0/1/2, retained messages, Last Will, and wildcard/shared subscriptions over TCP, TLS, and WSS.
  • Connection Doctor: walks the connection stage by stage — Input, DNS, TCP, TLS, certificate, MQTT/CONNACK, auth — and names the exact failing stage with a plain-language cause and suggested fix, reading MQTT 5 reason codes instead of surfacing a generic error.
  • mTLS done properly: import a CA as PEM and a client identity as .p12, with expiry and hostname-mismatch checks, SHA-256 fingerprints, an ALPN list (including the AWS IoT x-amzn-mqtt-ca protocol), and SNI override. Secrets are stored in the iOS Keychain.
  • Privacy-safe by construction: a credential sanitizer keeps secrets, private hostnames, topics, and raw payloads out of diagnostics and out of every CSV/JSON/NDJSON export. The privacy manifest declares no tracking and no collected data types.
  • Shortcuts, Widgets & Automation: an App Intent publishes a saved command by voice or from any Shortcut or iOS automation (arrival, time, NFC), plus three Home Screen widgets — publish button, sensor value, and a sensor trend graph.
  • Resilient networking: auto-reconnect with backoff on network changes, path monitoring, an in-flight operation limiter, and a topic tree built to handle thousands of topics with regex filtering.
  • 11 localizations: shipped in English, French, German, Italian, Japanese, Korean, Portuguese, Russian, Simplified and Traditional Chinese, and Spanish.

Outcome

Available on the App Store as a one-time purchase ($2.99 / 2.99 €) — no subscriptions, no in-app purchases, no ads, and no ad-tracking. Anonymous, opt-out diagnostics power crash reporting and product analytics; nothing else leaves the device.

$ open ./screenshots

Screenshots

MQTT Commander live topic tree browsing a smart-home broker on iPhone
Message Log with the JSON payload inspector open in MQTT Commander
Connection Doctor pinpointing a TLS failure stage in MQTT Commander
Retained-message delete confirmation in the MQTT Commander publish composer
cd ../ back to projects