Self-hosted multi-platform broadcast newsroom for activist collectives: publishing pipeline with group approval and DST-proof scheduling, TweetDeck-style column wall with hostile-content-safe rendering, live control room with Auto Director, bridged chat governance with polls and quorum, distributed sandboxed transcode workers, encrypted content-addressed archive, monthly analytics. MIT licensed. See README.md and docs/.
4.9 KiB
Tactical Media Broadcast Hub
A horizontal coordination platform for media analysis, production, and diffusion — self-hosted, multi-platform, no algorithm in between.
The Hub is built for one thing: letting many people run many media outlets together, in real time. Dozens of contributors, dozens of social accounts across Mastodon, Telegram, PeerTube, Bluesky, Instagram, Twitch and more — one shared newsroom where the collective edits, decides, and publishes as a single coordinated force. It is not a scheduling tool with a broadcast feature attached; coordination IS the product. The rest — live mixing, the 24/7 channel, the archives — grows out of that spine.
The newsroom loop: analysis → production → diffusion
ANALYZE — see everything, together. Live feeds from every connected account flow into shared columns. Telegram channels the collective follows are mirrored automatically into a review archive. Every draft, clip, and statement lives in one encrypted library. The room sees what's happening across the whole footprint at once — and what the movement is saying everywhere else.
PRODUCE — collective editing in real time. Many hands, one voice. Any editor can draft into any account; every change is versioned. Nothing publishes in the collective's name alone: the review workflow puts each post before the group — a configurable quorum (2-of-3, 3-of-5) must sign off, with roles that can be delegated per account (this crew approves the press account, that crew the stream channel). Votes are transparent, denials require a reason, and the whole trail is tamper-evident. Decisions are made by whoever is present, in the open, in minutes — not routed through one admin's phone.
DIFFUSE — smart quoting across platforms. One approval fans a post out everywhere, native to each platform. Cross-posting uses smart quotes: where a platform has native quoting (Mastodon quote posts, Bluesky, Telegram forwards), it's used; where it doesn't, the system generates a proper attributed quote — author, instance, link back — never a silent copy-paste. Amplifying sister collectives' work keeps their names on it by default. Scheduling, rate-awareness, and per-account timing come along for free.
Real-time story production
Breaking events don't wait for consensus rounds. The Hub is built for speed with accountability: an editor stages a developing story, reviewers approve from their phones, updates go out as quote-chained revisions. Meanwhile the live layer runs: field streamers push cameras from the Opticast Android app straight to our server; a director in the browser Control Room watches every feed in a multiview grid, mixes audio, cuts between scenes, burns lower-thirds and scrolling chyrons; the mixed program goes to our PeerTube channel — and when no one is live, the channel keeps broadcasting a scheduled playlist. An Auto-Director can switch sources by priority rules so the station never goes dark mid-action. Unified chat from every platform lands in one place — viewers heard, moderators acting, the streamer focused on the shot.
The archive: memory that can't be purged
Everything the collective produces — text, photos, video, streams — lands in an encrypted archive on our own storage: client-side encrypted, content-addressed, deduplicated. Platforms purge; the Hub remembers. The archive feeds back into production: yesterday's footage is tomorrow's playlist, a deleted thread is still citable, and Telegram-channel history becomes reviewable material with attribution intact.
Security & trust model
Self-hosted, end to end — no corporate cloud, no accounts needed to run the system itself. Multi-tenant with row-level security; platform credentials in an encrypted vault the database never sees in plaintext; every editorial action in a hash-chained audit log; anonymous-infrastructure friendly (the host carries boxes, not content — storage is ciphertext).
What we need from you
| Piece | Spec | Notes |
|---|---|---|
| App server | 4 vCPU / 8 GB / 100 GB | API, newsroom web, scheduler, live compositor (ffmpeg), Postgres, Redis |
| Media server (optional, same box OK) | 4 vCPU / 8 GB + S3 storage | PeerTube channel + VODs; RTMP ingest :1935 |
| Object storage | S3-compatible, 500 GB+ | MinIO works; content is client-side encrypted |
| Domain + DNS | you have it | newsroom / channel / chat subdomains; anonymous registration |
| Uplink | 100 Mbps+ recommended | streaming out |
| Optional | tiny Matrix box (1 vCPU/1 GB) | encrypted team chat + Telegram bridge |
Status, honestly: publishing + review + archive + connectors + OAuth connecting (Mastodon full, Telegram bots) run today; multi-signoff quorum, live compositor, control-room UI, unified chat and auto-director are landing now. Bring the servers and the domain — the collective brings the newsroom.
— the Tactical Media Broadcast Hub collective (Tactical Media Broadcast Hub × Opticast × PeerTube)