Cursor on Target (CoT) ist ein XML-basiertes Nachrichtenformat, das vom US Air Force Research Laboratory in den frühen 2000er Jahren entwickelt wurde, um ein spezifisches Problem zu lösen: Wie teilt man Position, Identität und Status eines Ziels oder einer Einheit zwischen heterogenen Militärsystemen, die nicht für Interoperabilität ausgelegt waren? Die Antwort war ein minimales, erweiterbares XML-Schema, das jedes System produzieren und konsumieren kann.
Zwei Jahrzehnte später ist CoT zum De-facto-Standard für Positionsmeldungen und Ereignisaustausch im taktischen Edge-Ökosystem geworden. ATAK, WinTAK, iTAK, TAK Server und Hunderte von Plugins sprechen CoT. Das FüInfoSysH der Bundeswehr nutzt CoT als Standard für die Integration taktischer Positionsdaten über Systemgrenzen hinweg.
XML-Struktur: Event-, Point- und Detail-Elemente
Eine CoT-Nachricht ist ein XML-Dokument mit einem einzelnen Wurzelelement: <event>. Jede CoT-Nachricht ist ein Ereignis, unabhängig davon ob es eine Positionsaktualisierung, einen Sensorbericht, eine Chatnachricht oder eine Missionsaufgabe beschreibt.
Ein minimaler CoT-Positionsbericht:
<event version="2.0"
uid="BRAVO-1-KpFhr"
type="a-f-G-U-C"
how="m-g"
time="2026-05-11T08:30:00.000Z"
start="2026-05-11T08:30:00.000Z"
stale="2026-05-11T08:31:00.000Z">
<point lat="52.5200"
lon="13.4050"
hae="35.0"
ce="10.0"
le="5.0"/>
<detail>
<contact callsign="BRAVO-1-KpFhr"/>
<group name="Blue" role="Team Leader"/>
<track speed="0.0" course="90.0"/>
</detail>
</event>
uid: Globally eindeutiger Bezeichner der Entität. Wird über alle Meldungen für dieselbe Entität aufrechterhalten.
type: Hierarchischer String, der die Entitätsklassifikation kodiert. a-f-G-U-C = Atom, feindlich, Boden, Einheit, Kampf. a-h-A = Atom, feindlich, Luft.
stale: Zeit, nach der der Bericht als veraltet gilt. Auf etwa 2× das erwartete Aktualisierungsintervall setzen.
point: Position der Entität in WGS84-Koordinaten. hae ist Höhe über WGS84-Ellipsoid in Metern (nicht MSL). ce und le sind kreisförmige und lineare Fehler in Metern.
CoT-Typen: Klassifikationshierarchie
a-f-G (Eigene Bodentruppe): Dargestellt mit blauem Rechteck gemäß MIL-STD-2525.
a-h-G (Feindliche Bodentruppe): Dargestellt mit rotem Diamant.
a-u-G (Unbekannte Bodenkontakt): Dargestellt mit gelbem Fragezeichen.
a-f-A (Eigenes Luftfahrzeug): Eigene UAVs, Hubschrauber und Flächenflugzeuge.
TAK Server: Routing, Filterung und Föderierung
TAK Server ist die serverseitige Komponente des TAK-Ökosystems. Er empfängt CoT-Nachrichten von verbundenen Clients und leitet sie basierend auf konfigurierbaren Regeln an andere Clients weiter.
Gruppen schränken ein, welche Clients welche Ereignisse sehen können. Föderierung verbindet mehrere TAK-Server-Instanzen — der Mechanismus, durch den Positionen niedrigerer Ebenen in COP-Systemen höherer Ebenen sichtbar werden. In Bundeswehr-Programmen ermöglicht die Föderierung die Integration von Bataillons-TAK-Servern mit Brigadeebene ohne direkte Client-Verbindungen.
Implementierung in Python: CoT parsen und generieren
Die pytak-Bibliothek bietet eine vollständige Implementierung der CoT-Ereignisgenerierung. Für das Parsen reicht Pythons Standard-xml.etree.ElementTree. Die Verbindung zu einem TAK Server über TCP erfordert eine TCP-Socket-Verbindung zum Port 8087 (oder TLS auf 8089) und das Schreiben des XML-Strings gefolgt von einem Null-Terminator-Byte. Die pytak-Bibliothek abstrahiert dies und unterstützt auch Multicast-UDP für lokale Netzwerkbereitstellungen.
Stale-Zeit-Leitfaden: Stale-Zeit auf etwa 2× das erwartete Aktualisierungsintervall setzen. Für einen dismounted Soldaten, der alle 30 Sekunden aktualisiert, sollte stale 60 Sekunden betragen. Eine zu lange Stale-Zeit führt dazu, dass Geisterspuren im Lagebild persistieren, nachdem eine Entität offline gegangen ist.