meshtastic/Meshtastic-Android

Android application for Meshtastic

1,834

stars

7,885

commits

Kotlin

primary language

Sep 11, 2026

updated

meshtastic.org
android
bluetooth-low-energy
encrypted-messaging
esp32
gps
iot
jetpack-compose
kotlin
kotlin-multiplatform
lora
mapping
mesh-networking
meshtastic
off-grid
protobuf
radio
Browse cluster: Kotlin Android UI with Jetpack Compose

README

Meshtastic Logo

Meshtastic-Android

GitHub all releases Android CI codecov Crowdin CLA assistant Fiscal Contributors Vercel Revved up by Develocity

The Meshtastic client for Android and Compose Desktop — an app for communicating over open-source mesh radios. For more information see our webpage: meshtastic.org. The device-side code lives in the firmware repository.

If you have questions or feedback please Join our discussion forum or the Discord Group. We would love to hear from you!

Features

Highlights of the 2.8 line:

  • Mesh network discovery to surface nodes and channels around you, with Mesh Beacon invitations for joining nearby meshes.
  • Waypoint geofences — draw zones on the map and get alerts when nodes cross them.
  • Secure key backup — encrypted backup, restore, and delete for your device security keys.
  • NFC sharing — write shared contacts and channels to NFC tags.
  • XEdDSA packet signing indicators in the node and messaging UI.
  • Air-quality telemetry — PM1.0, PM2.5, PM10, and CO₂ readings from supported sensors.
  • App Functions / system-AI integration so on-device assistants can trigger common workflows.

Get Meshtastic

The fastest way to get releases is GitHub releases; pair them with Obtainium for automatic updates.

With Obtainium installed, tap a link below on your phone to set it up with everything pre-configured. The google flavor adds Google Crashlytics and Google Maps; fdroid has no Google dependencies.

Channelgoogle flavorfdroid flavor
Latest releaseAddAdd
Open betaAddAdd

What those two channels point at right now:

ChannelCurrentlyReleased
Latest releasev2.8.12026-08-20
Open betanone published right now

Closed-beta and per-commit snapshot channels, importable config files, and the setup details are in Test Builds & Obtainium. These links, files and the table above are generated — see obtainium/.

These providers are also available but may update more slowly.

Get it on F-Droid Get it on IzzyOnDroid Get it on GitHub Get it on Google Play

The play store is the last to update of these options. To join the Play Store testing program, 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.

Desktop

Meshtastic Desktop installers (macOS DMG, Windows MSI/EXE, Linux DEB/RPM/AppImage) are available from GitHub Releases. A Flatpak is available on Flathub (packaging repo: flathub/org.meshtastic.MeshtasticDesktop).

Documentation

The two documentation sites below are deployed to GitHub Pages automatically on every push to main.

SiteURLContents
User & Developer Docsmeshtastic.github.io/Meshtastic-AndroidJekyll site — user guide, developer guide, in-app doc content
API Referencemeshtastic.github.io/Meshtastic-Android/apiDokka-generated KDoc for all public APIs

Generating Locally

User & Developer Docs (Jekyll):

./gradlew generateDocsBundle publishDocsSite
BUNDLE_GEMFILE=docs/Gemfile bundle exec jekyll serve \
  --source build/_site --baseurl ""

API Reference (Dokka):

./gradlew dokkaGeneratePublicationHtml
# Output: build/dokka/html/index.html

Architecture

Modern Android Development (MAD)

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). Protobuf models are consumed from the upstream org.meshtastic:protobufs Maven artifact, pinned in gradle/libs.versions.toml.

Bluetooth Low Energy (BLE)

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.

Module Documentation

Each module has its own README with details on its responsibilities, API surface, and internal design.

ModuleDescription
androidAppAndroid application host — activity, manifest, flavors, root Koin graph
desktopAppCompose Desktop host — window, transports, packaging
core/domainBusiness-logic use cases (radio config, sessions, exports)
core/repositoryData & infrastructure contracts (RadioTransport, NodeRepository, ServiceRepository)
core/takserverMeshtastic ↔ TAK (ATAK/iTAK) bridge — CoT server & conversion
core/bleMultiplatform BLE transport (Kable)
core/networkInternet comms: firmware metadata, map tiles, radio transports
core/dataRepository layer — orchestrates DB, network, and service data
core/databaseRoom KMP local persistence
core/datastoreDataStore preferences
core/serviceMeshtastic Android service abstractions
core/navigationType-safe Navigation 3 route model
core/resourcesCentralised CMP string & drawable resources
core/modelShared domain models
core/uiShared UI components
core/commonCommon utilities
core/diKoin DI modules
core/testingShared test fakes & utilities
core/konsistKonsist architecture-rule tests (KMP boundary guards)
core/nfcNFC support
core/prefsType-safe preferences over multiplatform DataStore
core/barcodeBarcode / QR scanning
feature/messagingMessaging UI feature
feature/mapMap UI feature — shared state, policy, tile sources and the waypoint editor
feature/map-maplibreMapLibre map surfaces shared by the fdroid flavor and Desktop
feature/nodeNode detail UI feature
feature/settingsSettings UI feature
feature/firmwareFirmware update UI feature
feature/introOnboarding / intro UI feature
feature/wifi-provisionWi-Fi provisioning UI feature
feature/connectionsDevice discovery & connection management (BLE / USB / TCP)
feature/discoveryMesh network discovery (scanner, AI summaries, Mesh Beacon)
feature/docsIn-app documentation browser with Chirpy AI assistant
feature/widgetAndroid home-screen Glance widget (live mesh stats)
baselineprofileMacrobenchmark Baseline Profile generation for :androidApp

Translations

You can help translate the app into your native language using Crowdin.

Integration

The app includes a built-in Local TAK Server feature that can be enabled in settings. This runs a loopback-only TLS (mTLS) server on port 8089 so ATAK on the same device can connect directly and route its traffic over the mesh.

Building the Android App

[!WARNING] Debug and release builds install side by side to ease development, but don't run both at once — force-quit the one you are not using.

Follow the Android development guide to set up your environment.

Note: when building the google flavor locally you will need a Google Maps Android SDK api key to use Google Maps. Create secrets.properties at the repo root and set MAPS_API_KEY=…. Without it the build still succeeds with a placeholder key, but map tiles will not load. e.g.

# secrets.properties
MAPS_API_KEY=your_google_maps_api_key_here

Contributing guidelines

For detailed instructions on how to contribute, please see our CONTRIBUTING.md file. For details on our release process, see the RELEASE_PROCESS.md file.

Repository Statistics

Alt

Copyright 2025-2026, Meshtastic LLC. GPL-3.0 license

Contributors

(top 30 of 122)

jamesarich

2,486 commits

andrekir

1,681 commits

geeksville

1,216 commits

renovate[bot]

1,154 commits

meshtastic/Meshtastic-Android

Android application for Meshtastic

1,834

stars

7,885

commits

Kotlin

primary language

Sep 11, 2026

updated

meshtastic.org
android
bluetooth-low-energy
encrypted-messaging
esp32
gps
iot
jetpack-compose
kotlin
kotlin-multiplatform
lora
mapping
mesh-networking
meshtastic
off-grid
protobuf
radio
Browse cluster: Kotlin Android UI with Jetpack Compose

README

Meshtastic Logo

Meshtastic-Android

GitHub all releases Android CI codecov Crowdin CLA assistant Fiscal Contributors Vercel Revved up by Develocity

The Meshtastic client for Android and Compose Desktop — an app for communicating over open-source mesh radios. For more information see our webpage: meshtastic.org. The device-side code lives in the firmware repository.

If you have questions or feedback please Join our discussion forum or the Discord Group. We would love to hear from you!

Features

Highlights of the 2.8 line:

  • Mesh network discovery to surface nodes and channels around you, with Mesh Beacon invitations for joining nearby meshes.
  • Waypoint geofences — draw zones on the map and get alerts when nodes cross them.
  • Secure key backup — encrypted backup, restore, and delete for your device security keys.
  • NFC sharing — write shared contacts and channels to NFC tags.
  • XEdDSA packet signing indicators in the node and messaging UI.
  • Air-quality telemetry — PM1.0, PM2.5, PM10, and CO₂ readings from supported sensors.
  • App Functions / system-AI integration so on-device assistants can trigger common workflows.

Get Meshtastic

The fastest way to get releases is GitHub releases; pair them with Obtainium for automatic updates.

With Obtainium installed, tap a link below on your phone to set it up with everything pre-configured. The google flavor adds Google Crashlytics and Google Maps; fdroid has no Google dependencies.

Channelgoogle flavorfdroid flavor
Latest releaseAddAdd
Open betaAddAdd

What those two channels point at right now:

ChannelCurrentlyReleased
Latest releasev2.8.12026-08-20
Open betanone published right now

Closed-beta and per-commit snapshot channels, importable config files, and the setup details are in Test Builds & Obtainium. These links, files and the table above are generated — see obtainium/.

These providers are also available but may update more slowly.

Get it on F-Droid Get it on IzzyOnDroid Get it on GitHub Get it on Google Play

The play store is the last to update of these options. To join the Play Store testing program, 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.

Desktop

Meshtastic Desktop installers (macOS DMG, Windows MSI/EXE, Linux DEB/RPM/AppImage) are available from GitHub Releases. A Flatpak is available on Flathub (packaging repo: flathub/org.meshtastic.MeshtasticDesktop).

Documentation

The two documentation sites below are deployed to GitHub Pages automatically on every push to main.

SiteURLContents
User & Developer Docsmeshtastic.github.io/Meshtastic-AndroidJekyll site — user guide, developer guide, in-app doc content
API Referencemeshtastic.github.io/Meshtastic-Android/apiDokka-generated KDoc for all public APIs

Generating Locally

User & Developer Docs (Jekyll):

./gradlew generateDocsBundle publishDocsSite
BUNDLE_GEMFILE=docs/Gemfile bundle exec jekyll serve \
  --source build/_site --baseurl ""

API Reference (Dokka):

./gradlew dokkaGeneratePublicationHtml
# Output: build/dokka/html/index.html

Architecture

Modern Android Development (MAD)

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). Protobuf models are consumed from the upstream org.meshtastic:protobufs Maven artifact, pinned in gradle/libs.versions.toml.

Bluetooth Low Energy (BLE)

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.

Module Documentation

Each module has its own README with details on its responsibilities, API surface, and internal design.

ModuleDescription
androidAppAndroid application host — activity, manifest, flavors, root Koin graph
desktopAppCompose Desktop host — window, transports, packaging
core/domainBusiness-logic use cases (radio config, sessions, exports)
core/repositoryData & infrastructure contracts (RadioTransport, NodeRepository, ServiceRepository)
core/takserverMeshtastic ↔ TAK (ATAK/iTAK) bridge — CoT server & conversion
core/bleMultiplatform BLE transport (Kable)
core/networkInternet comms: firmware metadata, map tiles, radio transports
core/dataRepository layer — orchestrates DB, network, and service data
core/databaseRoom KMP local persistence
core/datastoreDataStore preferences
core/serviceMeshtastic Android service abstractions
core/navigationType-safe Navigation 3 route model
core/resourcesCentralised CMP string & drawable resources
core/modelShared domain models
core/uiShared UI components
core/commonCommon utilities
core/diKoin DI modules
core/testingShared test fakes & utilities
core/konsistKonsist architecture-rule tests (KMP boundary guards)
core/nfcNFC support
core/prefsType-safe preferences over multiplatform DataStore
core/barcodeBarcode / QR scanning
feature/messagingMessaging UI feature
feature/mapMap UI feature — shared state, policy, tile sources and the waypoint editor
feature/map-maplibreMapLibre map surfaces shared by the fdroid flavor and Desktop
feature/nodeNode detail UI feature
feature/settingsSettings UI feature
feature/firmwareFirmware update UI feature
feature/introOnboarding / intro UI feature
feature/wifi-provisionWi-Fi provisioning UI feature
feature/connectionsDevice discovery & connection management (BLE / USB / TCP)
feature/discoveryMesh network discovery (scanner, AI summaries, Mesh Beacon)
feature/docsIn-app documentation browser with Chirpy AI assistant
feature/widgetAndroid home-screen Glance widget (live mesh stats)
baselineprofileMacrobenchmark Baseline Profile generation for :androidApp

Translations

You can help translate the app into your native language using Crowdin.

Integration

The app includes a built-in Local TAK Server feature that can be enabled in settings. This runs a loopback-only TLS (mTLS) server on port 8089 so ATAK on the same device can connect directly and route its traffic over the mesh.

Building the Android App

[!WARNING] Debug and release builds install side by side to ease development, but don't run both at once — force-quit the one you are not using.

Follow the Android development guide to set up your environment.

Note: when building the google flavor locally you will need a Google Maps Android SDK api key to use Google Maps. Create secrets.properties at the repo root and set MAPS_API_KEY=…. Without it the build still succeeds with a placeholder key, but map tiles will not load. e.g.

# secrets.properties
MAPS_API_KEY=your_google_maps_api_key_here

Contributing guidelines

For detailed instructions on how to contribute, please see our CONTRIBUTING.md file. For details on our release process, see the RELEASE_PROCESS.md file.

Repository Statistics

Alt

Copyright 2025-2026, Meshtastic LLC. GPL-3.0 license

Contributors

(top 30 of 122)

jamesarich

2,486 commits

andrekir

1,681 commits

geeksville

1,216 commits

renovate[bot]

1,154 commits

Languages

Kotlin

97.4%

Shell

1.2%