# StreamVault puts the remote control first in an Android TV IPTV player

> StreamVault is a Kotlin application for Android TV that plays M3U playlists, Xtream Codes, Stalker Portal and Jellyfin sources, with a DVR, offline downloads and a plugin API. Its real differentiator is the D-pad interaction model, and its real cost is a custom licence and a very fast release cadence.

**Davidona/StreamVault-IPTV** — StreamVault is a TV-first free IPTV player for Android TV built with Kotlin, Jetpack Compose, Room, Hilt, and Media3.

- Repository: https://github.com/Davidona/StreamVault-IPTV
- Stars: 832 · Forks: 142
- Language: Kotlin
- License: NOASSERTION
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/davidona-streamvault-iptv

## D-pad navigation is the design centre, not a retrofit

Most IPTV clients are phone applications stretched across a television. StreamVault takes the opposite route. The README says it is built for Android TV first and calls out D-pad navigation, quick channel movement, large-library organisation and playback that still feels good from the couch as the things generic IPTV apps usually get wrong. Phone and tablet installs are supported, but the primary target is stated to be TV.

The concrete details back up that claim. There is numeric remote input for direct channel entry, so you can type a channel number instead of scrolling. There is a configurable startup landing screen that can open Home, Live TV, Movies, Series, Guide, Downloads, Plugins, Add-ons or other sections. Live TV browsing includes preview mode, favourites, recent channels, custom groups and pinned categories, which is the set of features you need when the list runs to thousands of entries.

That focus is a genuine constraint on the code, and it is also the reason the app may feel wrong to someone who plans to do most of their viewing on a handset. TV-first navigation means the interaction model is built around a directional pad, and layouts that assume touch will not map cleanly onto it.

## Four provider protocols, one channel list

The provider support is where the engineering weight sits. StreamVault handles `Xtream Codes`, `Stalker Portal`, `Jellyfin` media servers and `M3U` playlists from URLs as well as local files. Each of these is a different protocol with different authentication and different catalogue shapes, and the README describes separate onboarding and sync flows for live channels, movies, series and guide data, plus fast switching between providers with provider scoped settings.

Jellyfin gets specific treatment, with direct library sync and a Quick Connect QR or code flow aimed at TV setup where typing a password is painful. QR based provider pairing from a phone on the same LAN serves the same problem for other provider types. Stalker and Ministra compatibility is described as expanded, and there is a Quick Stalker setup path from supported playback or export links.

M3U handling goes further than most clients manage. You can play supported adaptive and DRM protected streams from a playlist, and combined M3U profiles let you merge several M3U providers into a single Live TV source. In browser source switching is offered for merged Live TV setups, and scheduled background refreshes keep saved catalogs and guide data current without you reopening the app.

## Room stores the catalog, Hilt wires it, Media3 renders it

The stack is named in the project description: Kotlin, Jetpack Compose, Room, Hilt and Media3. That combination is a coherent set of choices for an offline capable TV application. Room handles the local database of channels, movies, series and guide entries, which is what makes large playlists browsable without a network round trip for every selection. Hilt handles dependency injection across the app, and Media3 provides the playback engine that can deal with the adaptive and DRM protected streams the M3U support claims.

The repository layout mirrors that modular structure. Top level directories include `app/`, `core/`, `data/`, `domain/`, `feature/`, `player/`, `tools/` and `validation/`, alongside the Gradle build files, `docs/` and a `benchmark/` directory. The `feature/` split suggests per-screen modules, while `domain/` and `data/` separate the model layer from storage and network access.

Because Compose drives the UI, the focus and navigation behaviour described earlier is implemented with the same toolkit the rest of the interface uses, rather than through a separate TV specific branch.

## Installing means sideloading an APK, not fetching a package

StreamVault ships as an Android application, and the README links a direct APK download that points at the latest release. The download target is this path:

```bash
https://github.com/Davidona/StreamVault-IPTV/releases/latest/download/StreamVault.apk
```

You enable installation of unknown apps on the television, transfer that APK to the device and open it. The source tree also contains a full Gradle build (`build.gradle.kts`, `settings.gradle.kts`, `gradlew` and `gradlew.bat`), but the README does not document a build procedure, required SDK versions or a signing configuration, so anyone planning to compile from source has to work that out from the build files rather than from the documentation.

The releases page is where the version choice happens. Alongside the current stable tag you will find beta builds published under version numbers such as `v1.2.1-beta.000086.01`. Installing the latest download link gives you the stable release, while the beta tags are there if you want a specific recent build.

## The guide overlay opens over live playback instead of replacing it

One feature stands out because it changes how you watch rather than what you can open. StreamVault offers a transparent full guide overlay that can open over live playback without leaving the player. For a sports fan this is the difference between checking what is on and changing the channel, and it is the kind of detail that a generic TV interface usually refuses to build because it complicates the playback surface.

EPG support is broad: guide search, XMLTV support, and provider archive or catch-up when the provider offers it. Live TV preview mode and pinned categories cover the browse side of the same problem.

Archive and catch-up depend on the provider, so the feature set you actually get is a function of which source you connect. The README is clear that catch-up appears when available, which means the same StreamVault install can feel complete or thin depending on the account behind it. That is a source limitation, not a bug in the app, but it is worth checking against your provider before you judge the feature.

## A built-in DVR and offline downloads on a television device

The recording side is more than a download button. StreamVault ships a built-in DVR with scheduled recording, background capture, playback of the recordings and app managed default storage. Scheduled recording is the part that requires the app to keep working when nobody is watching, which on a TV box means background work, and the presence of a `validation/` directory suggests some effort is spent checking the results of that pipeline.

Offline VOD downloads come with grouped episode queues, pause and resume controls, and local playback for completed files. Grouped queues matter for series, where the obvious mistake is downloading one episode and losing the ordering.

There is also local and Google Drive backup for provider setup, favourites, groups and playback history. On a television that is genuinely useful because reinstalling an APK and re-entering provider credentials by remote is miserable work, and a backup of that state removes the repeat cost.

Parental controls are unusually prominent for this category: PIN protected categories plus automatic adult category detection, so a provider that labels its sections differently is still filtered.

## The plugin API extends StreamVault through companion APKs

Instead of a scripting layer inside the app, StreamVault exposes a plugin API for creating companion Android APKs that extend providers, playback, Cast URL handling or configuration flows. That is an unusual shape. Plugins are separate applications that extend the host, which means a plugin can carry its own dependencies and permissions rather than being sandboxed inside the player.

The same openness extends to playback. The app supports Cast, external player handoff and in-app update delivery, alongside TV integrations such as Watch Next, launcher recommendations and TV input sync. A user arriving from a live TV service can resume a programme on the device where it was actually watched.

Stremio compatible add-ons are handled natively, with catalogs, metadata, direct and debrid playback, subtitles, resume history and offline downloads, and Trakt integration covers scrobbling, watched history sync, watchlists, ratings, custom lists and Trending or Popular discovery. The plugin API and the add-on support together mean the application is not trying to be a closed box, which is a design choice with a cost: more surfaces to maintain, and more for an installer to reason about.

## A custom StreamVault_OSL licence and a very fast build cadence

The licence is where an adopter has to stop and read. GitHub could not classify it, and the README badge points to a licence named StreamVault_OSL in the LICENSE file. Without reading that file you cannot tell what you are permitted to do with the code, and redistribution or commercial use questions are exactly the kind you should answer from the text itself. This is a licensing question, not a technical one, and this review does not interpret it.

The release record shows a busy project. v1.2.1 was published on 2026-10-19, and on the same day a beta build 000086.01 and an earlier beta build 000085.01 were published, the earlier one an hour before the later. The repository is not archived and the last push was on 2026-10-19, so the code is changing daily.

That cadence is good for a TV app, where remote devices and provider APIs drift, and expensive for anyone who plans to maintain a fork. A changelog exists at `docs/CHANGELOG.md`, and the release workflow runs in GitHub Actions, so upgrade notes are published. Pin a build rather than tracking the beta channel.

## Conclusion

StreamVault suits someone with a large playlist set and a television in the living room who wants fast channel movement, on-screen guide and background recording without building a media server. It does not suit phone-first users, and it does not supply content, so you need your own provider credentials before the app has anything to show. Before installing, read the LICENSE file, because the project uses a StreamVault_OSL licence that GitHub could not classify, and confirm on the releases page which build you are sideloading, since v1.2.1 and several v1.2.1 beta builds were published on 2026-10-19.

## FAQ

### What does StreamVault need to play anything?

StreamVault is a player, not a content service, so it needs your own source. It supports `Xtream Codes`, `Stalker Portal`, `Jellyfin` media servers and `M3U` playlists from URLs or local files, and provider credentials are entered during onboarding.

### How do I install StreamVault on an Android TV device?

The README links a direct APK download that resolves to the latest release. Sideload the file from that link on an Android TV device, and note that the releases page also carries beta builds for the same version number, so check which artefact you are installing.

### Can StreamVault record live TV and download episodes for offline viewing?

Yes. The built-in DVR supports scheduled recording, background capture and playback of recordings with app managed default storage, while offline VOD downloads support grouped episode queues, pause and resume, and local playback of completed files.

## Sources

- [Davidona/StreamVault-IPTV on GitHub](https://github.com/Davidona/StreamVault-IPTV)
- [Issues](https://github.com/Davidona/StreamVault-IPTV/issues)
- [README](https://github.com/Davidona/StreamVault-IPTV/blob/master/README.md)
- [Releases](https://github.com/Davidona/StreamVault-IPTV/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/davidona-streamvault-iptv
