Closed beta is open — get builds before public release.iOS TestFlight ·Android Closed Beta

Open source TAK client · iOS & Android

Situational awareness that goes where you go

OmniTAK is a mobile TAK client for iPhone, iPad, and Android. Native UI on each platform, with a shared Rust core handling the protocol. Connects to TAK Server and FreeTAKServer over TCP, TLS, and mTLS — bring your own server.

Closed beta

Get builds before public release

Store reviews take 24–48 hours. Beta testers get new builds the moment they're ready. Bring your TAK server, push it on real hardware, and tell me what breaks.

iOS · TestFlight
iPhone and iPad. Tap the link on your device, install TestFlight if you don't have it, then accept the invite.
Join TestFlight
Android · Play Store

Google Play needs 12 signed-up testers before it issues a public closed-test link. Drop your Google account email below — once we hit 12, you'll get the install invite from Google Play.

What it does

Everything you need for mobile situational awareness. No bloat, no subscriptions.

Map View
ATAK-style tactical map with satellite, hybrid, and standard layers. Pan, zoom, and see your team.
Multi-Server
Connect to multiple TAK servers at once. TCP, UDP, with optional TLS. Switch between them easily.
Certificates
Import .p12 and .pfx certificates. Secure storage in the keychain. Enrollment support.
CoT Messages
Send and receive Cursor on Target messages in real-time. Position updates, team tracking.
Drawing Tools
Draw circles, lines, polygons on the map. Saved locally and synced when online.
Fast
Rust core handles the heavy lifting. Native UI stays responsive. Battery-friendly.
For developers

Extend it with plugins

OmniTAK has a plugin system on both platforms. Write Swift packages on iOS or Kotlin modules on Android that hook into CoT messaging, add map layers, or create custom UI panels. Sandboxed for security.

  • Access CoT messages and map layers
  • Build custom UI components
  • Secure sandboxed execution
MyPlugin.swift
import OmniTAKPluginSystem

@objc public class MyPlugin: NSObject,
                              OmniTAKPlugin {
  func initialize(context: PluginContext) throws {
    context.logger.info("Plugin loaded")
  }

  func activate() throws {
    let cot = try context.cotManager
    try cot?.registerHandler(self)
  }
}

Built with

Rust core
SwiftUI
Kotlin
Jetpack Compose
MapLibre

Ready to try it?

Install the public release from the App Store or Play Store, or join the closed beta to get builds before they ship.