Only official, embeddable streams. Every channel here is a broadcaster’s own 24/7 YouTube livestream with embedding enabled by that broadcaster — licensed to show this way. Networks whose live feeds are paywalled, geo-locked, or only reachable through unofficial re-streams (CNN, Fox, Bloomberg, Reuters TV and others) are deliberately excluded: embedding those would mean redistributing a stream nobody licensed, which is a copyright problem, not a technical one.
Only one stream runs at a time. A tile plays video only while it is the one you are hearing; every other tile is a still thumbnail. A 3×3 wall is therefore one live decoder plus eight images, not nine — and the ~600KB hls.js library is fetched only when you first press play, so opening the wall costs almost nothing.
Pause and rewind are local, not a recording. A playing HLS tile has pause, ±10-second and jump-to-live controls. These move within the few seconds hls.js already holds in the browser buffer — nothing is downloaded or stored, and closing the tile discards it. It is a live buffer, not a DVR archive.
This is the one tool that needs YouTube. The
rest of Ghost Defense avoids external scripts and CDNs on purpose. Video cannot be self-hosted, so this
tool embeds youtube.com players — which means it will not work on a network that
blocks YouTube, and it tells you when that happens rather than showing a black box.
A stream can be down without the tool being broken. Broadcasters rotate or end livestreams; a channel that shows an error is YouTube reporting the stream is offline, not a fault here. Use the “open on YouTube” link to confirm.
HLS streams play inline; YouTube is the fallback. When a channel has an open HLS (.m3u8) stream url, this plays it directly with a vendored copy of hls.js (falling back through the Ghost proxy only if the broadcaster blocks direct browser access) — no YouTube, no configuration error, real inline video. Channels with only a YouTube presence fall back to a verified-video-id embed, or to opening on YouTube. Add .m3u8 urls under “Set live IDs”.
Why tiles open on YouTube instead of embedding. Big broadcasters run several simultaneous live streams, and YouTube’s channel-embed throws a “configuration error” when it cannot pick one. So a tile embeds inline only when given a specific verified live video id (Set live IDs); otherwise it shows a thumbnail and opens the channel’s live page on YouTube. This is deliberate — a reliable hand-off beats an inline player that errors.
Nothing here is verified reporting. Live TV is live TV — breaking coverage is unconfirmed by nature, every outlet has an editorial stance, and state broadcasters are labelled as such. Treat it as what is being said now, not as established fact.
watch?v=THIS_PART), and paste one per line as ChannelName = videoId for YouTube, or
ChannelName = https://…/stream.m3u8 for a direct HLS stream (plays inline, no YouTube).
Stored only in this browser.