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.
--allpages 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(defaultday),--nodefor one node,--summaryfor 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_URLor a profile’sstatus_url(https://status.moddingcommunity.comin production). The other commands can read from it too, instead of the API origin that forwards.- mtr <ref>
The latest traceroute of an
MTRmonitor, 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.
