A situational awareness Android application designed for use with mesh network devices (Doodle Labs, Meshtastic). Check out TAK Lite Server for additional command and control and network redundancy capabilities here.
- Real-time location tracking and sharing
- Peers are shown as green dots
- Interactive map display with multiple user positions
- Street, sattelite and hybrid views
- 3D view of buildings and terrain
- Points of Interest (POI) management and map annotation (lines, areas)
- Easy longpress-and-drag fan menu to drop and edit annotations
- Optionally expire annotations and POIs
- View elevation chart for lines
- Text messaging
- Push-to-Talk (PTT) real-time VOIP audio communication (Layer 2 only, WebRTC-based)
- Mesh network integration (meshtastic or doodle labs)
- Offline map tile support
- Dark mode support
Adaptive fan menu w/ coordinates and distance from current location
3D Building & Terrain (terrain 3d is just hill shading now, true 3d will be added later)
Settings to Configure Experience
- GitHub Sponsors
- Bitcoin (BTC): 1BimJFWZA6LXhgiTcrj7rFBB3hbENrCLRc
- Ethereum (ETH): 0x035d513B41c91c61c4C4E8382a675FaeF53AD953
- Android Studio Arctic Fox or later
- Android SDK 24 (Android 7.0) or later
- MapTiler API key (for satellite imagery)
- Doodle Labs mesh network device or Meshtastic (no audio support w/ mtastic)
TAK Lite supports multiple languages to provide a better user experience for international users:
- Supported Languages: English, German, Spanish, French, Italian, Portuguese, and Romansh
- Language Selection: Users can override the system language in Settings → Language Settings
- System Language: By default, the app uses the device's system language setting
- Language Persistence: Language selection is saved and persists across app restarts
- Immediate Switching: Language changes take effect immediately without requiring app restart
TAK Lite is designed to work on devices without Google Play Services (LineageOS, GrapheneOS, etc.):
- COMING SOON - alternatives for other google dependencies
- Privacy-Friendly Donations: Multiple donation options including cryptocurrency and GitHub Sponsors
- Manual Premium Activation: Users can activate premium features after donating through alternative methods
- Clone the repository
- Open the project in Android Studio
- Create a
local.propertiesfile in the root directory and add your API key:MAPTILER_API_KEY=your_maptiler_api_key_hereMAPTILER_API_KEYis required for satellite map (MapTiler) functionality. This key is securely loaded by the build system fromlocal.propertiesand injected into the app at build time.
- Sync the project with Gradle files
- Build and run the application
- Ensure one radio on the network is setup as the DHCP server with the radio on 192.168.1.10, subnet 255.255.255.0.
- If you want the radio's GPS to work with the app, continue:
- Ensure the GPS service is bound to all network interfaces
- Ensure the radio firewall allows GPS port traffic
- MapLibre GL Android SDK (map rendering)
- OpenStreetMap raster tiles (default map)
- MapTiler satellite tiles (satellite view)
- Google Play Services Location (location tracking)
- Android Room Database (local storage)
- Kotlin Coroutines (async operations)
- AndroidX Lifecycle Components (MVVM)
- Hilt (dependency injection)
- WebRTC (real-time VOIP audio)
- Kotlin Serialization (data serialization)
- WorkManager (background tasks)
The application communicates over a local mesh network using Doodle Labs devices. Key network features include:
- Local mesh communication for real-time updates
- Internet connectivity when available through mesh gateway
- Peer-to-peer real-time VOIP audio communication (WebRTC)
- Location data sharing
- POI and annotation synchronization
TAK Lite is designed to operate in environments with limited or no internet connectivity by leveraging a mesh networking approach:
- Meshtastic Devices: The app connects to a Meshtastic device, which provides the network layer for peer discovery, sending annotations and telemetry.
- Data Synchronization: Location, POI, and annotation data are shared directly between peers over the mesh, ensuring real-time situational awareness without a central server.
- Resilience: The mesh network is resilient to node failures and adapts dynamically as devices join or leave the network.
- IN PROGRESS - Doodle Labs Mesh Devices: The app connects to a Doodle Labs mesh radio, which provides a local, self-healing, peer-to-peer network for all connected devices.
- Peer Discovery: Devices on the mesh automatically discover each other using local network broadcast and/or service discovery protocols.
- VOIP over Mesh: Push-to-talk audio (WebRTC) is transmitted directly between devices using the mesh network, minimizing latency and supporting robust communication even in disconnected or degraded environments.
- Gateway Support: If a mesh node has internet access, it can act as a gateway, allowing the mesh to bridge to external networks as needed.
Further Reading:
This project is currently in active development. Core features are being implemented and tested.
- MVVM Pattern: The app uses the Model-View-ViewModel (MVVM) architecture for clear separation of concerns and testability.
- Dependency Injection: Hilt is used for dependency injection, ensuring modularity and easier testing.
- Room Database: Local data persistence is handled via Room, with repository and DAO patterns.
- Coroutines: Kotlin Coroutines are used for asynchronous operations, including networking and database access.
- WorkManager: Background tasks (such as data sync) are managed using WorkManager.
- Lifecycle Components: AndroidX ViewModel and LiveData are used for UI state management.
- WebRTC: Real-time VOIP audio is implemented using WebRTC, supporting push-to-talk communication.
- Written in Kotlin, following Kotlin coding conventions
- Uses Android KTX extensions for concise code
- Follows SOLID principles and clean architecture
- Material Design 3 guidelines for UI/UX
- Proper error handling and state management
- Accessibility (a11y) and dark mode support
- Over-the-air encryption is provided by the mesh device - Doodle Labs mesh network at Layer 2 or Meshtastic's channel and PKI encryption - ensuring that all data transmitted between devices is encrypted at the network level.
- Sensitive API keys are not hardcoded; they are loaded from
local.propertiesat build time - Proper Android permission handling for location and audio
- Follows Android security best practices for data storage and network communication
- Plans for data encryption and secure authentication in future releases
- Contributions should follow the established code style and architecture
- Please open issues or pull requests for suggestions or improvements


