tv-anarchy/README.md
Natalie f2ce865cb8 docs(@applications/tv-anarchy): 📝 update app description and architecture details
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-06-09 20:57:51 -07:00

50 lines
2.4 KiB
Markdown

# 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
```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
```
`TVAnarchy.xcodeproj` is generated and git-ignored — `project.yml` is the source of truth.
## 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.