A 24/7 AI-generated television channel. Bid credits to program the next slot, and call every clip REAL or AI.
15
stars
55
commits
JavaScript
primary language
Sep 3, 2026
updated
multiversecable.com Β· AGPL-3.0 Β· Node, Postgres, no framework
A 24/7 AI-generated television channel. Not a feed β a channel: everyone watching sees the same broadcast at the same moment, off one server clock, and it never stops.
Three things make it more than a slop stream:
It's a game. Every clip is a call β real or AI? Genuine public-domain archival footage is mixed in with generated clips, and provenance is hidden until you commit, then revealed with a score and a streak. An AI clip is never allowed to finish playing unlabelled; that reveal is a legal constraint, not a design flourish.
You can buy the next slot. Bids collect in a timed window and only the winner generates, so GPU time is never spent on a clip that gets outbid five seconds later. Losing bids roll over. Credits move through SQL functions, so a balance and its ledger cannot disagree, and a CHECK constraint makes overdraft impossible under concurrency.
It tries not to get banned. Similar streams were pulled from Twitch and Kick over copyright. "Public domain" and "safe to broadcast" are different questions β those Betty Boop and Popeye prints are out of copyright but the characters are still live trademarks. So: trademark screening on every prompt, a public-domain-only archive, takedown that hides rather than deletes (an unauthenticated endpoint must not be able to erase a channel), and content moderation across 12 languages with nothing involving minors, enforced in five layers.
See docs/POLICY.md for the content rules, docs/COSTS.md for what it costs to run, docs/PRODUCT_ADS.md for the paid product-ad design, docs/BUSINESS.md for where this is going commercially, and docs/STREAMING.md for restreaming to Twitch/Kick.
viewers ββPOST /api/bidβββΆ bid board (highest pending bid wins next slot)
β
scheduler (every GEN_INTERVAL_SEC)
ββ concept = winning bid idea OR random multiverse show
ββ prompt = Claude show-writer (optional) OR template
ββ video = backend: local GPU worker | MiniMax H3 API | ffmpeg mock
ββ clip β videos/ + playlist (data/state.json)
β
broadcast clock: every viewer's player syncs to the same wall-clock
position in the looping library (GET /api/now β clip + offset)
Everything is plain Node (one dependency: @anthropic-ai/sdk, optional at
runtime) + ffmpeg. State is a JSON file. No database, no build step.
npm install
npm run dev # mock backend: ffmpeg test-pattern clips every 20s
# open http://localhost:4242
Priority: GEN_BACKEND env > LOCAL_WORKER_URL set β local >
MINIMAX_API_KEY set β minimax > mock.
local β self-hosted GPU worker (recommended, use AWS credits)Runs open-weight text-to-video (LTX-Video family by default) on your own EC2 GPU instance. See gpu-worker/ and docs/COSTS.md β roughly $45/day on-demand (g6e.xlarge) vs $7β11k/day for continuous hosted-API generation.
# on the GPU box (Deep Learning AMI, g6e.xlarge):
bash gpu-worker/setup.sh # serves :8189
# on the platform box:
LOCAL_WORKER_URL=http://<gpu-ip>:8189 WORKER_TOKEN=<secret> npm start
minimax β MiniMax H3 (Hailuo 3.0) hosted APIHighest quality (native 2K + audio). POST /v2/video_generation with model
MiniMax-H3, polled via /v2/query/video_generation/{task_id}. Cost scales
with GEN_INTERVAL_SEC β see docs/COSTS.md before turning this on. Good as a
premium tier (e.g. only bid-funded slots use H3).
MINIMAX_API_KEY=... VIDEO_RESOLUTION=768P GEN_INTERVAL_SEC=600 npm start
mock β ffmpeg test patternsNo keys, no GPU. Lets you develop/demo the full loop (bids, scheduling, broadcast sync) for free.
GEN_INTERVAL_SEC β one new clip per interval; the library loops between
new clips, so the channel is always "on air" regardless of cadence.DAILY_GEN_LIMIT β hard cap; when hit, the channel coasts on the library.MAX_LIBRARY_CLIPS β old auto clips are pruned (bid-funded clips are kept).failed.| Route | Description |
|---|---|
GET /api/now | current clip + playback offset (broadcast sync) |
GET /api/state | stats, bid board, next slot, recent clips |
POST /api/bid | {name, idea, amount} β place a bid (demo credits) |
GET /videos/:file | clip files (HTTP Range supported) |
POST /api/bid for real money (hold funds, capture on air, refund on fail).AGPL-3.0-or-later β see LICENSE and NOTICE.
Use it, fork it, learn from it. Two conditions: if you run it (or a modified version) as a network service, you must publish your source; and keep the attribution in NOTICE. If you want to run it commercially without the source-disclosure obligation, open an issue.
Built by Ismail Nafaa β https://multiversecable.com
55 commits
JavaScript
53.6%
HTML
36.4%
Shell
3.6%
PLpgSQL
3.2%
Python
3.2%
A 24/7 AI-generated television channel. Bid credits to program the next slot, and call every clip REAL or AI.
15
stars
55
commits
JavaScript
primary language
Sep 3, 2026
updated
multiversecable.com Β· AGPL-3.0 Β· Node, Postgres, no framework
A 24/7 AI-generated television channel. Not a feed β a channel: everyone watching sees the same broadcast at the same moment, off one server clock, and it never stops.
Three things make it more than a slop stream:
It's a game. Every clip is a call β real or AI? Genuine public-domain archival footage is mixed in with generated clips, and provenance is hidden until you commit, then revealed with a score and a streak. An AI clip is never allowed to finish playing unlabelled; that reveal is a legal constraint, not a design flourish.
You can buy the next slot. Bids collect in a timed window and only the winner generates, so GPU time is never spent on a clip that gets outbid five seconds later. Losing bids roll over. Credits move through SQL functions, so a balance and its ledger cannot disagree, and a CHECK constraint makes overdraft impossible under concurrency.
It tries not to get banned. Similar streams were pulled from Twitch and Kick over copyright. "Public domain" and "safe to broadcast" are different questions β those Betty Boop and Popeye prints are out of copyright but the characters are still live trademarks. So: trademark screening on every prompt, a public-domain-only archive, takedown that hides rather than deletes (an unauthenticated endpoint must not be able to erase a channel), and content moderation across 12 languages with nothing involving minors, enforced in five layers.
See docs/POLICY.md for the content rules, docs/COSTS.md for what it costs to run, docs/PRODUCT_ADS.md for the paid product-ad design, docs/BUSINESS.md for where this is going commercially, and docs/STREAMING.md for restreaming to Twitch/Kick.
viewers ββPOST /api/bidβββΆ bid board (highest pending bid wins next slot)
β
scheduler (every GEN_INTERVAL_SEC)
ββ concept = winning bid idea OR random multiverse show
ββ prompt = Claude show-writer (optional) OR template
ββ video = backend: local GPU worker | MiniMax H3 API | ffmpeg mock
ββ clip β videos/ + playlist (data/state.json)
β
broadcast clock: every viewer's player syncs to the same wall-clock
position in the looping library (GET /api/now β clip + offset)
Everything is plain Node (one dependency: @anthropic-ai/sdk, optional at
runtime) + ffmpeg. State is a JSON file. No database, no build step.
npm install
npm run dev # mock backend: ffmpeg test-pattern clips every 20s
# open http://localhost:4242
Priority: GEN_BACKEND env > LOCAL_WORKER_URL set β local >
MINIMAX_API_KEY set β minimax > mock.
local β self-hosted GPU worker (recommended, use AWS credits)Runs open-weight text-to-video (LTX-Video family by default) on your own EC2 GPU instance. See gpu-worker/ and docs/COSTS.md β roughly $45/day on-demand (g6e.xlarge) vs $7β11k/day for continuous hosted-API generation.
# on the GPU box (Deep Learning AMI, g6e.xlarge):
bash gpu-worker/setup.sh # serves :8189
# on the platform box:
LOCAL_WORKER_URL=http://<gpu-ip>:8189 WORKER_TOKEN=<secret> npm start
minimax β MiniMax H3 (Hailuo 3.0) hosted APIHighest quality (native 2K + audio). POST /v2/video_generation with model
MiniMax-H3, polled via /v2/query/video_generation/{task_id}. Cost scales
with GEN_INTERVAL_SEC β see docs/COSTS.md before turning this on. Good as a
premium tier (e.g. only bid-funded slots use H3).
MINIMAX_API_KEY=... VIDEO_RESOLUTION=768P GEN_INTERVAL_SEC=600 npm start
mock β ffmpeg test patternsNo keys, no GPU. Lets you develop/demo the full loop (bids, scheduling, broadcast sync) for free.
GEN_INTERVAL_SEC β one new clip per interval; the library loops between
new clips, so the channel is always "on air" regardless of cadence.DAILY_GEN_LIMIT β hard cap; when hit, the channel coasts on the library.MAX_LIBRARY_CLIPS β old auto clips are pruned (bid-funded clips are kept).failed.| Route | Description |
|---|---|
GET /api/now | current clip + playback offset (broadcast sync) |
GET /api/state | stats, bid board, next slot, recent clips |
POST /api/bid | {name, idea, amount} β place a bid (demo credits) |
GET /videos/:file | clip files (HTTP Range supported) |
POST /api/bid for real money (hold funds, capture on air, refund on fail).AGPL-3.0-or-later β see LICENSE and NOTICE.
Use it, fork it, learn from it. Two conditions: if you run it (or a modified version) as a network service, you must publish your source; and keep the attribution in NOTICE. If you want to run it commercially without the source-disclosure obligation, open an issue.
Built by Ismail Nafaa β https://multiversecable.com
55 commits
JavaScript
53.6%
HTML
36.4%
Shell
3.6%
PLpgSQL
3.2%
Python
3.2%