Files
silo-server/docs/non-goals.md
QuickandClaude Opus 5 9e7fe79590 docs: record live TV, IPTV, and .strm as permanent non-goals
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>
2026-07-25 15:07:42 +00:00

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.
  • .strm files 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.