A native Android MQTT client that provides a structured topic browser with message history.
Inspired by MQTT Explorer by Thomas Nordquist — reimplemented as a native Android app.
- Topic Tree — Hierarchical, collapsible view of all MQTT topics (auto-subscribes to
#) - Branch Statistics — Parent nodes show record count and total message count across child topics
- Message History — Tap any topic to view the message log with timestamps (
HH:mm:ss.SSS) - Live Updates — New messages appear in real-time
- Search & Filter — Filter the topic tree by name
- Subscribe / Unsubscribe — Add wildcard subscriptions (e.g.
MBusino/#) via FAB - Connection Manager — Save and reuse broker connections (stored in SharedPreferences)
- Auto-Reconnect — Reconnects automatically when the app returns from background
- Manual Reconnect — Reconnect button when connection is lost
- Dark Mode — Follows system theme
| Connection | Topic Tree | Message Detail |
|---|---|---|
![]() |
![]() |
![]() |
- Android 8.0+ (API 26)
- Any MQTT broker (tested with Mosquitto)
Download the latest .apk from Releases and install it. You may need to enable "Unknown sources" in your Android settings.
- Enter your broker address (default:
192.168.1.8:1883) - Optionally enter username/password
- Tap Connect
- Browse the topic tree — tap a topic to see its message history
- Use the + button to subscribe to specific topics or wildcards
- Language: Kotlin
- UI: Jetpack Compose + Material 3
- MQTT: Eclipse Paho MQTT Client v3 (
MqttAsyncClient) - Architecture: Single Activity, Jetpack Navigation, ViewModel per screen
- Build: Gradle 8.5, compileSdk 34, minSdk 26
MQTTBrowser/
├── app/src/main/java/com/mbusino/mqttexplorer/
│ ├── MainActivity.kt # Navigation host + lifecycle handling
│ ├── MqttExplorerApp.kt # Application class
│ ├── mqtt/MqttManager.kt # MQTT client wrapper (singleton)
│ ├── data/
│ │ ├── TopicNode.kt # Topic tree model + branch stats
│ │ └── ConnectionSettings.kt # Connection data + SharedPreferences storage
│ ├── viewmodel/
│ │ ├── ConnectionViewModel.kt # Connection screen logic
│ │ ├── TreeViewModel.kt # Tree screen logic
│ │ └── DetailViewModel.kt # Detail screen logic
│ └── ui/
│ ├── theme/ # Material 3 theme (Color, Type, Theme)
│ ├── screens/
│ │ ├── ConnectionScreen.kt # Broker connection UI
│ │ ├── TreeScreen.kt # Topic tree browser
│ │ └── DetailScreen.kt # Message history view
│ └── components/
│ └── TopicTreeItem.kt # Tree node component with branch stats
This project was inspired by MQTT Explorer by Thomas Nordquist. MQTT Explorer is a comprehensive Electron/React desktop MQTT client licensed under CC BY-SA 4.0.
MQTT Browser is a complete native Android rewrite — none of the original source code was used. The concept (hierarchical topic tree, message history per topic, search/filter) comes from MQTT Explorer, but the implementation is entirely new:
| Component | Origin |
|---|---|
Topic tree model (TopicNode) |
Written from scratch |
MQTT client wrapper (MqttManager) |
Written from scratch (Eclipse Paho) |
| All UI screens (Compose) | Written from scratch (Material 3) |
| Connection storage | Written from scratch (SharedPreferences + Gson) |
| Branch statistics | New feature (not in original MQTT Explorer) |
| Auto-reconnect | New feature (not in original MQTT Explorer) |
Concept & Requirements: Zeppelin500
Design, Code & Implementation: ZeppelinsBot (Data)
This project is released under the GNU General Public License v3.0.
See CHANGELOG.md.



