The Home Assistant MQTT App for iPhone and iPad

MQTT Commander is a native iOS and iPadOS app for your Home Assistant broker. Connect to the Mosquitto add-on, browse the homeassistant/# discovery tree, decode JSON payloads on the spot, and publish commands to check that an entity responds, all from your iPhone or iPad.

Free · Pro unlock $4.99, one-time

The Home Assistant MQTT App for iPhone and iPad
Free
free download, optional $4.99 one-time Pro unlock
MQTT 5.0
and MQTT 3.1.1 fully supported
iOS 17+
iPhone and iPad, native SwiftUI
QoS 0/1/2
with retained and Last Will support

Who it's for

  • Home Assistant users who want to inspect MQTT discovery and entity state from their phone
  • Makers integrating Zigbee2MQTT, Z-Wave JS, or custom ESPHome devices via MQTT
  • Anyone troubleshooting a Mosquitto add-on connection or stale retained payloads
  • Developers writing custom MQTT automations who need a fast publish-and-verify loop
  • Power users who want full QoS 0/1/2 control and TLS/mTLS security on the go

Subscribe to homeassistant/# and Watch Entities Arrive

MQTT Commander ships with a built-in preset for the homeassistant/# discovery prefix, so you can start exploring your broker in one tap. Once connected, the topic tree updates in real time: watch homeassistant/switch/porch_light/config appear the moment a device announces itself, then drill into the payload inspector to read the JSON discovery document, diff it against the previous message, or view raw hex and Base64. The same inspector works on state topics like homeassistant/sensor/temperature/state, so you can confirm your sensors publish the values Home Assistant receives. Learn more in our Home Assistant guide.

Publish Test Commands Without Leaving Your Phone

The publish composer lets you draft a message before it goes anywhere. Type or paste a JSON payload, set the topic, choose QoS, and toggle the retain flag. MQTT Commander warns you before you publish with retain enabled, and asks for confirmation before deleting a retained message. Use it to send ON or OFF to a homeassistant/switch/.../command topic and watch Home Assistant react in the companion app side-by-side. Publishing {"brightness": 128, "state": "ON"} to a light entity, or a JSON command to a climate device, works the same way from the iOS app.

Fix Mosquitto Add-on Connection Issues with Connection Doctor

Connecting to the Mosquitto add-on from outside your home network, or from the same Wi-Fi with an IP typo, can be frustrating. Connection Doctor runs staged diagnostics: it checks DNS resolution, TCP reachability on port 1883 (or your custom port), TLS handshake validity, and MQTT CONNACK reason codes, then explains in plain language where the handshake broke down. Certificate Manager walks you through importing a CA bundle or a client certificate for mTLS, and the app keeps all credentials in the iOS Keychain, never in a plain-text config file. WebSocket and WSS transports are supported alongside raw TCP and TLS, so you can reach Mosquitto through an NGINX reverse proxy or the Home Assistant Cloud tunnel.

Spot and Clear Stale Retained Discovery Payloads

A retained homeassistant/# discovery message that lingers after you remove a device will cause a ghost entity to keep reappearing in Home Assistant. MQTT Commander flags retained messages in the topic tree, so stale payloads stand out. Once you find the culprit, use the publish composer to send an empty retained message to that topic. The confirmation dialog stops you from wiping a live config by mistake. The built-in zigbee2mqtt/# preset extends the same workflow to your Zigbee coordinator, letting you audit device announces and bridge logs from the same app session.

Privacy-First: Your Broker Data Never Leaves Your Device

MQTT Commander connects from your iPhone straight to your broker. There is no cloud relay, no message proxy, and no account sign-up. The app processes broker hostnames, credentials, and message payloads on-device, and stores them in the iOS Keychain or local app storage. The only data that leaves your phone is anonymous, opt-out crash diagnostics via Sentry and anonymous usage counts via Aptabase, neither of which contains any broker or payload information. That makes the app suitable for home-lab setups that handle personal sensor data, energy monitoring, or security devices.

Frequently asked questions

Can MQTT Commander connect to the Mosquitto add-on in Home Assistant?

Yes. Enter the local IP address or hostname of your Home Assistant instance, port 1883 for plain TCP or 8883 for TLS, and the credentials you set up for the Mosquitto add-on. If you expose Mosquitto through an NGINX reverse proxy or use WebSocket transport on port 9001, those transports are supported too. Connection Doctor will tell you which step fails if the connection does not succeed.

Does the app support the homeassistant/# wildcard subscription?

Yes. You can subscribe to homeassistant/# with a single tap using the built-in Home Assistant preset, or type any wildcard topic manually. MQTT Commander supports both single-level (+) and multi-level (#) wildcards, as well as shared subscriptions. All matching messages appear in a live topic tree organized by hierarchy.

How do I view and decode the JSON payloads that Home Assistant sends over MQTT?

Tap any message in the topic tree to open the payload inspector. It detects JSON and renders it in a formatted tree view. You can switch to a diff view to see what changed between the last two messages on that topic, or view the raw bytes as hex or Base64. JSONPath queries let you extract a specific field from a complex discovery or state payload.

Can I publish commands to Home Assistant entities from my iPhone?

Yes. Open the publish composer, enter the command topic (for example homeassistant/switch/porch_light/command), type your payload such as ON or a JSON object, choose QoS, and send. The composer supports draft mode so you can prepare a message and review it before it is sent. A retain warning appears if you have the retain flag enabled, and deleting a retained message requires a separate confirmation step.

What do I do if Home Assistant shows a ghost entity that keeps coming back?

In most cases a retained discovery payload is still sitting on the broker for a device you have already removed. In MQTT Commander, subscribe to homeassistant/# and look for topics flagged as retained in the topic tree. Once you find the stale topic, use the publish composer to send an empty payload to that exact topic with the retain flag enabled. This overwrites the broker's stored message, and the ghost entity disappears from Home Assistant after the next restart.

Is MQTT Commander a one-time purchase or a subscription?

MQTT Commander is free to download on the App Store, with no subscription, no ads and no account required. You get MQTT 3.1.1 and 5.0, QoS 0/1/2, TLS and WebSocket transports, the payload inspector, Connection Doctor and the Certificate Manager. A one-time $4.99 Pro unlock adds Lock Screen and Home Screen widgets, extra broker profiles, log export and unlimited pinned topics, and you keep it across future updates.

Get MQTT Commander

Native for iPhone & iPad. Free · Pro unlock $4.99, one-time.

Free · Pro unlock $4.99, one-time