Cursor on Target ingestion and real-time streaming for the Socialmesh mesh radio platform. Accepts CoT XML over UDP and HTTP, normalizes events to JSON, and streams to authenticated clients via WebSocket.
Health check endpoint. Returns service status and timestamp. Unauthenticated — used by Railway and the API Gateway for liveness probes.
200 OK
Readiness check. Verifies that the server is initialized, Firebase auth
is configured (if enabled), and the protobuf decoder is reachable
(if enabled). Returns 503 with reasons if not ready.
200 OKDetailed gateway status including UDP listener state, event counters, connected clients, decoder health, and build info. Requires Firebase authentication.
200 OK
Backfill endpoint. Returns recent CoT events, optionally filtered by
timestamp. Without sinceUtcMs, returns the latest snapshot
of all active entities. Requires Firebase authentication.
| Param | Type | Default | Description |
|---|---|---|---|
sinceUtcMs |
integer |
— | Return events received after this UTC timestamp (ms). Omit for latest snapshot. |
limit |
integer |
500 |
Maximum events to return (max 1000) |
200 OK
HTTP ingestion endpoint. Push CoT events via raw XML
(application/xml) or pre-normalized JSON
(application/json). Requires Firebase authentication.
200 OKReal-time WebSocket stream. Receives normalized CoT events as they are ingested. Supports scope filtering via query parameter. Requires Firebase authentication via token query parameter.
| Param | Type | Default | Description |
|---|---|---|---|
token |
string |
— | Firebase ID token for authentication required |
scope |
string |
— | Optional scope filter for event types |
The gateway listens for CoT XML on UDP port 4242 (unicast).
Multicast ingestion on 239.2.3.1:6969 can be enabled via
environment variable. Both plain-text XML and TAK Protocol v1 framed
payloads are supported. Protobuf payloads are forwarded to the
tak-decoder sidecar when enabled.
| Code | Meaning |
|---|---|
400 | Invalid CoT XML or missing required fields |
401 | Missing or invalid Firebase authentication token |
413 | Payload too large (max 64KB) |
429 | Rate limit exceeded (300 requests/minute per IP) |
500 | Internal server error |
503 | Service not ready (readiness check failed) |
All /v1/ endpoints and the WebSocket stream require a valid
Firebase ID token. Pass it as a Bearer token in the
Authorization header for REST requests, or as a
token query parameter for WebSocket connections. An optional
UID allowlist can restrict access to specific Firebase users.
Cross-origin requests are allowed from socialmesh.app,
api.socialmesh.app, tak.socialmesh.app,
and localhost origins.
Supported methods: GET, POST, OPTIONS.
Cursor on Target (CoT) is an XML-based protocol used by ATAK, WinTAK, and iTAK for sharing situational awareness data. The TAK Gateway bridges CoT data sources with the Socialmesh app, enabling mesh radio operators to see TAK entities on the map alongside Meshtastic nodes.
Events ingested via UDP or HTTP are deduplicated, normalized to JSON, stored in a sliding time window, and streamed to connected WebSocket clients in real time.