New

Network status from the terminal

tmc defcon — the status page's monitors, nodes, incidents, latency and traceroutes in a terminal, with an exit-code check for scripts. No key needed.

tmc defcon reads the public half of Defcon, the network monitor behind the site’s status page. What it shows is exactly what /status shows — the same data, from the same place — and it needs no credential.

tmc defcon status                # overall verdict, counts, open incidents
tmc defcon status --check        # exit code only: see below
tmc defcon monitors --status DOWN --status DEGRADED
tmc defcon monitor homepage      # by id or (part of) its name
tmc defcon nodes                 # the monitoring nodes, if published
tmc defcon incidents             # open incidents
tmc defcon incidents --all       # the last 90 days, open and resolved
tmc defcon latency 3 --range week --summary
tmc defcon latency 3 --range day --node frankfurt -o csv
tmc defcon mtr 5                 # latest traceroute of an MTR monitor

Using it as a health check

status --check prints nothing a script has to parse; the verdict is the exit code:

Exit Overall status
0 OK
1 DEGRADED
2 DOWN
3 UNKNOWN
tmc defcon status --check || echo "the site is not OK right now"

Commands

status

The overall verdict (the worst of every public monitor), counts per status, and the open incidents.

monitors

Every public monitor with its kind, target, current status, 24-hour average latency and uptime over 24 hours, 7 days and 30 days. Filter with --status (repeatable: DOWN, DEGRADED, UNKNOWN, OK) and --kind (WEB, TCP, ICMP, MTR, BROWSER).

monitor <ref>

One monitor, by id or by (part of) its name: its status now, per node.

nodes

The monitoring nodes and their state.

incidents

The incidents open right now. --all pages through the last 90 days, open and resolved.

latency <ref>

The latency series for one monitor, one row per sample per node. --range day|week|month|year|all (default day), --node for one node, --summary for latest, mean and peak per node instead of the series.

summary

The status site’s one-call answer. It needs the status host: --status-url, TMC_STATUS_URL or a profile’s status_url (https://status.moddingcommunity.com in production). The other commands can read from it too, instead of the API origin that forwards.

mtr <ref>

The latest traceroute of an MTR monitor, hop by hop, with the loss and latency flags the node computed.

It shows what the status page shows, and no more

The site decides what is public, and the CLI honours it: when the status page hides nodes or incidents, so does tmc defcon, and a monitor that is not public is not listed. Incident history (--all) goes back 90 days and needs a site from 2026-09-30 or later (one with /api/status/defcon/incidents).

Where it reads from

The reads go to the API origin’s REST mirrors (/api/status/defcon, /series, /mtr, /incidents), so --base-url is all it needs. Against a site from before those mirrors (a 404), or when --site-url (or TMC_SITE_URL) is given, it asks the website origin instead — see Opening things in the browser.