Version: Current
Historical release snapshot. These docs are frozen. Read current docs.
IPTV catalog
import StatusPill from ‘../../../components/StatusPill.astro’;
The IPTV catalog (tcpsystems/iptv, product name iptvcat) is the public IPTV
catalogue: gather, parse M3U/XMLTV, export. This page separates three kinds of
statement and dates each one: what the code implements, what was observed
live on 2026-11-08, and what is not known.
Status (measured 2026-11-08)
Section titled “Status (measured 2026-11-08)”Source: card META-CARDS-SWEEP-IPTV-2026110806, a read-only sweep of the iptv repo plus single GET requests to the public host at 2026-11-08T07:11Z. Nothing here was re-measured when this page was written; the figures are a dated snapshot, not a health claim.
- The public host answered 200 on
/, the channels API and both export files. /healthzand/metricsanswered 404 on the public host, although the repo wires both in its serve code. See Known caveats.- The owner update of 2026-11-05 (“dead until restored”) predates this measurement. It has not been reversed by an owner; the pill therefore says degraded (reachable, but missing routes and unverified deployment), not live.
Endpoints
Section titled “Endpoints”Base URL: https://iptv.tcp.systems (public, no login).
| Route | Live observed 2026-11-08 | Notes |
|---|---|---|
/ |
200 | Landing response. |
/channels.json?limit=1&state=alive |
200 | JSON channel listing; limit and state filters. |
/active.m3u |
200 | About 32 MB, about 123k entries, ETag v888828. |
/dead.csv |
200 | About 60 MB. |
/healthz |
404 | Implemented in repo serve code; not served live (2026-11-08). |
/metrics |
404 | Implemented in repo serve code; not served live (2026-11-08). |
“Code-implemented” means present in the iptv repo at the sweep; “live observed”
means one GET on the date above. The two columns disagree for /healthz and
/metrics, which is the main drift.
Commands used (read-only, one request each):
curl -sS -o /dev/null -w '%{http_code}\n' https://iptv.tcp.systems/curl -sS -o /dev/null -w '%{http_code}\n' 'https://iptv.tcp.systems/channels.json?limit=1&state=alive'curl -sSI https://iptv.tcp.systems/active.m3u # status, ETag, lengthcurl -sSI https://iptv.tcp.systems/dead.csvcurl -sS -o /dev/null -w '%{http_code}\n' https://iptv.tcp.systems/healthzcurl -sS -o /dev/null -w '%{http_code}\n' https://iptv.tcp.systems/metricsDo not fetch the full exports as a health check; use HEAD. They are tens of
megabytes. Scan, crawl and probe traffic must stay on Hetzner hosts.
Known caveats
Section titled “Known caveats”- Route drift.
/healthzand/metrics404 live while other routes answer 200. Either the running binary is older than the repo or the edge does not forward them. Cause not established. - Migrations. The repo has migrations through
0003(EPG schema plus discovery and intelligence tables). Whether the live database is at0003was not measured. - Deployment claim. The repo’s
PROJECT.mdmentions a Nomad jobspec and a history of 502 / no active job. The suite operations guide of 2026-11-07 lists iptvcat as placed on eg1/eg2 but the suite atlas listed iptv as not live. Treat deployment state as unverified until a release agent checks the Nomad job. - Large exports.
active.m3uanddead.csvare large and change between fetches (the ETag changes). Do not hard-code sizes or entry counts. - Earlier operational note. An earlier master-binary rollout (2026-10-30)
recorded a slow cold
/channels.jsonand unindexed queries. The 2026-11-08 single-row request returned 200; timing was not recorded. - Credential harvesting is out of scope. Those parts of the original plan were refused; the catalogue covers public metadata, provenance and takedown.
- Older architecture notes (an embedded database,
cmd/iptvcatalogin thesearchmodule) described a previous layout and are not authoritative. The iptv repo and its Postgres migrations are.
Related docs/cards
Section titled “Related docs/cards”- Card META-CARDS-SWEEP-IPTV-2026110806: source of the measurements above.
- Card DOCS-IPTV-QUICKSTART (on hold, different scope): how-to once the live state is settled. Do not add quickstart steps here.
- Surfaces index for the other products and their status pills.
- Source drift runbook for reconciling docs with code.
- Massprox operator runbook, the sibling control-loop product the catalogue originated from.
tcpsystems/iptv:PROJECT.mdand the migrations, authoritative for implemented behaviour.strategy/2026-11/SUITE-OPERATIONS-GUIDE-2026-11-07.mdfor placement.