Nuvio Mobile: A Kotlin Multiplatform Media Front End That Brings Its Own Sources
Official Nuvio Mobile Repository
At a glance
- What is it?
- Nuvio Mobile is a GPL-3.0 media app built with Kotlin Multiplatform and Compose Multiplatform for Android, iOS and TV. It organises sources you supply into a library with artwork, ratings, subtitles and saved playback position, and it is distributed as beta builds through Google Play, GitHub releases and an AltStore source.
- Who is it for?
- Nuvio Mobile suits people who already have media sources or addons and want one library with artwork, ratings, subtitles and saved position across phone, desktop and TV, and who accept beta builds. It is not for anyone expecting bundled content, because the README states you bring your own sources.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 3 days ago.
- What is it written in?
- Mainly Kotlin, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 27, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Nuvio Mobile Solves, And Who It Is Actually For
The README opens with the problem in one line: "Bring your own sources. Nuvio turns them into a library with artwork, ratings, subtitles, and your place saved on every screen." That sentence is the product. Nuvio Mobile does not ship a catalogue. It is a client that takes sources you already have and gives them a consistent interface: artwork, ratings, subtitle handling, and a playback position that follows you from one device to the next.
The audience follows from that. It is for people who already maintain media sources or addons and are tired of each one having its own half-finished player. It is also for households that watch on more than one screen, since the promise of a saved place is only worth anything if it is shared between the phone and the TV. Anyone who wants an app that opens onto ready-made content is not the target, and the README does not pretend otherwise.
The distribution choices say something about the intended users too. Android is on Google Play and as a direct APK, iOS goes through AltStore or SideStore rather than the App Store, and the repository keeps a store.json at the root for that purpose. That is a sideloading-first posture, which fits an audience comfortable with addon sources.
Kotlin Multiplatform And The Shared composeApp Module
The repository layout is the clearest description of the architecture. The shared app lives in composeApp/, and the README states it "is built with Kotlin Multiplatform and Compose Multiplatform." Around that shared module sit two platform shells: androidApp/ and iosApp/. The build entry points match, with a Gradle task for Android and an xcodebuild invocation for iOS.
The dependency list at the top level is where the media work happens. MPVKit, libass-android and vendor/ are checked in as submodules, which is what a project does when it needs a specific player and subtitle renderer rather than whatever the platform gives it. libass is the subtitle renderer, and its presence explains why subtitles are named in the README's feature sentence rather than left to the system player. MPVKit is the playback side. Keeping both as submodules means the build pulls pinned revisions instead of relying on a system codec stack.
That architecture is the reason the same feature list can be claimed for a phone, a desktop and a TV. Compose Multiplatform gives one UI layer, Kotlin Multiplatform gives one shared logic layer, and the platform folders do the parts that genuinely differ: packaging, signing, and the OS integration each store requires. The cost is build weight. A first build has to fetch and compile the native player and subtitle components, which is a different experience from a pure Kotlin app.
How To Install Nuvio Mobile And Run A First Build
Most users will not build anything. The README lists three install paths: Android through Google Play under the package id com.nuvio.app, Android as an APK from the latest GitHub release, and iOS through AltStore or SideStore. The iOS route is the one people ask about, because it is not an App Store listing. You add the project's store.json as a source in the AltStore or SideStore Sources section, then install Nuvio from there.
If you want to build it yourself, start by cloning the repository and entering the directory:
git clone https://github.com/NuvioMedia/NuvioMobile.git
cd NuvioMobileThe README notes that Android development requires Android Studio and the Android SDK. The debug build task is:
./gradlew :androidApp:assembleFullDebugThat task name matters. It targets the androidApp module and a variant called FullDebug, so the product flavour is part of the command rather than a default. If you change flavours, the task name changes with it.
iOS builds require macOS and Xcode. The README gives a full simulator build that disables code signing, which is the usual way to check that the shared code compiles without provisioning a device:
env NUVIO_IOS_DISTRIBUTION=full xcodebuild \
-project iosApp/iosApp.xcodeproj \
-scheme iosApp \
-configuration Debug \
-sdk iphonesimulator \
-derivedDataPath build/ios-derived-full-simulator \
CODE_SIGNING_ALLOWED=NO \
buildThe environment variable NUVIO_IOS_DISTRIBUTION=full mirrors the Full flavour on the Android side, and the derived data path keeps simulator output in build/ios-derived-full-simulator rather than the default location. Expect this to take a while on a first run: the submodules for the player and subtitle renderer have to be present and built.
Beta Releases And What The Version Numbers Do Not Tell You
Every release listed for this project carries a -beta suffix: 0.5.1-beta on 2026-09-23, 0.5.0-beta the day before, and 0.4.26-beta two days before that. The cadence is fast, and the patch level moved from 0.4.26 to 0.5.0 to 0.5.1 inside three days. That pattern is consistent with a project still settling its API and its library behaviour rather than one in a long maintenance phase.
The practical consequence is that anything you depend on can move between releases. The README documents install paths and build commands but says nothing about a stable channel, a long-term support branch, or a migration policy between versions. It also does not document rollback. If a beta regresses playback or library behaviour on your device, the README gives you no procedure for going back other than installing an older artifact yourself.
The default branch is worth noting as well. It is cmp-rewrite, not main or master, and the AltStore source URL in the README points at that branch. A rewrite branch as the default means the code you read on GitHub is the code being reshaped, and the release tags sit on top of it.
Where Nuvio Mobile Is The Wrong Tool
The biggest constraint is the one stated first. Nuvio does not provide content. If you do not have sources or addons to point it at, the app has nothing to show you, and no amount of artwork and rating metadata changes that. Anyone evaluating it as a streaming service will be disappointed, and the README never suggests otherwise.
Platform coverage is the second limit. The README lists Android, iOS and "the TV you already own," and the search terms around this project include Android TV APK, which fits the Android side. But the install section names only Google Play, the GitHub APK, and AltStore or SideStore. There is no separate iOS App Store listing, and the README says nothing about tvOS, so an Apple TV owner has no documented path. Likewise, the build instructions cover Android and iOS only.
Third, the iOS situation is not equivalent to the Android one. AltStore and SideStore require a source URL and a sideloading workflow, and the README points at store.json on the cmp-rewrite branch. That is a different support surface from a store listing, and it is the part most likely to break when Apple changes its rules. If you need a frictionless install for non-technical users, this is not it.
How Nuvio Differs From Plex And Similar Servers
The obvious comparison, and one people search for directly, is Plex. The difference is architectural, not cosmetic. Plex is a server plus clients: you run the server, it owns the library, and the clients are thin views onto it. Nuvio Mobile is only the client side of that equation. The repository contains androidApp/, iosApp/ and a shared composeApp/ module, plus native playback components in MPVKit and libass-android. There is no server component in the layout, and the README describes sources rather than a media server.
That changes what you have to run. With Plex you maintain a machine, a library scan and remote access. With Nuvio you maintain sources and addons, and the app is the whole install. It also changes where your data lives, since Nuvio's promise of "your place saved on every screen" has to be delivered across devices without a self-hosted server behind it.
The trade-off runs the other way too. A server-backed system gives you one authoritative library, transcoding decisions and a single place to fix metadata. Nuvio pushes that work to whatever sources you configure, which is more flexible and less predictable. If you want a single machine that owns your collection, a server model fits better. If you want an app that renders sources you already trust, Nuvio's shape is the lighter one.
Licence, Maintenance And Upgrade Cost
Nuvio Mobile is licensed under GPL-3.0, and the LICENSE file sits at the repository root. The README links to it directly. GPL-3.0 is a copyleft licence, so if you distribute a modified build you are working under its terms; the repository does not offer a separate commercial or permissive option. This is a description of the licence text, not legal advice, and anyone redistributing a fork should read the LICENSE file itself rather than rely on a summary.
The submodule layout has a licence dimension as well. MPVKit, libass-android and vendor/ are pulled in as submodules rather than vendored copies under a single licence, so a redistributed build carries whatever those components require. The README does not enumerate them, and the top-level licence statement covers the repository's own code.
On maintenance, the last push was on 2026-09-23 and the most recent release is 0.5.1-beta from the same day, so the project is being worked on now. The upgrade cost is the beta cadence: three releases in three days, no documented rollback, and a default branch named cmp-rewrite. Budget for re-testing playback and library behaviour after each update rather than assuming an upgrade is inert.
Editorial conclusion
Nuvio Mobile suits people who already have media sources or addons and want one library with artwork, ratings, subtitles and saved position across phone, desktop and TV, and who accept beta builds. It is not for anyone expecting bundled content, because the README states you bring your own sources. Before adopting it, check the release page for the current beta tag, confirm your device path in the README (Google Play, the GitHub APK, or the store.json AltStore source), and read the GPL-3.0 LICENSE if you plan to redistribute a modified build.
Frequently asked questions
What is the Nuvio app used for?
Nuvio Mobile turns sources you supply into a library with artwork, ratings and subtitles, and it keeps your playback position across screens. The README describes it as a free, open-source media app for phone, desktop and TV. It does not include content of its own.
Can I use Nuvio on my iPhone?
Yes, but not through the App Store. The README says iOS installs via AltStore or SideStore by adding the project's store.json as a source URL in the app's Sources section. Building it yourself requires macOS and Xcode.
Is Nuvio like Plex?
No. Plex is a server plus clients, while Nuvio Mobile is the client side only: the repository holds androidApp/, iosApp/ and a shared composeApp/ module with no server component. Nuvio organises sources you already have instead of hosting a library.
Can I install Nuvio on my Samsung TV?
The README does not document a Samsung TV or Tizen install path. It lists Google Play, the GitHub APK and AltStore or SideStore for iOS, and describes the app as being for the TV you already own without naming TV platforms beyond that.
How do I use Nuvio Mobile?
You install it on Android, iOS or a TV, then bring your own sources. The README says Nuvio turns those sources into a library with artwork, ratings, subtitles and your saved place on every screen. There is no bundled catalogue to browse.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/nuviomedia-nuviomobile)