Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

engindearing-projects/OmniTAK-Android

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

314 Commits
314 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

OmniTAK-Android

License: Apache 2.0

Open-source TAK (Team Awareness Kit) client for Android, built with Kotlin + Jetpack Compose.

OmniTAK 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.

Bring your own TAK Server. OmniTAK is a client. Stand up TAK Server (community CIV edition), OpenTAKServer, or taky and point OmniTAK at it.

🧪 Testers wanted

OmniTAK for Android is in Google Play closed testing, and every tester helps push it toward the public Play Store release. The iOS build is already live on the App Store.

To test the Android build: drop your Google-account email in the Beta section at omnitak.engindearing.soy and you will get the install link by email. Free, no ads, Apache 2.0.

Download

Latest release

Current release: v0.38.0 (versionCode 97) — 2D map rendering batch: dropped markers, contacts, and operator drawings now render on the 2D map across all GPUs, imported KML renders fully (points, lines, and polygons) with clustering for large files, markers refresh instantly on create/edit/delete, and tap-to-edit + lasso select/delete reliably hit dropped markers. Builds on 0.37.0 (KML pins, red-framed coords, offline regions, icon-pack import, FEMA symbols, QR enrollment, EN/PL/DE/FR).

Upgrading? versionCode is monotonic — every release ratchets the integer up. Android allows in-place upgrade as long as the signing cert is unchanged.

Verify the APK before installing — signing cert SHA-256 should be 9f3b1fd54ad4eb1dc5b45d91deac4699869617d3d2ac425a1b70337aa0eb13af:

apksigner verify --print-certs OmniTAK-0.38.0-vc97.apk

Screenshots

KML pins + labels Red-framed coordinates Large KML (1,286 placemarks)
KML placemarks as yellow pins with labels Red-framed coordinate readout 1,286-placemark KML imported

Features

  • TAK Server connectivity — TCP / TLS / mTLS with client-certificate enrollment
  • Cursor-on-Target — full CoT XML parser, marker rendering, server messaging
  • Tactical map — MapLibre Native Android with custom layers (contacts, drawing, aircraft, mesh nodes, grid, measurement)
  • ADS-B traffic — aircraft overlay with bring-your-own provider
  • Meshtastic — TCP connection to Meshtastic mesh radios
  • Drawing tools — points, lines, polygons, range/bearing, measurement
  • Multi-server management — connect to multiple TAK servers
  • Radial menu — quick actions on map long-press
  • Material 3 dark theme — tactical color palette

Requirements

  • Android 8.0 (API 26) or later
  • Android Studio Ladybug or later (for development)
  • JDK 17
  • A TAK Server you can reach (BYO — see above)

Getting started

git clone https://github.com/engindearing-projects/OmniTAK-Android.git
cd OmniTAK-Android
./gradlew assembleDebug

The debug APK lands at app/build/outputs/apk/debug/app-debug.apk.

To install on a connected device:

./gradlew installDebug

Or open the project in Android Studio and run normally — debug builds work out-of-the-box without any signing key configuration.

Release builds (your own signing key)

To produce a release APK signed with your own upload key:

  1. Generate an upload keystore:
    keytool -genkey -v -keystore my-upload.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
  2. Copy keystore.properties.example to keystore.properties (gitignored) and fill in your values
  3. Build:
    ./gradlew assembleRelease

If keystore.properties is absent, release builds gracefully fall back to the debug signing config so the project always builds.

Architecture

app/src/main/kotlin/soy/engindearing/omnitak/mobile/
├── data/            # Models + persistence (TAKServer, CoTEvent, ChatMessage, …)
├── domain/          # State stores (ServerManager, ChatStore, ContactStore, …)
└── ui/
    ├── screens/     # Top-level screens (Map, Servers, Chat, Meshtastic, Settings, …)
    ├── components/  # Reusable layers and widgets (TacticalMap, RadialMenu, …)
    ├── navigation/  # Compose Navigation graph
    └── theme/       # Material 3 theme + tactical colors

The 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.

Plugins

OmniTAK ships a compile-time plugin SDK (:plugins:plugin-sdk) and a reference plugin (:plugins:example-adsb, the ADS-B aircraft overlay). Plugins are statically-linked Gradle modules — no dynamic/remote code, so the app stays Play-Store compliant. See docs/PLUGIN_AUTHORING.md for the contract, the host seams (map overlay / radial / CoT / settings), and a step-by-step "add a plugin" guide. Plugin authoring mirrors the iOS SDK so a plugin ports across platforms in about a day.

plugins/
├── plugin-sdk/      # OmniTAKPlugin, PluginHost, PluginRegistry, value types
└── example-adsb/    # ADS-B reference plugin (OpenSky overlay + settings)

Permissions

Permission Why
INTERNET TAK Server connectivity
ACCESS_NETWORK_STATE Detect connectivity changes
ACCESS_FINE_LOCATION Self-location reporting (PPLI), GPS-aware tools
ACCESS_COARSE_LOCATION Fallback for users who deny precise location

No tracking, no analytics, no third-party SDKs.

Security & privacy

  • All TAK Server connections are TLS 1.2+ by default
  • Client certificates are stored in Android Keystore
  • No outbound traffic except to user-configured TAK Servers and ADS-B providers

Found a vulnerability? See SECURITY.md for responsible disclosure.

Contributing

Contributions welcome. See CONTRIBUTING.md. For larger changes, please open an issue first.

License

Apache License 2.0. See LICENSE.

Free to use, modify, and share, with no separate permission needed. Apache 2.0 covers personal, volunteer, commercial, and government use at no cost. It only asks that you keep the existing copyright and license notice in place, and note any changes you make to the source. Translations and other contributions are welcome.

OmniTAK-Android uses the following open-source components:

Acknowledgments

Built by Engindearing. Inspired by ATAK, iTAK, OpenTAKServer, and the broader TAK community.

The companion iOS client is OmniTAK-iOS.

OmniTAK is not affiliated with or endorsed by the U.S. Department of Defense, the TAK Product Center, or any other organization.

About

Open-source TAK (Team Awareness Kit) client for Android. Kotlin + Jetpack Compose. Apache 2.0.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.