A private streaming service serving popular & new TV and movies to ~30 friends. This is the clean-start blueprint — it supersedes and deprecates v4. MediaServer / StudioServer as a sprawling code-pile is retired; this is the spec everything gets rebuilt against.
This is a blueprint, not a live status page. It deliberately holds no live numbers (that's the v4 mistake — a static page can't carry real-time data honestly). Live ops live in Airtable; the consumer face is famflix.app.
1 · Goal & principle
The goal: friends and family (up to ~30) open Famflix and find the popular and new TV and movies they actually want to watch — and it stays clean, current, and effortless to run.
The principle — subtraction
70 moving parts to do a 6-part job.
The old system failed from sprawl, not missing features: 14 rogue scrapers, 6 acquisition containers, music grabbers, 11 overlapping monitors, ~60 ad-hoc scripts — all bypassing each other, no gate, no taste, vanity metrics. v100 is the boring, robust, known shape and nothing else.
2 · The 6-service stack
The entire system is six services. Acquisition has exactly one road: request → approve → search → download → Plex. No scrapers, no second path.
Layer
Service
Job
Stream
Plex
Library + the 30 friend accounts (native Plex sharing)
Front door
Overseerr
Friends browse popular & new (TMDB built-in) and request
Fulfil — film
Radarr
Turn an approved movie request into a download
Fulfil — TV
Sonarr
Same, for series/episodes
Find
Prowlarr
One indexer hub feeding Radarr + Sonarr
Download
Transmission
The only download client
Declared in one compose file, not 70 launchd plists. If it's not one of these six, it doesn't run.
3 · Curation model — acquire from the gap
Content enters only two ways, both deliberate:
Friend requests — via Overseerr, with your approval as the gate. Overseerr's Discover surfaces TMDB trending / popular / upcoming, so "popular & new" is native.
Curated auto-lists — 2–3 lists (e.g. "Popular Movies this month", "Trending TV") feed Radarr/Sonarr automatically, with a hard genre block on Reality / Soap / Game-Show, so the library stays fresh without anyone lifting a finger and the reality-TV war is over by design.
Proven pattern — your own LocalSpotify. It already does this for music: rank by real listening (lifetime + recent plays), diff against the library, acquire only the gap. v100 applies the same idea to TV/film — acquire from the gap between demand (popularity / requests) and what's already on the shelf. Acquire from the gap, never from a scraper.
4 · Why this ends every failure we hit
Old failure
v100 fix
Reality TV kept returning
No scraper exists; entry only via request or genre-filtered list
Dupes / junk / wrong quality
One quality profile in Radarr/Sonarr; no parallel grabbers
Vanity counts (4,209 junk albums)
Measure against demand + watch, not raw totals
TR sat empty when you checked
Requests + auto-lists keep a real queue; one path, observable
Reality-cleanup gate built — 76 reality/soap series surfaced into an Airtable Kanban for review (nothing deleted without approval; Grey's Anatomy auto-protected from a mis-tag).
So the box is already most of the way to the v100 baseline: the mess is off, the core (Plex) is intact, and the rebuild starts from a clean floor.
7 · Storage & drive roles
Policy: PERSONAL holds zero media. All media — movies, TV, music — lives on MEDIA; PERSONAL is personal data only (backups, home-video, iCloud, TimeMachine). The 2 TB SSD is downloads/transcode and is kept free. A 20 TB drive is planned to absorb the ~2 TB music library (and 4K films) that MEDIA can't currently hold.
Drive
Size
Used
Free
Role
MEDIA — Seagate 8 TB
8.0 TB
79%
1.73 TB
primary media library (movies + TV; music when 20 TB lands)
This session: PERSONAL recovered 93% → 77% (~700 GB) — deleted duplicate music (folder + within-album), reality/talk TV, and redundant non-4K movie copies (4K kept per the 20 TB plan). Still on PERSONAL: ~2.1 TB music library + ~58 GB misplaced video to move to MEDIA, and ~230 GB slskd dupes/junk to delete. Full clear to 0 media completes when the 20 TB drive is installed — MEDIA (1.73 TB free) can't hold the 2.1 TB music bulk today. Measured live via SSH to Studio, 28 Jun.
8 · Capabilities — StudioServer
Every API, key, tool, and infrastructure item used by this project. Secret values are NOT here — they live in the vault at Claude/credentials.md. Scoped to Famflix / StudioServer only.