Live TV, OTA/DVB tuners, IPTV, EPG/XMLTV guide sync, DVR, and .strm remote-URL shortcuts are permanently out of scope for Silo. The deciding factor is app store distribution: the first-party iOS, tvOS, macOS, and Android clients ship through Apple and Google, and a server that plays arbitrary remote stream URLs puts the entire client suite at risk of rejection or takedown, not just the feature. Secondarily, live TV is a separate product surface whose reliability burden competes with the core playback path. This was an undocumented boundary until now, and contributors spent real effort against it (#419, #420, #474). Write it down in docs/non-goals.md and summarize it in AGENTS.md so both humans and agents see it before proposing or implementing in this area. Refs #474, #419, #295 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2.9 KiB
Non-goals
Silo is an early WIP and most of its scope is open. This document is the short list of things that are not open — features that will not be accepted, in core, in a plugin, or in a client, regardless of implementation quality.
These are product-direction decisions, not "not yet" or "needs a better design." A well-written proposal or a working PR does not change the answer. Please read this before opening an issue or writing code in these areas, so nobody's time is wasted.
Live TV, OTA tuners, IPTV, and remote stream shortcuts
Out of scope permanently. This covers, at minimum:
- Live TV of any kind, including OTA tuners (HDHomeRun and equivalents) and DVB devices.
- IPTV: M3U/M3U8 playlist ingestion, provider portals, Xtream-style APIs, stream relays.
- EPG/guide ingestion, XMLTV import, guide-provider sync, and channel lineup management.
- DVR: scheduled recordings, series rules, tuner arbitration.
.strmfiles and any equivalent shortcut format whose contents are a remote media URL to be fetched, proxied, redirected to, or transcoded by the server.
Why
App store distribution risk. Silo's first-party clients ship on the Apple and Google stores. Review of media apps in these categories is strict, and an app whose server plays arbitrary remote stream URLs or IPTV playlists is read as a conduit for unlicensed content no matter what the intended use is. The exposure is not scoped to the feature — a rejection or a takedown lands on the entire client suite, for every user, including those who only ever play files they own. No single feature is worth that trade.
Product scope. Silo indexes and plays media that exists on disk in a library the operator controls. Live TV is a different product with its own always-on reliability burden: tuner allocation, guide-provider contracts and merge semantics, schedule conflict resolution, and recording lifecycle. Building it competes directly with making the core playback path fast and correct, which is the stated priority.
.strm is the same feature with a smaller diff. A .strm file is a text file containing a
remote URL. Supporting it turns the server into a fetcher/transcoder/redirector for arbitrary
remote streams. The small change footprint is exactly what makes it worth naming explicitly here:
it is the capability without the label.
Not available as a plugin either
The plugin runtime is not an escape hatch for this. Anything in this list needs first-party client UI to be usable, which puts it back in the app store listings and reproduces the exact problem above. Not in core, not in a plugin, not in a client.
What to do instead
Silo does not assume it is the only media server on the box. Run Jellyfin, Plex, or a dedicated tuner/IPTV backend alongside it for live TV, and use Silo for the on-disk library. That separation also keeps the risk where it belongs, on software whose distribution model can absorb it.