{"id":19204825,"url":"https://github.com/meshtastic/meshtastic-android","last_synced_at":"2026-06-02T02:01:26.145Z","repository":{"id":37079703,"uuid":"235221262","full_name":"meshtastic/Meshtastic-Android","owner":"meshtastic","description":"Android application for Meshtastic","archived":false,"fork":false,"pushed_at":"2026-01-30T04:34:36.000Z","size":40909,"stargazers_count":1358,"open_issues_count":59,"forks_count":381,"subscribers_count":41,"default_branch":"main","last_synced_at":"2026-01-30T04:37:20.622Z","etag":null,"topics":["android","gps","lora","meshtastic"],"latest_commit_sha":null,"homepage":"https://meshtastic.org","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/meshtastic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"meshtastic","patreon":null,"open_collective":"meshtastic","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2020-01-20T23:55:32.000Z","updated_at":"2026-01-30T03:16:52.000Z","dependencies_parsed_at":"2023-12-18T19:43:14.316Z","dependency_job_id":"3f480b7d-6b95-43dc-8b23-0df95aafc770","html_url":"https://github.com/meshtastic/Meshtastic-Android","commit_stats":{"total_commits":3250,"total_committers":63,"mean_commits":51.58730158730159,"dds":0.5190769230769231,"last_synced_commit":"a3a3958dfb33257ecdc7542d591e08e332f7ac2b"},"previous_names":[],"tags_count":349,"template":false,"template_full_name":null,"purl":"pkg:github/meshtastic/Meshtastic-Android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshtastic%2FMeshtastic-Android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshtastic%2FMeshtastic-Android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshtastic%2FMeshtastic-Android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshtastic%2FMeshtastic-Android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/meshtastic","download_url":"https://codeload.github.com/meshtastic/Meshtastic-Android/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/meshtastic%2FMeshtastic-Android/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28929862,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T04:05:25.756Z","status":"ssl_error","status_checked_at":"2026-01-31T04:02:35.005Z","response_time":128,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","gps","lora","meshtastic"],"created_at":"2024-11-09T13:09:51.433Z","updated_at":"2026-05-26T23:12:59.278Z","avatar_url":"https://github.com/meshtastic.png","language":"Kotlin","funding_links":["https://github.com/sponsors/meshtastic","https://opencollective.com/meshtastic","https://opencollective.com/meshtastic/"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\".github/meshtastic_logo.png\" alt=\"Meshtastic Logo\" width=\"200\"/\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003eMeshtastic-Android\u003c/h1\u003e\n\n![GitHub all releases](https://img.shields.io/github/downloads/meshtastic/meshtastic-android/total)\n[![Android CI](https://github.com/meshtastic/Meshtastic-Android/actions/workflows/pull-request.yml/badge.svg?branch=main)](https://github.com/meshtastic/Meshtastic-Android/actions/workflows/pull-request.yml)\n[![codecov](https://codecov.io/gh/meshtastic/Meshtastic-Android/graph/badge.svg)](https://codecov.io/gh/meshtastic/Meshtastic-Android)\n[![Crowdin](https://badges.crowdin.net/e/f440f1a5e094a5858dd86deb1adfe83d/localized.svg)](https://crowdin.meshtastic.org/android)\n[![CLA assistant](https://cla-assistant.io/readme/badge/meshtastic/Meshtastic-Android)](https://cla-assistant.io/meshtastic/Meshtastic-Android)\n[![Fiscal Contributors](https://opencollective.com/meshtastic/tiers/badge.svg?label=Fiscal%20Contributors\u0026color=deeppink)](https://opencollective.com/meshtastic/)\n[![Vercel](https://img.shields.io/static/v1?label=Powered%20by\u0026message=Vercel\u0026style=flat\u0026logo=vercel\u0026color=000000)](https://vercel.com?utm_source=meshtastic\u0026utm_campaign=oss)\n\nThis is a tool for using Android (and Compose Desktop) with open-source mesh radios. For more information see our webpage: [meshtastic.org](https://www.meshtastic.org). If you are looking for the device side code, see [here](https://github.com/meshtastic/firmware).\n\nIf you have questions or feedback please [Join our discussion forum](https://github.com/orgs/meshtastic/discussions) or the [Discord Group](https://discord.gg/meshtastic). We would love to hear from you!\n\n\n\n## Get Meshtastic\n\nThe easiest and fastest way to get the latest releases is to use our [GitHub releases](https://github.com/meshtastic/Meshtastic-Android/releases). It is recommended to use these with [Obtainium](https://github.com/ImranR98/Obtainium) to get the latest updates automatically.\n\nAlternatively, these other providers are also available, but may be slower to update. \n\n[\u003cimg src=\"https://fdroid.gitlab.io/artwork/badge/get-it-on.png\"\nalt=\"Get it on F-Droid\"\nwidth=\"24%\"\u003e](https://f-droid.org/packages/com.geeksville.mesh/)\n[\u003cimg src=\"https://gitlab.com/IzzyOnDroid/repo/-/raw/master/assets/IzzyOnDroid.png\"\nalt=\"Get it on IzzyOnDroid\"\nwidth=\"24%\"\u003e](https://apt.izzysoft.de/fdroid/index/apk/com.geeksville.mesh)\n[\u003cimg src=\"https://github.com/machiav3lli/oandbackupx/blob/034b226cea5c1b30eb4f6a6f313e4dadcbb0ece4/badge_github.png\"\nalt=\"Get it on GitHub\"\nwidth=\"24%\"\u003e](https://github.com/meshtastic/Meshtastic-Android/releases)\n[\u003cimg src=\"https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png\"\nalt=\"Download at https://play.google.com/store/apps/details?id=com.geeksville.mesh]\"\nwidth=\"24%\"\u003e](https://play.google.com/store/apps/details?id=com.geeksville.mesh\u0026referrer=utm_source%3Dgithub-android-readme)\n\nThe 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](https://play.google.com/apps/testing/com.geeksville.mesh) and opt-in to become a tester.\nIf you encounter any problems or have questions, [ask us on the discord](https://discord.gg/meshtastic), [create an issue](https://github.com/meshtastic/Meshtastic-Android/issues), or [post in the forum](https://github.com/orgs/meshtastic/discussions) and we'll help as we can.\n\n### Desktop\n\n**Meshtastic Desktop** installers (macOS DMG, Windows MSI/EXE, Linux DEB/RPM/AppImage) are available from [GitHub Releases](https://github.com/meshtastic/Meshtastic-Android/releases). A Flatpak package is maintained at [vidplace7/org.meshtastic.desktop](https://github.com/vidplace7/org.meshtastic.desktop).\n\n## Documentation\n\nBoth sites are deployed to GitHub Pages automatically on every push to `main`.\n\n| Site | URL | Contents |\n|---|---|---|\n| **User \u0026 Developer Docs** | [meshtastic.github.io/Meshtastic-Android](https://meshtastic.github.io/Meshtastic-Android/) | Jekyll site — user guide, developer guide, in-app doc content |\n| **API Reference** | [meshtastic.github.io/Meshtastic-Android/api](https://meshtastic.github.io/Meshtastic-Android/api/) | Dokka-generated KDoc for all public APIs |\n\n### Generating Locally\n\n**User \u0026 Developer Docs (Jekyll):**\n```bash\n./gradlew generateDocsBundle publishDocsSite\nBUNDLE_GEMFILE=docs/Gemfile bundle exec jekyll serve \\\n  --source build/_site --baseurl \"\"\n```\n\n**API Reference (Dokka):**\n```bash\n./gradlew dokkaGeneratePublicationHtml\n# Output: build/dokka/html/index.html\n```\n\n## Architecture\n\n### Modern Android Development (MAD)\nThe app follows modern Android development practices, built on top of a shared Kotlin Multiplatform (KMP) Core:\n- **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.\n- **UI:** JetBrains Compose Multiplatform (Material 3) using Compose Multiplatform resources.\n- **State Management:** Unidirectional Data Flow (UDF) with ViewModels, Coroutines, and Flow.\n- **Dependency Injection:** Koin with Koin Annotations (K2 Compiler Plugin).\n- **Navigation:** JetBrains Navigation 3 (Multiplatform routing with RESTful deep linking).\n- **Data Layer:** Repository pattern with Room KMP (local DB), DataStore (prefs), and Protobuf (device comms).\n\n### Bluetooth Low Energy (BLE)\nThe 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](core/ble/README.md) for details.\n\n### Module Documentation\n\nEach module has its own README with details on its responsibilities, API surface, and internal design.\n\n| Module | Description |\n|---|---|\n| [core/api](core/api/README.md) | AIDL service API for third-party integrations |\n| [core/domain](core/domain/README.md) | Business-logic use cases (radio config, sessions, exports) |\n| [core/repository](core/repository/README.md) | Data \u0026 infrastructure contracts (RadioTransport, NodeRepository, ServiceRepository) |\n| [core/takserver](core/takserver/README.md) | Meshtastic ↔ TAK (ATAK/iTAK) bridge — CoT server \u0026 conversion |\n| [core/ble](core/ble/README.md) | Multiplatform BLE transport (Kable) |\n| [core/network](core/network/README.md) | Internet comms: firmware metadata, map tiles, radio transports |\n| [core/data](core/data/README.md) | Repository layer — orchestrates DB, network, and service data |\n| [core/database](core/database/README.md) | Room KMP local persistence |\n| [core/datastore](core/datastore/README.md) | DataStore preferences |\n| [core/service](core/service/README.md) | Meshtastic Android service abstractions |\n| [core/navigation](core/navigation/README.md) | Type-safe Navigation 3 route model |\n| [core/resources](core/resources/README.md) | Centralised CMP string \u0026 drawable resources |\n| [core/model](core/model/README.md) | Shared domain models |\n| [core/ui](core/ui/README.md) | Shared UI components |\n| [core/common](core/common/README.md) | Common utilities |\n| [core/di](core/di/README.md) | Koin DI modules |\n| [core/testing](core/testing/README.md) | Shared test fakes \u0026 utilities |\n| [core/nfc](core/nfc/README.md) | NFC support |\n| [core/prefs](core/prefs/README.md) | Legacy preference helpers |\n| [core/barcode](core/barcode/README.md) | Barcode / QR scanning |\n| [core/proto](core/proto/README.md) | Protobuf submodule wrapper |\n| [feature/messaging](feature/messaging/README.md) | Messaging UI feature |\n| [feature/map](feature/map/README.md) | Map UI feature |\n| [feature/node](feature/node/README.md) | Node detail UI feature |\n| [feature/settings](feature/settings/README.md) | Settings UI feature |\n| [feature/firmware](feature/firmware/README.md) | Firmware update UI feature |\n| [feature/intro](feature/intro/README.md) | Onboarding / intro UI feature |\n| [feature/wifi-provision](feature/wifi-provision/README.md) | Wi-Fi provisioning UI feature |\n| [feature/connections](feature/connections/README.md) | Device discovery \u0026 connection management (BLE / USB / TCP) |\n| [feature/docs](feature/docs/README.md) | In-app documentation browser with Chirpy AI assistant |\n| [feature/widget](feature/widget/README.md) | Android home-screen Glance widget (live mesh stats) |\n\n## Translations\n\nYou can help translate the app into your native language using [Crowdin](https://crowdin.meshtastic.org/android).\n\n## API \u0026 Integration\n\nDevelopers 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.\n\nFor detailed integration instructions, see [core/api/README.md](core/api/README.md).\n\nAdditionally, 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.\n\n## Building the Android App\n\u003e [!WARNING]\n\u003e 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.\n\nhttps://meshtastic.org/docs/development/android/\n\nNote: when building the `google` flavor locally you will need to supply your own [Google Maps Android SDK api key](https://developers.google.com/maps/documentation/android-sdk/get-api-key) `MAPS_API_KEY` in `local.properties` in order to use Google Maps.\ne.g.\n```properties\nMAPS_API_KEY=your_google_maps_api_key_here\n```\n\n## Contributing guidelines\n\nFor detailed instructions on how to contribute, please see our [CONTRIBUTING.md](CONTRIBUTING.md) file.\nFor details on our release process, see the [RELEASE_PROCESS.md](RELEASE_PROCESS.md) file.\n\n## Repository Statistics\n\n![Alt](https://repobeats.axiom.co/api/embed/1d75239069a6d671fe0b8f80b2e1bf590a98f0eb.svg \"Repobeats analytics image\")\n\nCopyright 2025, Meshtastic LLC. GPL-3.0 license\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeshtastic%2Fmeshtastic-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmeshtastic%2Fmeshtastic-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmeshtastic%2Fmeshtastic-android/lists"}