The MQTT App Home Assistant Users Reach for on iPhone
MQTT Commander is a native iOS and iPadOS app that lets you connect to your Mosquitto add-on, browse the homeassistant/# discovery tree, decode JSON payloads on the spot, and publish commands to verify that every entity responds correctly — all from your iPhone or iPad, no laptop required.
Coming soon to the App Store · $2.99
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 See Every Entity Instantly
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, making it easy to confirm that your sensors are publishing the values Home Assistant is actually receiving. 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 will warn you before you publish with retain enabled, and ask 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, takes seconds 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 even 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 surfaces a plain-language explanation of exactly where the handshake broke down. Certificate Wizard walks you through importing a CA bundle or a client certificate for mTLS, and all credentials are stored 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 shows the retained flag prominently on every message in the topic tree, so stale payloads stand out immediately. Once you identify the culprit, use the publish composer to send an empty retained message to that topic — the confirmation dialog makes sure you do not accidentally wipe a live config. 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 directly from your iPhone to your broker — there is no cloud relay, no message proxy, and no account sign-up. Broker hostnames, credentials, and all message payloads are processed entirely on-device and stored 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. This 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 exactly 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 organised 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 automatically 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?
A ghost entity usually means 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 identify 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 will disappear from Home Assistant after the next restart.
Is MQTT Commander a one-time purchase or a subscription?
MQTT Commander is a one-time purchase of $2.99 on the App Store. There is no subscription, no in-app purchases, and no account required. The price covers all current features including MQTT 3.1.1 and 5.0, QoS 0/1/2, TLS and WebSocket transports, the payload inspector, Connection Doctor, Certificate Wizard, and future updates.
Get MQTT Commander
Native for iPhone & iPad. $2.99, one-time.
Coming soon to the App Store · $2.99