23 guides · synced daily from GitHub
Nuvio Web docs
An unofficial web client for Nuvio. Your profiles, addons, library and watch progress in a browser, with a player that streams, casts, or hands off.
Getting started
Run Nuvio Web, point it at your Nuvio account, and watch something.
Introduction
Nuvio Web is an unofficial web UI for the Nuvio API. Nuvio ships a mobile app and a public API but no browser client, so this is one: sign in with the account you already use on your phone and you get the same profiles, addons, library and watch progress in a tab, plus a player that streams in the browser, casts to a TV, or hands the link off to a native app.
Install
Nuvio Web is distributed as a multi-arch Docker image (orochibraru/nuvio-web) for linux/amd64 and linux/arm64. There is no database to provision, but mount a volume on /app/data: the app keeps signed-in sessions and each profile's library, watch progress and history there, in SQLite, and syncs them with your Nuvio account in the background (Sync). Without it, a restart signs everyone out and drops changes not yet pushed to Nuvio. One container per data directory.
Configuration
There is no configuration file. The container is configured entirely through environment variables, and exactly one of them matters for a normal install.
First run
From a fresh container to a playing episode.
Using Nuvio Web
Every screen, and what it does.
Browsing
Everything you can browse comes from an addon. With no addons installed, the home feed is empty and says so; see Addons.
The player
The source drawer lists every stream the addons returned for this title, with quality, codec, size and release details parsed out of each addon's stream label. Addons publish those as free text in whatever shape they like, so the parser is a best effort — it will not invent a field it could not find.
Downloads and offline
Nuvio Web installs as an app and downloads titles so you can watch them without a connection: on a plane, on a train, or anywhere the Wi-Fi gives up.
Addons
An addon is an HTTP service that publishes a manifest and answers requests for catalogs, metadata, streams and subtitles. Nuvio Web speaks the Stremio addon protocol, which is the same protocol Nuvio uses on mobile.
Library and sync
Library, watch progress and history are kept per profile on your Nuvio account, so they follow you between devices and between the web app and mobile.
Profiles and settings
Profiles are your Nuvio account's profiles, with the same avatars you see on mobile. Picking one is required before the app will show you anything: library, progress, history, addons and settings are all per profile.
Self-hosting
Running an instance for yourself or a household.
The admin page
It is the only part of the app with server-owned state.
Your data and Nuvio
Library, watch progress and history live on this server, in its SQLite database, per Nuvio account and per profile. That copy is the source of truth: every page and the in-browser sync store read and write it, never Nuvio directly. Your Nuvio account is kept as a mirror, so the Nuvio mobile app and other devices still see what you do here, and what you do there shows up here.
Troubleshooting
Almost always ORIGIN.
Architecture
How the app is put together, and why.
Overview
SvelteKit 3 on Svelte 5 runes, Tailwind 4 and shadcn-svelte, running on Bun and compiled to a single binary.
Services and DI
Each is a class taking its collaborators as constructor arguments, registered against a token and resolved from a Container.
The addon pipeline
From "this profile has some addon URLs" to "this page has rows".
The sync store
Components read sync.ready ? sync.X : data.X and write through sync.. No page calls toggleLibrary / saveProgress / deleteHistory directly any more.
Security
Running this on the public internet is on you: put it behind HTTPS and whatever access control you would give any other self-hosted app. What follows is what the app does on its own.
Contributing
Working on Nuvio Web itself.
Development
Installing dependencies runs prek install, which wires three shims: pre-commit runs the fixers and checks, commit-msg enforces Conventional Commits, and pre-push runs the type check and the unit suite. releaser computes the next version from commit subjects, so a malformed one silently costs a release rather than failing loudly.
Testing
Three levels, each with a different job.
The Nuvio API spec
Nuvio publishes its public API as prose markdown, not as a machine-readable document. Two scripts bridge the gap, and a daily CI job watches for drift.