tcp.systems estate status
A snapshot, not a live prober. Every row below was measured once at 2026-11-10T12:48:44.160Z by the scheduled generator and is served as a static file. The badge recomputes in your browser from the snapshot's own timestamp; when it turns red the scheduler has not run and the rows are old.
fresh snapshot age 0s at generation time — the scheduler is keeping up; the page badge recomputes the age from the timestamp above, and shows stale past 600s budget 600s
Surfaces — 13/15 up
| service | status | http | host | A | latency | method | note |
|---|---|---|---|---|---|---|---|
| ai Acumen gateway | UP | 200 | ai.tcp.systems | 194.180.36.11 | 54 ms | https | |
| apex Apex (tcp.systems) | UP | 200 | tcp.systems | 194.180.36.11 | 38 ms | https | |
| console Console | UP | 200 | console.tcp.systems | 194.180.36.11 | 36 ms | https | |
| auth Auth (Pocket ID) | UP | 200 | auth.tcp.systems | 194.180.36.11 | 42 ms | https | |
| status Status | UP | 200 | status.tcp.systems | 194.180.36.11 | 14 ms | https | |
| chat Chat | UP | 200 | chat.tcp.systems | 194.180.36.11 | 25 ms | https | |
| iptv IPTV | DOWN | 502 | iptv.tcp.systems | 194.180.36.11 | 155 ms | https | expected 200, got 502 |
| studio Studio | DOWN | 200 | studio.tcp.systems | 194.180.36.11 | 29 ms | https | expected 302, got 200 |
| search Search suite | UP | 200 | search.tcp.systems | 194.180.36.11 | 278 ms | https | |
| docs Docs | UP | 200 | docs.tcp.systems | 194.180.36.11 | 26 ms | https | |
| mcp MCP | UP | 200 | mcp.tcp.systems | 194.180.36.11 | 26 ms | https | |
| dns DNS page | UP | 200 | dns.tcp.systems | 194.180.36.11 | 25 ms | https | |
| radar Radar intel | UP | 200 | radar.tcp.systems | 194.180.36.11 | 23 ms | https | |
| massprox Massprox | UP | 200 | massprox.tcp.systems | 194.180.36.11 | 151 ms | https | |
| ui UI library | UP | 200 | ui.tcp.systems | 194.180.36.11 | 38 ms | https |
Criteria
| id | criterion | verdict | evidence |
|---|---|---|---|
| C1 | capability | pass | 15/15 surfaces measured at this snapshot; 0 declared and unprobed (no-probe contract) |
| C2 | entry-point | pass | dist/api/status.json (+ /api/incidents.json) is emitted by the same run as the page, so the machine surface cannot drift from the rendered one |
| C4 | realtime | pass | push source declared: SSE /api/events (server/status-events.mjs behind Caddy on the status host) pushes a `snapshot` event with the artifact's generated timestamp and rollup when the generator installs a new snapshot; the page reloads onto it. The rows remain a snapshot measured at `generated`, not a live prober. |
| C6 | dry-seam | pass | one declaration (surfaces.json) -> one generator (gen/status-gen.mjs) -> one artifact set; the page reads the JSON, it does not probe |
| C3 | incident-feed | pass | state/incidents.json is operator-curated and copied verbatim (the generator never rewrites it); 1 entr(y|ies) recorded |