NATIVE macOS · SWIFTUI

TVAnarchy

One app for the whole home media stack: pick a playback device, browse the library, search and download, and watch — on the laptop or the living-room TV.

VLC · HTTP mpv · JSON-IPC over SSH QuickTime · AppleScript Transmission 303 shows indexed

01Home

Land on what matters: Continue Watching, Recently Added, and per-category rails built from a locally cached library index. The scanner keeps it fresh in the background.

  • Recently added across all folders
  • TV / Movies / Anime / Cartoons rails
  • Mini-transport always in reach
Home tab with Recently Added and category rails

02Library

The full collection, grouped by configurable folder types. Filter chips and live search narrow 300+ shows to the one you want in a keystroke.

  • Type chips with live counts
  • Folder → type mapping is yours to edit
  • Episode-level browse per show
Library grid with filter chips

03Show pages

Every show gets a season-by-season episode list. Play one episode, or queue the whole run on whichever device is active — the queue follows the show order.

  • Play / Queue all from the header
  • Per-episode play buttons
  • "Queued 19 on 'Black TV'" — one click
Severance show page with two seasons of episodes

04Player & devices

The control plane is native Swift: VLC over HTTP on the laptop, mpv over SSH on the TV box, QuickTime via AppleScript. Switch targets with one click in the toolbar.

  • Transport, volume, subtitle/dub toggle
  • Sleep timer and host load readout
  • Device registry editable in-app
Player tab with transport controls

05Search everywhere

One search box covers the library you have and the torrents you don't. Results show seeders, size, and source — already in your library is flagged first.

  • Library hits ranked above downloads
  • Seeders / size / tracker at a glance
  • Add to Transmission with one click
Search results for severance: library hit plus 7 torrents

06Downloads

Live Transmission view of everything moving on the storage box: throughput, per-torrent progress, ETA, and a "needs attention" triage for stuck or erroring transfers.

  • 44 active · 168 seeding, one screen
  • Stuck-at-0-peers flagged automatically
  • Notification when an episode is watchable
Downloads tab with live progress bars

07Devices

The device registry lives in devices.json and is editable in-app. Each entry shows connectivity, roles, and host load — LAN first, WireGuard fallback.

  • Laptop VLC + TV box out of the box
  • Restart / deploy actions per device
  • Reload, reset, or reveal the config
Devices tab with Plum VLC and Black TV connected

08Logs & settings

Filterable structured logs for every subsystem, and settings that cover library types, media-key forwarding, download notifications, an offline episode cache, and an importable download VPN.

  • INFO / WARN / ERROR filters
  • Offline cache: next episodes synced to disk
  • OpenVPN import for dark download traffic
Settings tab: playback, offline cache, download VPN

How it works

Hybrid architecture: a native Swift control plane with zero new runtime dependencies, delegating data-heavy work to vendored helper subsystems.

Control plane · Swift

VLC's Lua HTTP interface for local playback; mpv JSON-IPC tunneled over SSH for the TV attached to the storage box; AppleScript for QuickTime. All first-party frameworks.

Data plane · helpers

Library scanning, metadata enrichment, torrent search, and recommendations run as subprocesses from vendored helper projects — reused, not rewritten.

Fleet · mesh

Devices resolve over the LAN with a WireGuard overlay fallback, so the same app drives the living-room TV from home or from the road.