Your media, together. On TV, phone, tablet and the web.
An open-source media hub for your home servers, live TV, collections and connected sources.
Watch the full 85-second tour · Download video
Website · Setup guides · Discord
ARVIO includes no movies, series, live channels or third-party subscriptions. Connect your own authorized services and sources. Catalog artwork and listings are for discovery, not a grant of access to the content.
Get ARVIO · Features · Get started · Collections · Self-host · Build · Contribute
| Where you watch | How to get it |
|---|---|
| Android TV, Google TV, Fire TV, Android phones and tablets | Free app. Install from Google Play where available, or download the signed APK from GitHub Releases. |
| Desktop, iPhone, iPad and other browsers | Open ARVIO Web and sign in with your ARVIO account: your profiles, watchlist and addons are already there. Playback on the official hosted service needs ARVIO Premium ($2.99 a month or $20 for 12 months); you can look around first. |
| Your own computer or server | Free self-hosting. Run the web app with Docker Compose or Node.js and your own integration credentials. Setup instructions. |
The GitHub APK supports Android 6.0+; the Play build requires Android 7.0+. The standard APK contains ARMv7 and ARM64 builds. Device, codec and service support can vary.
For GitHub updates through Obtainium, add https://github.com/ProdigyV21/ARVIO as the app source. The Obtainium guide includes an import file and APK filtering instructions.
What's new? See the latest release notes and changelog. This README and the tour describe the current main branch, which can include improvements not yet in a published APK. Features can differ between Android, web and distribution builds.
- A home screen you can make your own. Choose the expanded-card TV home or the classic layout, arrange catalogs and collections, show your watchlist beneath Continue Watching, and enable optional trailer previews.
- Collections and discovery. Browse built-in collections or import your own. Collection pages include artwork, title previews, descriptions and ratings where available. Add compatible TMDB pages, Trakt, SIMKL and MDBList lists, or add-on catalogs.
- Your library and release Calendar. Keep watchlists, personal lists and home-server libraries together. See upcoming movies and episodes from supported lists and shows you are watching, with local-time schedules where an air time is known.
- Plex, Emby and Jellyfin. Connect your own servers or libraries shared with you, browse their contents and use available server media as playback sources.
- Live TV and catch-up. Connect supported M3U, Xtream Codes or Stalker sources. Browse categories, favorites, recently watched channels and the programme guide, with a mini-player and fullscreen playback. Guide coverage, catch-up and seeking depend on your provider.
- Sports inside Live TV. Browse live and upcoming events, then choose a matched channel or compatible sports add-on source. Use IPTV, sports add-ons, or both. Coverage and artwork depend on the schedules and sources available to your setup.
- Add-ons, debrid and Telegram. Browse and install compatible community add-ons, configure supported debrid sources, or search video files in your connected Telegram channels and groups. These services need their own configuration and access.
- Trakt and SIMKL tracking. Connect accounts per profile for supported watchlists, history, scrobbling and Continue Watching/next episodes. SIMKL uses AUTH V2 for new connections; its custom lists require SIMKL PRO/VIP, not ARVIO Premium.
- Playback and subtitles. Media3 playback on Android, episode-aware controls, source selection, audio/subtitle tracks, automatic frame-rate matching on supported hardware, subtitle language preferences and optional AI subtitle tools.
- Profiles and optional cloud sync. Separate viewing state, avatars and PINs, plus age-filtered kids profiles on Android. ARVIO Cloud can sync supported settings, catalogs, playlists and watch state across your devices.
Browser playback depends on the source, CORS, codecs and browser. It is not a guarantee that every source playable on Android will play in a browser. See the browser playback guide.
- Install and create a profile. Use local profiles, or connect ARVIO Cloud for supported cross-device sync.
- Connect your sources in Settings. Add your home server, a compatible add-on, your live TV playlist or Telegram account. Browsing a catalog alone does not create a playable source.
- Connect your trackers. Add Trakt or SIMKL for viewing progress and supported lists; connect MDBList if you use its lists.
- Make Home yours. Choose your layout, organize catalogs and import collections. Open a title and select an available source to watch.
All setup guides · Plex / Emby / Jellyfin · Ask the community
Catalogs are rows of titles, such as a trending feed or a personal list. Collections organize supported catalogs and discovery sources into browsable folders with their own artwork.
Use Collection Studio to create a collection, then import its JSON in Settings. You can also paste a supported collection document or a direct JSON URL hosted on GitHub or another public host. Direct file uploads are not supported yet.
- Create, host and import collections and catalogs
- Collection format, supported sources and examples
- Release Calendar behavior and supported sources
- SIMKL V2 and custom-list setup
Imported collections do not include streaming access. You still need your own sources, and any subscriptions required by the connected service.
Run the web app on your own computer or server without an ARVIO Premium subscription. Docker Compose and Node.js are supported; configure your own TMDB key and any optional integration credentials.
The web README has the complete quick start, environment setup, configuration checker and update commands. Read the self-hosting guide before exposing it to your network or the internet.
Self-hosted profiles and settings are local to each browser; this mode does not provide ARVIO Cloud cross-device sync. Connected Trakt/SIMKL accounts can still synchronize the data those services support. Self-hosting is separate from access to the official paid hosted service.
- Setup help and discussion: ARVIO Discord and guides.
- Bug reports: open a GitHub issue with the app version, device/OS, install source, steps to reproduce and expected behavior. Include a crash reference or redacted logs when available.
- Feature requests: describe the workflow you want to improve and check existing issues first.
Never post passwords, API keys, tokens, private playlist URLs or unredacted account information in an issue or screenshot.
ARVIO takes ongoing development, testing, hosting and service costs. ARVIO Premium (hosted ARVIO Web for iPhone, iPad and computers) funds that work, and you can also support the project on Ko-fi. The Android app and self-hosted web app remain free; Premium provides the optional hosted web service, not media subscriptions.
This repository contains the Android app, web app, public website and supporting services. Android uses Kotlin and Jetpack Compose; web setup is documented separately in web/README.md.
Requirements: JDK 17, Android SDK 36, Android Studio or the SDK command-line tools, and the tracked Gradle wrapper.
git clone https://github.com/ProdigyV21/ARVIO.git
cd ARVIO
cp secrets.defaults.properties secrets.properties
# Configure the integrations you want to test in secrets.properties.
./gradlew :app:assembleSideloadDebugOn Windows PowerShell:
git clone https://github.com/ProdigyV21/ARVIO.git
cd ARVIO
Copy-Item secrets.defaults.properties secrets.properties
# Configure the integrations you want to test in secrets.properties.
.\gradlew.bat :app:assembleSideloadDebugThe debug APK is written to app/build/outputs/apk/sideload/debug/. For an x86/x86_64 emulator, add -PincludeX86Abis=true; APK builds otherwise include ARMv7 and ARM64.
Use your own TMDB, Trakt, SIMKL, Telegram and other application credentials for the integrations you test. Placeholder values do not provide working authentication. Cloud/auth features also require appropriate backend configuration. Keep secrets.properties, keystores and signing credentials out of Git.
Test on an emulator or dedicated device. Ordinary debug builds use the production package ID but a different signing key, so they cannot update an official signed installation. Do not uninstall a user's app just to install a debug build.
Build variants, optional SDKs and release verification
| Variant | Purpose |
|---|---|
play |
Google Play distribution; in-app self-update disabled. |
sideload |
Direct APK distribution; in-app self-update enabled. |
debug |
Development build with debugging enabled. |
staging |
Release-like beta in the separate com.arvio.tv.beta package; uses release signing when configured, otherwise debug signing. |
release |
Optimized production build. Configure your own private release keystore before distribution. |
./gradlew :app:installSideloadDebug
./gradlew :app:assemblePlayDebug
./gradlew :app:testSideloadDebugUnitTestFor an emulator, include -PincludeX86Abis=true in the build/install command. For a network-connected test device:
adb connect <device-ip>:5555
adb -s <device-ip>:5555 install -r app/build/outputs/apk/sideload/debug/app-sideload-debug.apkDiscord Rich Presence requires Discord's separately licensed Android Partner SDK. Place the approved AAR at app/libs/discord_partner_sdk.aar and configure DISCORD_CLIENT_ID. Builds without it remain valid and show Discord as unavailable. Do not commit or redistribute the SDK without the required permission.
The speech-recognition AAR is downloaded and checksum-verified by Gradle. Integration availability can differ by distribution: for example, Sync by Hearing is currently a sideload feature.
Debug builds disable crash reporting. Fork maintainers should use their own Firebase client configuration before distributing builds. See Firebase diagnostics for configuration, consent and symbol-upload instructions.
Copy keystore.properties.template to keystore.properties, configure a private release keystore, and keep both out of version control. A locally built APK does not share the official release signing key.
./gradlew :app:testSideloadDebugUnitTest
./gradlew :app:assemblePlayRelease
./gradlew :app:assembleSideloadRelease
./gradlew :app:bundlePlayReleaseSmoke-test startup, profile switching, playback, source fallback, audio/subtitles, IPTV/EPG, add-on management, search, settings, sync and repeated player open/close on the supported device classes. Complete the release content/rights checklist before publishing.
Bug fixes, tests, translations, documentation and accessibility improvements are welcome. Open a focused pull request, explain the change, and include testing details and screenshots for UI work. Discuss larger changes in an issue first.
Keep credentials and private media out of submissions. Public demo assets need documented permission. AI-assisted contributions are welcome under the same review and testing standards as other changes; ARVIO itself has been developed with significant AI assistance.
Thank you to all contributors, testers, translators and community members. Individual release credits are preserved in the changelog and release notes.
This product uses the TMDB API but is not endorsed or certified by TMDB. Other integrated services, trademarks, SDKs and artwork belong to their respective owners; compatibility does not imply endorsement.
The optional Kaptain collection import example retains credit to Kaptain / ImKaptain, Kaptain Collection and nuvio-art. See collection credits and reuse notes. ARVIO's built-in collection queries are maintained separately.
- Privacy and cloud data: Privacy policy. Cloud account and synced-data deletion is available at auth.arvio.tv/delete.
- Content and copyright: ARVIO does not host, sell or distribute movies, series, channels or streams. Metadata and artwork do not grant viewing rights or permission to reuse an image. Use sources you are authorized to access. Report concerns about ARVIO-controlled material or links through COPYRIGHT.md; independently hosted material may also need reporting to its provider.
- License: Apache License 2.0 for this project. Third-party components and assets retain their own terms.



