Repository navigation
Status API
The dashboard exposes small read-only endpoints on the private dashboard listener.
Base URL:
http://TAILSCALE_IP:8090
No endpoint accepts writes. Tailnet reachability is the trust boundary.
Always returns HTTP 200 when the dashboard itself is running, including when MediaMTX is offline. Responses use Cache-Control: no-store.
Example shape:
{
"online": true,
"ready": false,
"readers": 0,
"bytes": 0,
"bytes_sent": 0,
"ready_since": null,
"tracks": [],
"stream_health": {
"state": "idle",
"bitrate_bps": 0,
"stalled_seconds": 0
},
"history": {
"disconnects_24h": 0,
"last_live_at": null,
"events": [
{"type": "server_online", "at": "2026-10-12T12:00:00Z"}
]
},
"storage": {
"available": true,
"level": "ok",
"total_bytes": 494384795648,
"free_bytes": 129278515200,
"used_percent": 73.9,
"recording_files": 8,
"recording_bytes": 13260718080
}
}Notes:
-
onlinemeans the local MediaMTX API answered with a valid response. -
readymeans thelivepath currently has a publisher. -
bytesandbytes_sentare cumulative MediaMTX path counters. -
ready_sinceis an ISO-8601 timestamp when available. -
stream_health.stateisoffline,idle,starting,receivingorstalled. -
bitrate_bpsis calculated on the server from consecutive MediaMTX inbound-byte samples. -
stalledmeans MediaMTX still reports a ready publisher but the inbound counter has not advanced for at least eight seconds. -
stalled_secondsremains0outside the stalled state and increases until media resumes. -
eventscontains at most the ten most recent retained events. - A
stream_stoppedevent can includeduration_seconds. - Storage data contains aggregates only; no recording names or paths are exposed.
Returns the same JSON shape as /api/status.
| Condition | HTTP status |
|---|---|
| Dashboard and MediaMTX API available | 200 |
| Dashboard available, MediaMTX API unavailable | 503 |
Use this endpoint for service health checks. An idle but healthy stream server returns 200 with ready: false.
{
"name": "Tailnet IRL Server",
"version": "1.8.0"
}The endpoint can be cached for five minutes.
GET /manifest.webmanifestGET /icon.svg
The dashboard sends a restrictive Content Security Policy, X-Content-Type-Options: nosniff, Referrer-Policy: no-referrer and a Permissions Policy that disables camera, microphone and geolocation access for the page.
curl -fsS "http://100.x.y.z:8090/api/status" | python3 -m json.toolDo not publish response data containing private Tailnet addresses without redaction.
Home · Quick start · Troubleshooting · Repository · Releases · License
Tailnet IRL Server · Developed by Nik Pottbecker