No description
Find a file
2026-06-09 05:34:39 -07:00
.project/history feat(tv-anarchy): document search pipeline failure analysis 2026-06-08 22:58:41 -07:00
docs feat(fleet): full Host->Device rename + UpdateService + publish tooling 2026-06-09 05:34:39 -07:00
Sources feat(fleet): full Host->Device rename + UpdateService + publish tooling 2026-06-09 05:34:39 -07:00
Tests/TVAnarchyCoreTests feat(fleet): full Host->Device rename + UpdateService + publish tooling 2026-06-09 05:34:39 -07:00
tools feat(fleet): full Host->Device rename + UpdateService + publish tooling 2026-06-09 05:34:39 -07:00
.gitignore refactor(tv-anarchy): rename PlumTV→TVAnarchy and land session work 2026-06-08 22:04:22 -07:00
build-install.sh feat(fleet): full Host->Device rename + UpdateService + publish tooling 2026-06-09 05:34:39 -07:00
project.yml refactor(tv-anarchy): rename PlumTV→TVAnarchy and land session work 2026-06-08 22:04:22 -07:00
README.md feat(fleet): full Host->Device rename + UpdateService + publish tooling 2026-06-09 05:34:39 -07:00

TVAnarchy

Native macOS app (SwiftUI) for the home media stack on plum. Unifies what was previously CLI/MCP-only: pick a playback target (plum's VLC or the HDMI TV on black) and drive transport; later phases add a cached library browser, a download searcher/manager, and a local (MLX) filename→metadata pipeline.

Hybrid architecture: the control plane is native Swift (SSH shell-outs to the deployed black-tv script; HTTP to VLC's Lua interface — zero new runtime deps); the data-heavy plane reuses existing projects (plum-control-mcp, media-recommender) as helper subprocesses. See the build plan for phases.

Build

brew install xcodegen        # if not already present
xcodegen generate            # project.yml -> TVAnarchy.xcodeproj
xcodebuild -scheme TVAnarchy -destination 'platform=macOS' build
# or open TVAnarchy.xcodeproj in Xcode and Run

TVAnarchy.xcodeproj is generated and git-ignored — project.yml is the source of truth.

Layout

  • Sources/TVAnarchyCore/ — framework: models, PlayerTarget protocol + impls, target selector.
  • Sources/TVAnarchy/ — SwiftUI app (App, RootView, feature views).
  • Tests/TVAnarchyCoreTests/ — unit tests for the core (status decoders, mappings).

Devices & services

Config lives in ~/.config/tv-anarchy/devices.json (DevicesConfig). A device exposes one or more typed services; picking a device type preselects its defaults. Edit them in the Devices tab.

  • Plum VLC (vlc service) — HTTP to http://127.0.0.1:8080/requests/… (password from ~/.config/portable-net-tv/config.json or $VLC_HTTP_PASSWORD).
  • Black TV (mpv service) — mpv JSON IPC over SSH; delegated launch/library/ stats/teardown via /usr/local/bin/black-tv. Endpoints try LAN then the WG overlay (the LAN address flaps).
  • QuickTime (quicktime service) — local, zero-install.
  • Resources drive (resourcesDrive service) — shared drive for app builds/updates + synced library/metadata assets (see docs/operations.md).