This guide explains how to use OmniCOT (ATAK plugin) together with OmniTAK (TAK Server Aggregator) to create a powerful tactical data management solution.
OmniCOT and OmniTAK are complementary tools that work with the same TAK servers:
- Platform: Android (ATAK plugin)
- Purpose: Enhance ATAK with marker affiliation management and Area of Interest detection
- CoT Features:
- Visual affiliation markers (Friendly, Neutral, Hostile, Unknown)
- Real-time Remote ID integration via Bluetooth
- Automatic affiliation federation across TAK servers
- Connection: Uses ATAK's built-in TAK server connections
- Platform: Server/Desktop (Rust application)
- Purpose: Aggregate CoT messages from multiple TAK servers
- Key Features:
- Connect to multiple TAK servers simultaneously
- REST API for programmatic access
- Web UI for management
- Advanced message filtering and routing
- Real-time metrics and monitoring
- Repository: https://github.com/engindearing-projects/omni-TAK
┌─────────────────────────────────────────────────────────┐
│ TAK Server Network │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ TAK Server 1 │ │ TAK Server 2 │ │ TAK Server 3 │ │
│ │ Port 8089 │ │ Port 8089 │ │ Port 8089 │ │
│ └───────┬──────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
└──────────┼─────────────────┼─────────────────┼──────────┘
│ │ │
┌─────┴─────┐ ┌─────┴─────┐ ┌─────┴─────┐
│ │ │ │ │ │
┌────▼─────┐ ┌──▼────────────┐ ┌──▼────────────┐ ┌──▼───────┐
│ ATAK │ │ OmniTAK │ │ ATAK Device │ │ WinTAK │
│ Device │ │ Aggregator │ │ │ │ │
│ │ │ │ │ │ │ │
│ OmniCOT │ │ - REST API │ │ OmniCOT │ │ │
│ Plugin │ │ - Web UI │ │ Plugin │ │ │
│ │ │ - Filtering │ │ │ │ │
│ Sends: │ │ - Metrics │ │ Sends: │ │ │
│ • CoT │ │ │ │ • CoT │ │ │
│ • Affil │ │ Aggregates │ │ • Affil │ │ │
│ • RemID │ │ all CoT data │ │ • RemID │ │ │
└──────────┘ └────────────────┘ └───────────────┘ └──────────┘
Scenario: Operations center needs to monitor all field units across multiple TAK servers.
Setup:
- Field units run ATAK with OmniCOT plugin
- Operations center runs OmniTAK to aggregate data
- Web dashboard displays real-time tactical picture
Benefits:
- Unified view of all TAK traffic
- Filter by affiliation, geography, or team
- REST API for custom integrations
- Real-time metrics and alerts
Scenario: Different units operate on separate TAK servers (e.g., ground, air, maritime).
Setup:
- Each domain has its own TAK server
- OmniTAK connects to all servers
- Filters route relevant data to each domain
Benefits:
- Cross-domain situational awareness
- Maintain security boundaries with filtering
- Centralized CoT message management
Scenario: Developers need to test ATAK plugins against recorded or simulated traffic.
Setup:
- OmniTAK records CoT traffic from production
- Development ATAK instances connect to OmniTAK
- Playback and analyze CoT scenarios
Benefits:
- Safe testing environment
- Reproducible test scenarios
- API access for automated testing
-
OmniCOT Plugin Installed
- This ATAK plugin should be installed and configured
- Connected to at least one TAK server
- Certificates configured in ATAK
-
OmniTAK Installed
- Clone from: https://github.com/engindearing-projects/omni-TAK
- Built and ready to run (Rust 1.90+)
OmniTAK needs the same certificates as ATAK to connect to your TAK servers.
Option A: Automatic Extraction (Recommended)
# Clone OmniTAK
git clone https://github.com/engindearing-projects/omni-TAK
cd omni-TAK
# Connect ATAK device via USB and enable USB Debugging
# Run automated setup
./scripts/setup-tak-connection.sh --adbThis will:
- Extract certificates from your ATAK device
- Convert them to the correct format
- Generate a ready-to-use configuration
Option B: Manual Certificate Transfer
- In ATAK, navigate to the certificate location
- Export or copy the certificate files
- Transfer to your computer (email, cloud, USB)
- Convert certificates:
cd omni-TAK ./scripts/convert-p12-to-pem.sh /path/to/cert.p12 certs
Use an example configuration:
cd omni-TAK
# For single TAK server
cp config/examples/single-tak-server.yaml config/config.yaml
# Edit the configuration
nano config/config.yamlUpdate the server address to match your TAK server:
servers:
- id: tak-server-main
address: "YOUR_TAK_SERVER:8089" # Match ATAK's server address
protocol: tls
auto_reconnect: true
tls:
cert_path: "certs/client.pem"
key_path: "certs/client.key"
ca_path: "certs/ca.pem"
validate_certs: truecargo run --release -- \
--config config/config.yaml \
--admin-password your_secure_passwordLook for successful connection:
INFO omnitak: Successfully connected to tak-server-main
INFO omnitak: Server listening address=0.0.0.0:9443
On ATAK (with OmniCOT):
- Change a marker's affiliation (e.g., set a unit to "Hostile")
- The affiliation should propagate through the TAK server
On OmniTAK:
- Open Web UI: http://localhost:9443
- Login with:
admin/your_secure_password - You should see the CoT message with affiliation data
Check logs:
# In OmniTAK
# You should see messages being received
INFO omnitak_pool: Message received server=tak-server-mainBoth OmniCOT and OmniTAK connect to the same server.
# OmniTAK config
servers:
- id: production-server
address: "takserver.example.com:8089"
protocol: tls
tls:
cert_path: "certs/client.pem"
key_path: "certs/client.key"
ca_path: "certs/ca.pem"OmniCOT devices on different servers, OmniTAK aggregates all.
# OmniTAK config
servers:
- id: tak-east
address: "tak-east.example.com:8089"
protocol: tls
tls:
cert_path: "certs/client.pem"
key_path: "certs/client.key"
ca_path: "certs/ca.pem"
- id: tak-west
address: "tak-west.example.com:8089"
protocol: tls
tls:
cert_path: "certs/client.pem"
key_path: "certs/client.key"
ca_path: "certs/ca.pem"Filter CoT messages based on affiliation.
# OmniTAK config
filters:
mode: whitelist
rules:
# Only friendly forces to backup server
- id: friendly-backup
type: affiliation
allow: [friend, assumedfriend]
destinations: [tak-backup]
# All entities to primary
- id: all-primary
type: affiliation
allow: [friend, assumedfriend, neutral, hostile, unknown]
destinations: [tak-primary]When OmniTAK receives CoT messages from ATAK devices running OmniCOT:
- CoT Field:
<detail><affiliation> - Values:
friend,assumedfriend,neutral,hostile,suspect,unknown - Use: Filter and route based on affiliation
- Example Filter:
- type: affiliation allow: [hostile, suspect] destinations: [threat-server]
- CoT Fields:
<detail><omnicot><marked_by>- Who set the affiliation<detail><omnicot><server>- Source TAK server<detail><omnicot><timestamp>- When it was marked<detail><omnicot><notes>- Optional notes
- CoT Field:
<detail><remote_id> - Data: Bluetooth-detected drone information
- Use: Track detected drones via OmniTAK API
OmniTAK provides a REST API to access CoT data programmatically.
# Get access token
TOKEN=$(curl -s -X POST http://localhost:9443/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"your_password"}' | \
jq -r '.access_token')# List all TAK server connections
curl -H "Authorization: Bearer $TOKEN" \
http://localhost:9443/api/v1/connections | jq
# Get connection details
curl -H "Authorization: Bearer $TOKEN" \
http://localhost:9443/api/v1/connections/tak-server-main | jq# WebSocket streaming (real-time)
websocat ws://localhost:9443/api/v1/stream
# Or use the Web UI
open http://localhost:9443Use filters to extract specific affiliations:
# Configure filter via API
curl -X POST http://localhost:9443/api/v1/filters \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"id": "hostile-only",
"type": "affiliation",
"allow": ["hostile", "suspect"],
"destinations": ["threat-analysis"]
}'OmniTAK provides Prometheus-compatible metrics:
# Metrics endpoint
curl http://localhost:9443/api/v1/metricsKey Metrics:
omnitak_messages_received_total- Total CoT messagesomnitak_messages_sent_total- Messages forwardedomnitak_connection_status- Connection healthomnitak_filter_matches_total- Filter statistics
Grafana Integration:
- Configure Prometheus to scrape OmniTAK
- Import OmniTAK Grafana dashboard
- Visualize CoT traffic and affiliations
Symptom: Connection refused or timeout errors
Solutions:
- Verify server address matches ATAK configuration
- Check certificates are correctly converted
- Ensure firewall allows outbound connection
- Test with:
telnet your-server 8089
Symptom: OmniTAK connects but no messages appear
Solutions:
- Verify ATAK devices are sending position updates
- Check OmniTAK filters aren't blocking all messages
- Enable debug logging:
logging: level: "debug"
- Verify TAK server allows this client certificate
Symptom: "Failed to load private key" errors
Solution: Private key must be in traditional RSA format:
# Check format
head -n 1 certs/client.key
# Should show: -----BEGIN RSA PRIVATE KEY-----
# Convert if needed
openssl rsa -in certs/client.key -out certs/client-rsa.key -traditional
mv certs/client-rsa.key certs/client.keySymptom: Messages received but affiliation not shown
Possible Causes:
- OmniCOT plugin not installed on sending device
- Affiliation data in different CoT field
- API client not parsing
<detail><affiliation>field
Solution: Check raw CoT XML in OmniTAK debug logs
Create sophisticated filters based on OmniCOT data:
filters:
mode: whitelist
rules:
# Hostile entities with Remote ID data
- id: hostile-drones
type: composite
operator: and
conditions:
- type: affiliation
allow: [hostile, suspect]
- type: field_exists
field: "detail.remote_id"
destinations: [threat-server]Export OmniCOT affiliation data for analysis:
# Stream to file
websocat ws://localhost:9443/api/v1/stream > cot_data.jsonl
# Parse affiliation data
cat cot_data.jsonl | jq 'select(.detail.affiliation != null)'Use OmniTAK API to feed CoT data to GIS systems:
import requests
import json
# Get access token
auth = requests.post('http://localhost:9443/api/v1/auth/login',
json={'username': 'admin', 'password': 'password'})
token = auth.json()['access_token']
# Stream CoT messages
# (Use websocket library for real-time streaming)OmniTAK Documentation:
OmniCOT Documentation:
TAK Resources:
- TAK.gov - Official TAK documentation
- ATAK CIV - Civilian ATAK
- TAK Server - Official TAK Server
For issues with:
- OmniCOT Plugin: Open issue at omni-COT GitHub
- OmniTAK Aggregator: Open issue at omni-TAK GitHub
- TAK Servers: Contact your TAK server administrator or visit TAK.gov
Together, OmniCOT and OmniTAK provide a complete solution for tactical data management! 🚀