This repository is a downstream fork of meshtastic/Meshtastic-Android, maintained by The Official Mesh Admin (
<officialmeshadmin@proton.me>) as part of the Official Mesh suite.Project home: officialmesh.org · GitHub org: github.com/official-mesh
Sibling repos: Firmware · Meshbot · Meshbot Remote · Mesh Dualboot · Python CLI
This fork carries private-port modifications (ports 350–365) that interoperate with the Official Mesh Firmware. It is not affiliated with, endorsed by, licensed from, or authorized by Meshtastic LLC or its maintainers. "Meshtastic" is referenced nominatively to identify the upstream project this client is a fork of. The README body below is the upstream README and may drift over time; treat it as descriptive of the upstream client, not of this fork's specific behavior.
Licensing: the fork is dual-licensed — upstream-derived files remain GPL-3.0; novel files authored for the fork (listed in
LICENSES/AGPL_FILES.txt) are AGPL-3.0-only. SeeNOTICE.md. Verify releases against the fingerprint inKEYSandCONTRIBUTING.mdfor contribution terms.Official Mesh features: see
OFFICIAL_MESH_FEATURES.mdfor the curated map of UI screens to firmware private ports (350–365) and their underlying repository classes.
This is a tool for using Android (and Compose Desktop) with open-source mesh radios. For more information see our webpage: meshtastic.org. If you are looking for the device side code, see here.
This project is currently beta testing across various providers. If you have questions or feedback please Join our discussion forum or the Discord Group . We would love to hear from you!
The easiest, and fastest way to get the latest beta releases is to use our github releases. It is recommend to use these with Obtainium to get the latest updates.
Alternatively, these other providers are also available, but may be slower to update.
The play store is the last to update of these options, but if you want to join the Play Store testing program go to this URL and opt-in to become a tester. If you encounter any problems or have questions, ask us on the discord, create an issue, or post in the forum and we'll help as we can.
Meshtastic Desktop installers (macOS DMG, Windows MSI/EXE, Linux DEB/RPM/AppImage) are available from GitHub Releases. A Flatpak package is maintained at vidplace7/org.meshtastic.desktop.
The project's documentation is generated with Dokka and hosted on GitHub Pages. It is automatically updated on every push to the main branch.
You can generate the documentation locally to preview your changes.
- Run the Dokka task:
./gradlew dokkaGeneratePublicationHtml
- View the output:
The generated HTML files will be located in the
build/dokka/htmldirectory. You can open theindex.htmlfile in your browser to view the documentation.
The app follows modern Android development practices, built on top of a shared Kotlin Multiplatform (KMP) Core:
- KMP Modules: Business logic (
core:domain), data sources (core:data,core:database,core:datastore), and communications (core:network,core:ble) are entirely platform-agnostic, targeting Android and Compose Desktop. - UI: JetBrains Compose Multiplatform (Material 3) using Compose Multiplatform resources.
- State Management: Unidirectional Data Flow (UDF) with ViewModels, Coroutines, and Flow.
- Dependency Injection: Koin with Koin Annotations (K2 Compiler Plugin).
- Navigation: JetBrains Navigation 3 (Multiplatform routing with RESTful deep linking).
- Data Layer: Repository pattern with Room KMP (local DB), DataStore (prefs), and Protobuf (device comms).
The BLE stack uses a multiplatform interface-driven architecture. Platform-agnostic interfaces live in commonMain, utilizing the Kable multiplatform BLE library to handle device communication across all supported targets (Android, Desktop). This provides a robust, Coroutine-based architecture for reliable device communication while remaining fully KMP compatible. See core/ble/README.md for details.
You can help translate the app into your native language using Crowdin.
Developers can integrate with the Meshtastic Android app using our published API library via JitPack. This allows third-party applications (like the ATAK plugin) to communicate with the mesh service via AIDL.
For detailed integration instructions, see core/api/README.md.
Additionally, the app includes a built-in Local TAK Server feature that can be enabled in settings. This runs a local TCP server on port 8089 to allow ATAK clients to connect directly and route their traffic over the mesh.
Warning
Debug and release builds can be installed concurrently. This is solely to enable smoother development, and you should avoid running both apps simultaneously. To ensure proper function, force quit the app not in use.
https://meshtastic.org/docs/development/android/
Note: when building the google flavor locally you will need to supply your own Google Maps Android SDK api key MAPS_API_KEY in local.properties in order to use Google Maps.
e.g.
MAPS_API_KEY=your_google_maps_api_key_hereFor detailed instructions on how to contribute, please see our CONTRIBUTING.md file. For details on our release process, see the RELEASE_PROCESS.md file.
Copyright 2025, Meshtastic LLC. GPL-3.0 license
Releases of this downstream fork are signed by:
The Official Mesh Admin <officialmeshadmin@proton.me>
GPG fingerprint: 9A18 814D 74A6 3138 9F95 6EA0 5F8D 7A5E ED20 3343
The public key is in KEYS at the repo root, or fetch it from a
keyserver:
gpg --keyserver hkps://keys.openpgp.org --recv-keys 9A18814D74A631389F956EA05F8D7A5EED203343Always verify the fingerprint matches the value above before importing.
gpg --verify meshtastic-android-<ver>.apk.asc meshtastic-android-<ver>.apk
git verify-tag v<ver>This signature is independent of, and complementary to, the APK signing key — the APK signature ties the binary to a Play-store-style identity; this GPG signature ties releases of this fork to the maintainer's long-term identity used across the Official Mesh suite.
Releases of upstream meshtastic/Meshtastic-Android are not signed by this
key.




![Download at https://play.google.com/store/apps/details?id=com.geeksville.mesh]](https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png)