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/.
3.1 KiB
TweetDeck on Steroids
A self-hosted, multi-platform broadcast newsroom for collectives — a column wall that watches every platform at once, wired into a full live broadcast pipeline.
TweetDeck died when X locked its doors. We built what should have replaced it: columns that watch Mastodon, Telegram, Bluesky, PeerTube, Twitch and more in one wall — wired into publishing, approvals, live mixing, and an archive that can't be purged. Self-hosted. No algorithm in between. No platform holding your keys.
How people work together in it
- The wall is the room. Live columns watch all your connected accounts at once — every post rendered safe, media proxied, duplicates deduplicated into the archive. The whole collective sees the same picture.
- Draft once, approve together, publish everywhere. Anyone can draft into any account. Every draft goes through configurable group approval before it moves. On sign-off it fans out natively per platform — proper quotes, attribution intact, tamper-evident audit of who decided what.
- Roles, not passwords. Editors draft, reviewers approve, publishers publish — per account, per channel. Invite links bring people in; leaving removes access. No shared logins, no bottlenecks.
- Schedule like a station. Timezone-correct scheduled posts with a DST-proof occurrence engine. Cancel, review, re-schedule — the calendar survives clock changes.
- Live control room in the browser. Multiview grid, TAKE/CUT, preview/program, lower-thirds and chyrons, audio mixing — program out to your PeerTube channel, 24/7 playlist when you're dark. Works from a laptop.
- Auto-Director. Priority rules switch sources automatically so the stream never dies mid-action.
- Chat from every platform bridged into one overlay — viewers heard, moderators acting, the streamer focused on the shot.
- Your own transcode workers. Laptops and GPUs join as render workers over Tailscale — an RTX 3090 laptop is already transcoding real PeerTube jobs. More workers, more channels, all self-hosted.
- An archive that can't be purged. Content-addressed, encrypted, deduplicated. Platforms purge; the archive remembers. Deleted threads stay citable.
- Analytics. Month-by-month snapshots: what published where, what failed, what got archived.
What we need: testers and scrapers
We're looking for testers across the flow — post through approvals, run a column wall against your real feeds, mix a stream, break the scheduler across timezones. And we're looking for help on the hard problem: intake at scale. Watching RSS, the fediverse and Telegram is solved. What we want next: reliable ways to pull from the locked platforms — hashtags, accounts, search columns — without burning accounts. If you've built scrapers, run intake pipelines, or know the platform-integrity arms race from the inside, help us design the intake layer: per-URL fetchers, community-submitted links, archive harvesters, bridge services.
Stack
Next.js + NestJS + Postgres (RLS) + Temporal + Redis + S3 + FFmpeg/PeerTube. Self-hosted end to end, multi-tenant, everything audited.