// the find
meshtastic/Meshtastic-Android
Android application for Meshtastic
The Android (and now Compose Desktop) companion app for Meshtastic, an open-source LoRa mesh radio network. It handles BLE pairing with ESP32 devices, renders the mesh map, relays encrypted messages, and manages device configuration. The target audience is off-grid radio hobbyists, emergency comms operators, and anyone who wants to communicate without cellular infrastructure.
The KMP architecture is genuinely well-executed — business logic lives in `core:domain` and `core:data` with no Android imports, which is how KMP is supposed to work, not just aspirationally. The module breakdown is unusually granular (22+ modules, each with its own README), which keeps feature teams from stepping on each other. The two-flavor build (fdroid vs google) correctly isolates proprietary dependencies — F-Droid flavor ships OSMDroid while the Google flavor uses Google Maps, with Gemini Nano for the AI docs assistant only available in the Google build. BLE transport uses Kable behind a multiplatform interface, so the same coroutine-based connection logic runs on both Android and Desktop without platform ifdefs scattered everywhere.
The `.agent_memory/` directory checked into the repo is a red flag — AI session state has no business being in version control, and it signals some rough edges in their AI-assisted workflow hygiene. The TAK server bridge (`core/takserver`) is a niche feature that lives in core rather than a feature module, which breaks the architectural pattern everything else follows. Desktop support is still described as 'Compose Desktop' but the primary README leads with Android — Desktop is an afterthought and likely has gaps wherever Android-specific APIs leaked through the multiplatform boundary. The Google flavor requires a `MAPS_API_KEY` in `local.properties` with no default or mock fallback, so new contributors get a build error on their first `./gradlew assembleGoogle` without reading the README carefully.