A modern Apple TV media player for browsing catalogs and playing user-configured sources.
SwiftUI tvOS shell - catalog browsing - AetherEngine / MPVKit playback
Download the latest Apple TV .ipa from Releases, then sideload it with Xcode, Apple Configurator, or your preferred tool. See the release notes for known issues.
AltStore / SideStore / Feather Source: Add
https://raw.githubusercontent.com/bobsupra/NuvioTVOS/main/apps.json· Add to AltStore · Add to SideStore
New beta alerts: Manage notifications → choose Custom → Releases.
Beta 3.4.2 is the latest tvOS release.
Quick download (.ipa) · Read the release notes · Report a bug or suggest an idea
🎉 Thank you for 200+ GitHub Stars! A huge thank you to everyone in the community for supporting NuvioTVOS and helping us reach 200+ stars!
The IPA requires a compatible tvOS development or sideloading signing workflow before installation.
HomeCatalogPayloadStore, and disarmed debug watchdogs for silky smooth 60fps Home scrolling.Nuvio ships with AetherEngine — a free, built-in player with native tvOS controls, subtitle support, resume, audio delay adjustment, and frame-rate matching. MPVKit stays as a fallback for edge cases AetherEngine doesn't cover yet (including audio amplification, separate video/audio streams, and full ASS typesetting).
| Feature | AetherEngine (Nuvio) | Infuse |
|---|---|---|
| Price | ✅ 100% Free & built-in | ❌ Subscription / paid Pro unlock |
| Open source | ✅ Open source (ships with Nuvio) | ❌ Proprietary / closed source |
| Native tvOS controls | ✅ Siri Remote, swipe seek | ✅ Yes |
| Resume & watch progress | ✅ Precise resume | ✅ Yes |
| Text subtitles (SRT/VTT) | ✅ Styled, embedded & external | ✅ Yes |
| PGS bitmap subtitles | ✅ Yes | ✅ Yes |
| ASS/SSA subtitles | ⚠️ Styled (no typesetting) | ✅ Full typesetting |
| Audio & subtitle selection | ✅ Saved per item | ✅ Yes |
| Frame-rate & dynamic range matching | ✅ Automatic | ✅ Automatic |
| HDR10, HDR10+ & HLG | ✅ Native support | ✅ Supported |
| Dolby Vision (P5/P8) | ✅ Built-in | 🔒 Requires paid Infuse Pro |
| Dolby Atmos | ✅ Built-in passthrough (EAC3+JOC) | 🔒 Requires paid Infuse Pro |
| High-end audio codecs (DTS-HD, TrueHD) | ✅ Included free (stream-copy / EAC3 bridge) | 🔒 Requires paid Infuse Pro |
| In-player audio delay (lip-sync) | ✅ Live ±ms offset stepper | ❌ No in-player delay (system/AVR only) |
| Audio amplification (boost) | ⚠️ MPVKit fallback | ✅ Built-in volume boost |
| Custom HTTP headers (Referer/User-Agent) | ✅ Built-in relay & custom headers | ❌ Standard URLs only |
| Trakt & Simkl scrobbling | ✅ Built-in (custom API apps) | 🔌 Trakt only (Simkl not supported) |
| Separate video+audio URLs | ⚠️ MPVKit fallback | ❌ Not supported |
Nuvio supports Trakt device login with user-provided API credentials. This is useful when you want to use your own Trakt application instead of relying on shared app credentials.
urn:ietf:wg:oauth:2.0:oob.trakt.tv/activate, and approve the connection.The Client ID and Client Secret are stored only on that Apple TV; they are deliberately excluded from Nuvio account/profile sync. Changing either credential disconnects the old Trakt session so it cannot be reused with a different application.
Nuvio supports Simkl TV PIN login with a user-provided Client ID.
urn:ietf:wg:oauth:2.0:oob as the redirect URI when configuring the application.simkl.com/pin.Simkl's PIN flow does not need a Client Secret. The Client ID stays on that Apple TV and is excluded from Nuvio sync; the access token is stored in the current profile's Keychain.
This repository started as a fork of the Nuvio mobile app. The focus of this fork is now the tvOS version: a native SwiftUI Apple TV app under tvosApp with Apple TV navigation, focus handling, profile selection, catalog browsing, details screens, search, library/watchlist surfaces, and playback controls designed for the Siri Remote.
The original shared mobile code is still present in composeApp, with the inherited iOS app under iosApp. The active tvOS development surface is tvosApp/NuvioTV.
Contributions are welcome. See CONTRIBUTING.md for contribution rules, testing notes, and issue-reporting guidance.
mise install picks up the pinned version from mise.toml.The Xcode project is generated by Tuist and is not tracked in git. Edit tvosApp/Project.swift rather than the .xcodeproj, then re-run tuist generate. Source files are picked up by glob, so adding a file needs no project edit at all.
The app targets Apple TV (SDKROOT = appletvos) with bundle id com.pyksel.nuviotvos and a tvOS 17.5 deployment target, all declared in Project.swift.
git clone --recurse-submodules <your-fork-url> NuvioTVOS
cd NuvioTVOS
Note: If you already cloned without
--recurse-submodules, initialize the submodules before generating the project:git submodule update --init --recursive
Install the pinned toolchain and generate the Xcode project:
mise install
cd tvosApp
tuist generate
tuist generate opens the workspace in Xcode. Use --no-open to only write it.
Use the NuvioTV scheme and an Apple TV simulator.
The helper script builds the native tvOS app, installs it on the first booted Apple TV simulator, and launches it:
./scripts/run-mobile.sh tvos s
If no Apple TV simulator is booted, open Simulator or Xcode first and start one, then rerun the command.
You can also build directly with Xcode:
(cd tvosApp && tuist generate --no-open)
xcodebuild \
-workspace tvosApp/NuvioTV.xcworkspace \
-scheme NuvioTV \
-configuration Debug \
-destination 'generic/platform=tvOS Simulator' \
build
Account login is optional during development. The login screen supports "Continue without account" so the tvOS UI can be tested without backend credentials.
To enable QR login and email auth, fill in the Supabase values in:
tvosApp/NuvioTV/Sources/Core/Auth/AuthConfig.swift
Catalogs and metadata use configurable catalog, playback, and subtitle endpoints from CatalogRepository.swift.
Unit tests live in tvosApp/NuvioTVTests.
tvosApp/NuvioTVUITests contains UI test sources that no target currently builds; see docs/tuist-migration.md.
Run tests from Xcode, or with:
xcodebuild test \
-workspace tvosApp/NuvioTV.xcworkspace \
-scheme NuvioTV \
-destination 'platform=tvOS Simulator,name=Apple TV'
Some older verification scripts in tvosApp/ still carry inherited iOS wording. Prefer the Xcode build/test commands above as the source of truth for the tvOS target.
tvosApp/NuvioTV/ contains the native SwiftUI tvOS app.tvosApp/NuvioTV/Sources/UI/ contains the Apple TV screens and reusable components.tvosApp/NuvioTV/Sources/ViewModels/ contains the Swift view models for tvOS flows.tvosApp/NuvioTV/Sources/Data/Repository/ contains catalog, metadata, source, and subtitle fetching.tvosApp/NuvioTV/Sources/Core/Auth/ contains Supabase email and TV QR-login support.MPVKit/ is the local Swift Package used for playback.composeApp/ and iosApp/ are inherited from the mobile fork and remain useful references while tvOS functionality is ported.Nuvio functions solely as a client-side interface for browsing metadata and playing media provided by user-configured sources. It is intended for content the user owns or is otherwise authorized to access.
Nuvio is not affiliated with any third-party extensions, catalogs, sources, or content providers. It does not host, store, or distribute any media content.
For comprehensive legal information, including the full disclaimer, third-party extension policy, and DMCA/Copyright information, visit the Legal & Disclaimer Page.
389 followers · starred Sep 2026
A modern Apple TV media player for browsing catalogs and playing user-configured sources.
SwiftUI tvOS shell - catalog browsing - AetherEngine / MPVKit playback
Download the latest Apple TV .ipa from Releases, then sideload it with Xcode, Apple Configurator, or your preferred tool. See the release notes for known issues.
AltStore / SideStore / Feather Source: Add
https://raw.githubusercontent.com/bobsupra/NuvioTVOS/main/apps.json· Add to AltStore · Add to SideStore
New beta alerts: Manage notifications → choose Custom → Releases.
Beta 3.4.2 is the latest tvOS release.
Quick download (.ipa) · Read the release notes · Report a bug or suggest an idea
🎉 Thank you for 200+ GitHub Stars! A huge thank you to everyone in the community for supporting NuvioTVOS and helping us reach 200+ stars!
The IPA requires a compatible tvOS development or sideloading signing workflow before installation.
HomeCatalogPayloadStore, and disarmed debug watchdogs for silky smooth 60fps Home scrolling.Nuvio ships with AetherEngine — a free, built-in player with native tvOS controls, subtitle support, resume, audio delay adjustment, and frame-rate matching. MPVKit stays as a fallback for edge cases AetherEngine doesn't cover yet (including audio amplification, separate video/audio streams, and full ASS typesetting).
| Feature | AetherEngine (Nuvio) | Infuse |
|---|---|---|
| Price | ✅ 100% Free & built-in | ❌ Subscription / paid Pro unlock |
| Open source | ✅ Open source (ships with Nuvio) | ❌ Proprietary / closed source |
| Native tvOS controls | ✅ Siri Remote, swipe seek | ✅ Yes |
| Resume & watch progress | ✅ Precise resume | ✅ Yes |
| Text subtitles (SRT/VTT) | ✅ Styled, embedded & external | ✅ Yes |
| PGS bitmap subtitles | ✅ Yes | ✅ Yes |
| ASS/SSA subtitles | ⚠️ Styled (no typesetting) | ✅ Full typesetting |
| Audio & subtitle selection | ✅ Saved per item | ✅ Yes |
| Frame-rate & dynamic range matching | ✅ Automatic | ✅ Automatic |
| HDR10, HDR10+ & HLG | ✅ Native support | ✅ Supported |
| Dolby Vision (P5/P8) | ✅ Built-in | 🔒 Requires paid Infuse Pro |
| Dolby Atmos | ✅ Built-in passthrough (EAC3+JOC) | 🔒 Requires paid Infuse Pro |
| High-end audio codecs (DTS-HD, TrueHD) | ✅ Included free (stream-copy / EAC3 bridge) | 🔒 Requires paid Infuse Pro |
| In-player audio delay (lip-sync) | ✅ Live ±ms offset stepper | ❌ No in-player delay (system/AVR only) |
| Audio amplification (boost) | ⚠️ MPVKit fallback | ✅ Built-in volume boost |
| Custom HTTP headers (Referer/User-Agent) | ✅ Built-in relay & custom headers | ❌ Standard URLs only |
| Trakt & Simkl scrobbling | ✅ Built-in (custom API apps) | 🔌 Trakt only (Simkl not supported) |
| Separate video+audio URLs | ⚠️ MPVKit fallback | ❌ Not supported |
Nuvio supports Trakt device login with user-provided API credentials. This is useful when you want to use your own Trakt application instead of relying on shared app credentials.
urn:ietf:wg:oauth:2.0:oob.trakt.tv/activate, and approve the connection.The Client ID and Client Secret are stored only on that Apple TV; they are deliberately excluded from Nuvio account/profile sync. Changing either credential disconnects the old Trakt session so it cannot be reused with a different application.
Nuvio supports Simkl TV PIN login with a user-provided Client ID.
urn:ietf:wg:oauth:2.0:oob as the redirect URI when configuring the application.simkl.com/pin.Simkl's PIN flow does not need a Client Secret. The Client ID stays on that Apple TV and is excluded from Nuvio sync; the access token is stored in the current profile's Keychain.
This repository started as a fork of the Nuvio mobile app. The focus of this fork is now the tvOS version: a native SwiftUI Apple TV app under tvosApp with Apple TV navigation, focus handling, profile selection, catalog browsing, details screens, search, library/watchlist surfaces, and playback controls designed for the Siri Remote.
The original shared mobile code is still present in composeApp, with the inherited iOS app under iosApp. The active tvOS development surface is tvosApp/NuvioTV.
Contributions are welcome. See CONTRIBUTING.md for contribution rules, testing notes, and issue-reporting guidance.
mise install picks up the pinned version from mise.toml.The Xcode project is generated by Tuist and is not tracked in git. Edit tvosApp/Project.swift rather than the .xcodeproj, then re-run tuist generate. Source files are picked up by glob, so adding a file needs no project edit at all.
The app targets Apple TV (SDKROOT = appletvos) with bundle id com.pyksel.nuviotvos and a tvOS 17.5 deployment target, all declared in Project.swift.
git clone --recurse-submodules <your-fork-url> NuvioTVOS
cd NuvioTVOS
Note: If you already cloned without
--recurse-submodules, initialize the submodules before generating the project:git submodule update --init --recursive
Install the pinned toolchain and generate the Xcode project:
mise install
cd tvosApp
tuist generate
tuist generate opens the workspace in Xcode. Use --no-open to only write it.
Use the NuvioTV scheme and an Apple TV simulator.
The helper script builds the native tvOS app, installs it on the first booted Apple TV simulator, and launches it:
./scripts/run-mobile.sh tvos s
If no Apple TV simulator is booted, open Simulator or Xcode first and start one, then rerun the command.
You can also build directly with Xcode:
(cd tvosApp && tuist generate --no-open)
xcodebuild \
-workspace tvosApp/NuvioTV.xcworkspace \
-scheme NuvioTV \
-configuration Debug \
-destination 'generic/platform=tvOS Simulator' \
build
Account login is optional during development. The login screen supports "Continue without account" so the tvOS UI can be tested without backend credentials.
To enable QR login and email auth, fill in the Supabase values in:
tvosApp/NuvioTV/Sources/Core/Auth/AuthConfig.swift
Catalogs and metadata use configurable catalog, playback, and subtitle endpoints from CatalogRepository.swift.
Unit tests live in tvosApp/NuvioTVTests.
tvosApp/NuvioTVUITests contains UI test sources that no target currently builds; see docs/tuist-migration.md.
Run tests from Xcode, or with:
xcodebuild test \
-workspace tvosApp/NuvioTV.xcworkspace \
-scheme NuvioTV \
-destination 'platform=tvOS Simulator,name=Apple TV'
Some older verification scripts in tvosApp/ still carry inherited iOS wording. Prefer the Xcode build/test commands above as the source of truth for the tvOS target.
tvosApp/NuvioTV/ contains the native SwiftUI tvOS app.tvosApp/NuvioTV/Sources/UI/ contains the Apple TV screens and reusable components.tvosApp/NuvioTV/Sources/ViewModels/ contains the Swift view models for tvOS flows.tvosApp/NuvioTV/Sources/Data/Repository/ contains catalog, metadata, source, and subtitle fetching.tvosApp/NuvioTV/Sources/Core/Auth/ contains Supabase email and TV QR-login support.MPVKit/ is the local Swift Package used for playback.composeApp/ and iosApp/ are inherited from the mobile fork and remain useful references while tvOS functionality is ported.Nuvio functions solely as a client-side interface for browsing metadata and playing media provided by user-configured sources. It is intended for content the user owns or is otherwise authorized to access.
Nuvio is not affiliated with any third-party extensions, catalogs, sources, or content providers. It does not host, store, or distribute any media content.
For comprehensive legal information, including the full disclaimer, third-party extension policy, and DMCA/Copyright information, visit the Legal & Disclaimer Page.
389 followers · starred Sep 2026