# TVAnarchy Native macOS app (SwiftUI) for the home media stack on **plum**, plus an iOS companion. Unifies what was previously CLI/MCP-only: pick a **playback device** (plum's VLC/QuickTime or the HDMI TV on **black**) and drive transport, browse a cached library, search and manage downloads, enrich metadata, and manage the device registry — all from one app. **Hybrid architecture:** the control plane is native Swift (HTTP to VLC's Lua interface; mpv JSON-IPC over SSH to black — zero new runtime deps); the data-heavy plane reuses the vendored helper projects (`mcp/`, `recommender/`, `search/`) as subprocesses. See [docs/](docs/README.md) for the full picture and [docs/roadmap.md](docs/roadmap.md) for built-vs-designed status. ## Build & dev loop The easiest way is the `./run` wrapper (see its `usage` and comments for all targets): ```sh ./run # (or ./run dev) — stamp + xcodegen + Debug build + install + relaunch ./run test ./run clean ./run governor fleet status ./run mcp ./run bridge ./run typecheck ./run test:all ./run deploy ... ``` For manual / Xcode: ```sh 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 ``` See [docs/operations.md](docs/operations.md) for full build/install/deploy flows, release cuts, and per-platform update. `TVAnarchy.xcodeproj` is generated and git-ignored — `project.yml` is the source of truth. ## Pillars (v2) **Watch · Download · Net** — product organization and full repo correlation: [`v2/README.md`](v2/README.md). ## Layout - `Sources/TVAnarchyCore/` — framework: models, `PlayerTarget` protocol + impls, library/metadata/torrents/VPN subsystems, device registry. - `Sources/TVAnarchy/` — SwiftUI macOS app (App, RootView, feature views: Home/Player/Library/Search/Downloads/Metadata/Adult/Devices/Logs/Settings). - `Sources/TVAnarchyiOS/` — iOS companion (VLCKit player, library, downloads, remote control over an HTTP bridge). - `Tests/TVAnarchyCoreTests/`, `Tests/TVAnarchyiOSUITests/` — unit + UI tests. - `governor/`, `mcp/`, `recommender/`, `search/` — helper subsystems (own READMEs). - `fleet/` — designed-only mesh layer; `tools/` — release/update/stamping scripts; `docs/` — cross-cutting documentation. ## Playback devices - **Plum VLC** — HTTP to `http://127.0.0.1:8080/requests/…` (password from `~/.config/portable-net-tv/config.json` or `$VLC_HTTP_PASSWORD`). - **Black (mpv)** — mpv JSON-IPC over SSH, endpoints LAN `10.0.0.11` → WG overlay `10.9.0.4` fallback (the LAN address flaps). Launch/library/stats are delegated to per-device command templates wrapping `/usr/local/bin/black-tv` (the legacy `blacktv` kind auto-migrates to this). - **QuickTime** — local, zero-install, AppleScript-driven. Devices live in `~/.config/tv-anarchy/devices.json` and are editable in the Devices tab.