Jellyfin
Watch your configuration in Jellyfin apps, with your catalogs as libraries, your streams as versions, and your progress kept across devices.
AIOStreams can present your configuration as a Jellyfin server. You add it to a Jellyfin app like any other server, sign in, and browse and play from there. Nothing is downloaded or stored: when you press play, AIOStreams searches your addons exactly as it does for Stremio.
| In AIOStreams | In a Jellyfin app |
|---|---|
| Your catalogs | Libraries |
| Your metadata addons | Titles, with their details, seasons and episodes |
| The streams found for a title | Versions of that title |
| Your subtitle addons | Subtitle tracks |
| Catalogs of collections | A Collections library |
| What you watch, and your trackers | Continue Watching, Next Up, played marks and favourites |
Before you start
- Add catalog and metadata addons to AIOStreams. A Jellyfin app only sees what your AIOStreams configuration provides, so it needs addons for all three jobs: catalogs to fill the libraries, metadata to describe each title, and streams to play it.
- Save your configuration. A Jellyfin app signs in to a saved configuration.
- Pick an app. Swiftfin, Findroid, Streamyfin, Jellyfin for Android TV, Jellyfin for Kodi and Infuse all work. The Jellyfin web interface is not included: the server address is an API for apps, not a website.
- Check the instance allows it. It is on by default. If the Jellyfin card under Save & Install is greyed out, the instance owner has turned it off.
Streams are played directly, never transcoded. Your app has to be able to play the file as it is, so a device that struggles with a format in other apps will struggle here too. Picking another version usually helps.
Connecting an app
Open the Jellyfin settings
On the configure page, go to Save & Install and open the Jellyfin card. The Connect tab shows everything the app needs.
Add the server
In your app, add a server and paste the Server address. It is your instance's address followed by /jellyfin, for example https://aiostreams.example.com/jellyfin.
Sign in
Enter the Username shown on the Connect tab and your configuration password.
- The username is your configuration UUID, or its alias if you gave it one through a profile. An alias already stands in for the password, so the password field is not checked.
- To sign in as one of your household users, add
/and their name, for example<uuid>/Sam.
On a TV
Typing a UUID with a remote is painful, so use Quick Connect instead. Choose Quick Connect on the app's sign-in screen, then type the six-digit code it shows into the Quick Connect box on the Connect tab. The device waiting on that code appears; press Approve. If you have household users, choose who to sign in as first.
Sign-in picker
The Connect tab also offers an address with a sign-in picker. Added as the server address instead, it makes the app list your configuration and its users on the sign-in screen, with no password to type.
That address contains your configuration password. Only use it on devices in your own household.
Libraries
Each catalog becomes a library, in the order set under Addons → Catalogs. Reorder or disable catalogs there to change what apps show.
- Limits. An instance shows a limited number of libraries per configuration (20 by default) and lists a limited number of titles in each (250 by default). The Connect tab tells you this instance's numbers. Catalogs past the library limit do not appear at all, so move the ones you care about to the top.
- Search. Searching in an app searches your catalogs that support search. Search-only catalogs are not shown as libraries.
- Genres. A catalog with genres gets a genre filter. A catalog that requires a genre opens on its first one.
- Collections. A catalog whose entries are collections, such as a set of streaming services or film series, becomes a Collections library. A collection can hold both movies and shows, and each opens and plays like it does anywhere else.
Changes you save reach connected apps within about 30 seconds. Apps also keep their own copy for a while, so refresh or reopen the app if something still looks old.
Playing
Versions
Opening a movie or an episode searches your addons, just as opening it in Stremio does, and lists the results as versions. Their names come from your formatter. The first version is the one your sorting ranks highest, so pressing play without choosing picks the same stream Stremio would put at the top.
Two settings on the Playback tab control this:
| Setting | What it does |
|---|---|
| Resolve streams when an item opens | On by default. Off, nothing is searched until you press play, which is lighter on your addons, but the version list shows a placeholder until then, with a Load versions entry to fill it. |
| Versions per item | How many streams to offer. The instance sets the maximum (10 by default). Set it to 1 and apps have nothing to choose between. |
A title's versions are reused for a few minutes, so opening it and then playing it searches once.
When nothing plays
- No streams found is shown when your addons returned nothing playable, the same result Stremio would show. It is looked up again after a few minutes.
- Some streams never appear as versions. A stream that needs custom request headers can only be played by a Jellyfin app through a proxy, set up under Proxy on the configure page, so without one it is left out.
- A version will not start. Try another version. Because nothing is transcoded, a file your device cannot decode will not play.
Skipping intros and credits
Unless the instance owner has turned it off, the Playback tab has Skip intro and credits, on by default. Apps then get markers they can show a skip button for, and you can choose which markers to offer: intro, recap and credits. Whether the app skips automatically or asks first is a setting inside the app. The markers come from community databases, so on a differently cut copy of an episode they can be a few seconds out.
Watch history
AIOStreams keeps your progress, played marks and favourites itself, for your configuration and for each household user with its own history. That is what fills Continue Watching and Next Up, and it is the same on every app you sign in to.
Trackers
An addon that supports Watch State can act as a tracker. The Trackers tab lists the ones in your configuration and what each does:
- Records your plays: what you watch in a Jellyfin app is sent to the addon, so a service it connects to (such as a watch-history site) stays up to date.
- Imports your history: what the addon knows you watched elsewhere, including in Stremio, shows up in Continue Watching and Next Up.
- If the addon supports a watchlist, your watchlist and your favourites stay in step.
To stop an addon syncing, untick Watch State in that addon's Resources option and save. The instance owner can turn either direction off for everyone, in which case the tab says so.
Without a tracker, AIOStreams only knows what you played in Jellyfin apps. Something watched in Stremio reaches Continue Watching only through a tracker that imports your history.
Building a tracker addon? See the Watch State reference.
Household users
The Users tab adds users to your server, so everyone in a household can have their own profile in the app. They all sign in with the same configuration password.
- The primary user is your configuration itself. Give it a name (your addon name by default) and an avatar. It is the history your trackers sync with.
- Each extra user has a name, which is also what they type to sign in, and an optional avatar. You can hide a user from the sign-in picker; they can still sign in by name.
- History is either own, a separate Continue Watching, or shared with the primary user. Sharing the history also shares its trackers.
- Variants apply while that user is signed in, in the order picked, so a user can get, for example, a different set of filters or a different tracker addon.
Removing a user keeps their watch history. Adding a user again under the same name gets it back.
App differences
Jellyfin apps each use a different part of the server, so a few things vary:
- Collections. Some apps, such as Plezy and Jellyfin for Kodi, only show the first Collections library. Put the one you use most first in your catalog order. Plezy also shows collections in a library's Collections tab rather than as a library of their own, and draws every collection as a portrait poster, cropping wide artwork.
- Version picker. Every app shows versions differently. Some list them on the item page, some only when you press play, and some only in the player.
For instance owners
The Jellyfin server, skip markers and watch-state sync are on by default. The main settings are under Dashboard → Settings; see environment variables for all of them.
| Variable | Default | What it does |
|---|---|---|
JELLYFIN_ENABLED | true | Turns the Jellyfin server on or off. |
JELLYFIN_MAX_LIBRARIES | 20 | Catalogs shown as libraries per configuration. 0 shows them all. |
JELLYFIN_MAX_CATALOG_ITEMS | 250 | Titles listed per library. |
JELLYFIN_MAX_VERSIONS | 10 | The most versions a configuration can ask for. |
JELLYFIN_RESOLVE_ON_OPEN | user | always or never force resolving on open for everyone; user leaves it to each configuration. |
JELLYFIN_MAX_PERSONAS | 20 | Household users per configuration. 0 allows none. |
JELLYFIN_SEGMENTS_ENABLED | true | Offers skip markers. It sends what is being played to the marker databases. |
WATCH_STATE_REPORT_ENABLED | true | Sends plays to tracker addons. |
WATCH_STATE_PULL_ENABLED | true | Imports history from tracker addons. |
WATCH_STATE_ALLOW_PRIVATE_URLS | false | Lets watch state reach addons on private addresses. Only enable it on an instance you trust the users of. |

