{"id":49626773,"url":"https://github.com/engindearing-projects/omnitak-android","last_synced_at":"2026-05-24T01:02:06.303Z","repository":{"id":353692231,"uuid":"1220513101","full_name":"engindearing-projects/OmniTAK-Android","owner":"engindearing-projects","description":"Open-source TAK (Team Awareness Kit) client for Android. Kotlin + Jetpack Compose. Apache 2.0.","archived":false,"fork":false,"pushed_at":"2026-05-03T19:28:29.000Z","size":2967,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-03T20:09:59.805Z","etag":null,"topics":["android","atak","cot","jetpack-compose","kotlin","maplibre","sar","situational-awareness","tactical","tak"],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/engindearing-projects.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-25T01:35:46.000Z","updated_at":"2026-05-03T15:48:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/engindearing-projects/OmniTAK-Android","commit_stats":null,"previous_names":["engindearing-projects/omnitak-android"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/engindearing-projects/OmniTAK-Android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engindearing-projects%2FOmniTAK-Android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engindearing-projects%2FOmniTAK-Android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engindearing-projects%2FOmniTAK-Android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engindearing-projects%2FOmniTAK-Android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/engindearing-projects","download_url":"https://codeload.github.com/engindearing-projects/OmniTAK-Android/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/engindearing-projects%2FOmniTAK-Android/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32640538,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-04T10:08:07.713Z","status":"online","status_checked_at":"2026-05-05T02:00:06.033Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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","atak","cot","jetpack-compose","kotlin","maplibre","sar","situational-awareness","tactical","tak"],"created_at":"2026-05-05T08:02:35.576Z","updated_at":"2026-05-24T01:02:06.289Z","avatar_url":"https://github.com/engindearing-projects.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OmniTAK-Android\n\nOpen-source TAK (Team Awareness Kit) client for Android, built with Kotlin + Jetpack Compose.\n\nOmniTAK speaks Cursor-on-Target (CoT) over TLS to any TAK Server, supports tactical map rendering via MapLibre, ADS-B traffic display, Meshtastic radios, drawing tools, and more — designed for search-and-rescue, civil defense, and outdoor operations.\n\n\u003e **Bring your own TAK Server.** OmniTAK is a client. Stand up [TAK Server](https://tak.gov) (community CIV edition) or [FreeTAKServer](https://github.com/FreeTAKTeam/FreeTakServer) and point OmniTAK at it.\n\n## Download\n\n[![Latest release](https://img.shields.io/github/v/release/engindearing-projects/OmniTAK-Android?label=latest\u0026sort=semver)](https://github.com/engindearing-projects/OmniTAK-Android/releases/latest)\n\n**Current release: [v0.2.2 (versionCode 18)](https://github.com/engindearing-projects/OmniTAK-Android/releases/tag/v0.2.2)** — foreground service holds the TLS socket warm during backgrounding so Doze / app-standby can no longer kill the read loop within ~10s. Carries forward v0.2.1's coordinate / units pickers, map camera preservation, and resume-reconnect; v0.2.0's auto-PPLI, live counters, and zip sideload.\n\n- **Signed APK (sideload):** [OmniTAK-0.2.2-vc18.apk](https://github.com/engindearing-projects/OmniTAK-Android/releases/download/v0.2.1/OmniTAK-0.2.2-vc18.apk)\n- **Always-latest APK:** [releases/latest](https://github.com/engindearing-projects/OmniTAK-Android/releases/latest)\n- **Google Play (closed testing):** ask J for an invite\n\n\u003e **Upgrading?** versionCode is monotonic — every release ratchets the integer up. Android allows in-place upgrade as long as the signing cert is unchanged.\n\nVerify the APK before installing — signing cert SHA-256 should be `9f3b1fd54ad4eb1dc5b45d91deac4699869617d3d2ac425a1b70337aa0eb13af`:\n\n```bash\napksigner verify --print-certs OmniTAK-0.2.2-vc18.apk\n```\n\n## Features\n\n- **TAK Server connectivity** — TCP / TLS / mTLS with client-certificate enrollment\n- **Cursor-on-Target** — full CoT XML parser, marker rendering, server messaging\n- **Tactical map** — MapLibre Native Android with custom layers (contacts, drawing, aircraft, mesh nodes, grid, measurement)\n- **ADS-B traffic** — aircraft overlay with bring-your-own provider\n- **Meshtastic** — TCP connection to Meshtastic mesh radios\n- **Drawing tools** — points, lines, polygons, range/bearing, measurement\n- **Multi-server management** — connect to multiple TAK servers\n- **Radial menu** — quick actions on map long-press\n- **Material 3 dark theme** — tactical color palette\n\n## Requirements\n\n- Android 8.0 (API 26) or later\n- Android Studio Ladybug or later (for development)\n- JDK 17\n- A TAK Server you can reach (BYO — see above)\n\n## Getting started\n\n```bash\ngit clone https://github.com/engindearing-projects/OmniTAK-Android.git\ncd OmniTAK-Android\n./gradlew assembleDebug\n```\n\nThe debug APK lands at `app/build/outputs/apk/debug/app-debug.apk`.\n\nTo install on a connected device:\n\n```bash\n./gradlew installDebug\n```\n\nOr open the project in Android Studio and run normally — debug builds work out-of-the-box without any signing key configuration.\n\n### Release builds (your own signing key)\n\nTo produce a release APK signed with your own upload key:\n\n1. Generate an upload keystore:\n   ```bash\n   keytool -genkey -v -keystore my-upload.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload\n   ```\n2. Copy `keystore.properties.example` to `keystore.properties` (gitignored) and fill in your values\n3. Build:\n   ```bash\n   ./gradlew assembleRelease\n   ```\n\nIf `keystore.properties` is absent, release builds gracefully fall back to the debug signing config so the project always builds.\n\n## Architecture\n\n```\napp/src/main/kotlin/soy/engindearing/omnitak/mobile/\n├── data/            # Models + persistence (TAKServer, CoTEvent, ChatMessage, …)\n├── domain/          # State stores (ServerManager, ChatStore, ContactStore, …)\n└── ui/\n    ├── screens/     # Top-level screens (Map, Servers, Chat, Meshtastic, Settings, …)\n    ├── components/  # Reusable layers and widgets (TacticalMap, RadialMenu, …)\n    ├── navigation/  # Compose Navigation graph\n    └── theme/       # Material 3 theme + tactical colors\n```\n\nThe app is pure Kotlin + Compose with no native bridge. A future release will integrate the shared OmniTAK Rust core via JNI — its source is being prepared for separate open-source release as **OmniTAK-Core**.\n\n## Permissions\n\n| Permission | Why |\n|------------|-----|\n| `INTERNET` | TAK Server connectivity |\n| `ACCESS_NETWORK_STATE` | Detect connectivity changes |\n| `ACCESS_FINE_LOCATION` | Self-location reporting (PPLI), GPS-aware tools |\n| `ACCESS_COARSE_LOCATION` | Fallback for users who deny precise location |\n\nNo tracking, no analytics, no third-party SDKs.\n\n## Security \u0026 privacy\n\n- All TAK Server connections are TLS 1.2+ by default\n- Client certificates are stored in Android Keystore\n- No outbound traffic except to user-configured TAK Servers and ADS-B providers\n\nFound a vulnerability? See [SECURITY.md](SECURITY.md) for responsible disclosure.\n\n## Contributing\n\nContributions welcome. See [CONTRIBUTING.md](CONTRIBUTING.md). For larger changes, please open an issue first.\n\n## License\n\nApache License 2.0. See [LICENSE](LICENSE).\n\nOmniTAK-Android uses the following open-source components:\n\n- [MapLibre Native Android](https://github.com/maplibre/maplibre-native) — BSD 2-Clause\n- [AndroidX](https://developer.android.com/jetpack/androidx) — Apache 2.0\n- [kotlinx.serialization](https://github.com/Kotlin/kotlinx.serialization) — Apache 2.0\n- [Jetpack Compose](https://developer.android.com/jetpack/compose) — Apache 2.0\n\n## Acknowledgments\n\nBuilt by [Engindearing](https://engindearing.soy). Inspired by [ATAK](https://github.com/deptofdefense/AndroidTacticalAssaultKit-CIV), iTAK, [FreeTAKServer](https://github.com/FreeTAKTeam/FreeTakServer), and the broader TAK community.\n\nThe companion iOS client is [OmniTAK-iOS](https://github.com/engindearing-projects/OmniTAK-iOS).\n\nOmniTAK is not affiliated with or endorsed by the U.S. Department of Defense, the TAK Product Center, or any other organization.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengindearing-projects%2Fomnitak-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fengindearing-projects%2Fomnitak-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengindearing-projects%2Fomnitak-android/lists"}