Skip to content

AIOStreams with Jellyfin apps

Yes, you can. The piece that does it is JellyStreams, an ElfHosted app that serves your AIOStreams library over the Jellyfin protocol. Point Odin, Infuse, Swiftfin, Strand or the official Jellyfin apps at it, sign in, and your addon results show up as a browsable library with posters, search, episode lists and resume.

JellyStreams is not sold separately. It comes with the AIOMagic Bundle (18/mo)* or the **[Stremio Addons Bundle](https://store.elfhosted.com/product/stremio-addons-bundle/)** *(29/mo, the everything tier). We build it, and it runs here or nowhere.

The bundle is the rest of what a full setup needs, on one subscription:

Piece What it does
AIOStreams Combines, filters and ranks results from your sources into one list
Bundled debrid account Cached streams, included
Bundled Usenet account The things torrents miss, included
Debridge Routes across debrid and Usenet, falling back between them
AIOMetadata Real catalogs, metadata and the certification data kids' profiles need
PostersPlus Ratings, award sashes and quality badges on your artwork
JellyStreams Ties it into any Jellyfin app, and adds the household layer

Get your $1, 7-day free trial!

Doesn't AIOStreams do this itself?

It does now, in a simpler form. AIOStreams' own Jellyfin mode is off by default on your instance and switched on with one variable. It serves several users from one configuration, each with its own watch history, an optional PIN and, if you add a tracker addon per account, their own tracker account.

What it does not do is anything that needs to know who is a parent and who is a child: per-person content limits, screen time, or a request to a parent. That household layer is what JellyStreams adds.

Why not use AIOStreams' own mode, or a fork?

Three options get raised whenever this comes up, so here they are honestly.

AIOStreams' own Jellyfin mode is here now, off by default and one variable away. It does users, each with its own watch history, an optional PIN and their own tracker account. What it has no way to do is treat a parent differently from a child: no per-person content limits, no screen time, no request when something is blocked. If you are one person, or a household where everybody can see everything, it is enough. If there are children involved, it will not get you the controls.

The community projects are good, and worth your time if you like being close to the code. What you take on alongside them is a server you now own: a cloud VM, Docker, a firewall rule, certificate renewal, and updates.

Remux is a full media server, with several addons at once, music, and libraries built from filter rules. If you like shaping your libraries, it is the better tool and we sell it for exactly that. Polyfin is another, with an account and limits per person.

JellyStreams arrives configured alongside the addon, the metadata layer and the provider accounts it works with, and it holds the household layer: profiles, kids' libraries, content limits a child can ask a parent to lift, screen time and push notifications. Those last two exist because it is a server that knows exactly which AIOStreams and AIOMetadata it is talking to, which is the advantage of shipping the pieces together rather than assembling them.

What problem does this solve?

Stremio doesn't ship for every device. The big one is Apple: no App Store build for tvOS or iOS, so the official route is an IPA you sideload yourself, which wants a Mac, a signing certificate, and a reinstall when the signature lapses. Roku has no app at all and no plans for one. Smart TVs are better served than they used to be (Samsung Tizen 2019+, LG webOS 2020+), but sets below those cutoffs are out, and the LG listing is not carried everywhere. The browser build is limited by what the browser will decode.

Jellyfin clients cover all of those cases, and every one of them installs from its platform's own store. JellyStreams sits in the middle: it speaks Jellyfin to the client and resolves streams through AIOStreams, so a device that has never heard of Stremio can play what your addons find.

Which apps work with it?

Built and tested against:

  • Infuse (Apple TV, iOS, iPadOS, macOS)
  • Swiftfin (Apple TV, iOS)
  • Odin, Strand and Moonfin
  • The official Jellyfin apps (Android, Android TV, Fire TV, web)

Other Jellyfin clients generally work, since this is the native Jellyfin protocol rather than a bespoke scheme. Not every client in the wild has been tested, so if you find one that misbehaves, tell us in #elf-aiostreams and we'll look at it.

Plaintext login required

A handful of older clients still send the legacy hashed-password login that Jellyfin deprecated. That hash cannot be verified against AIOStreams, so those clients are refused with a clear message rather than a mysterious failure. Use a current build of your client.

Which app should I use it with?

There are two shapes of app that can play an AIOStreams library, and it is worth knowing which you are looking at, because the setup differs.

Jellyfin clients, pointed at JellyStreams

These speak the Jellyfin protocol. You add JellyStreams as a server, sign in, and everything after that is ordinary Jellyfin behaviour. This is the route that gets you profiles, kids' libraries, screen time and notices, and it works on every platform Jellyfin reaches.

We tune JellyStreams per client

Jellyfin clients disagree with each other constantly. One wants an item's sources returned before it asks for them; one builds its version picker from a field another ignores; one needs external-id lookups answered before it can find anything at all; one is built on a different SDK that expects fields the others do not send. We chase those down against real devices, which is why the fixes end up named after the client that needed them.

Odin, Strand, Swiftfin, Moonfin and the official Jellyfin Android TV app are the clients we specifically tune against, alongside Infuse. It is unglamorous work, and it is the difference between a library that loads and a library that behaves on your particular TV.

App Platforms Cost Why you'd pick it
Infuse Apple TV, iPhone, iPad, Mac Free tier, paid Pro The most polished playback engine on Apple hardware, and excellent with high-bitrate and HDR releases
Swiftfin Apple TV, iPhone, iPad Free Jellyfin's own Apple client, open source, VLC-backed playback
Odin Apple TV, iPhone, iPad, Mac Free, TestFlight beta Strict direct play, per-device profiles, Continue Watching in the Apple TV Top Shelf
Strand Apple platforms Free, TestFlight beta A newer Apple client, currently in open beta
Moonfin Android, Android TV, Fire TV, Tizen, webOS Free Native builds per platform rather than a web wrapper, so it covers the smart TVs
JellyTV Apple TV, iPhone, iPad, Mac Paid One polished app across every Apple device
Official Jellyfin apps Android, Android TV, Fire TV, web, Roku Free The baseline, and the way onto Roku

AIOStreams with Infuse and AIOStreams with Swiftfin are the two most common pairings, because Apple TV is where Stremio has no App Store app of its own. Both connect the same way: add the server, sign in, browse.

Infuse and the version picker

Infuse builds its version list from what the server advertises for an item, so a film's page offers every release your addons resolved and you pick the one you want. That is the same picker you would use in Stremio, rendered as Infuse's own.

Stremio addon clients, pointed at AIOStreams directly

These speak the Stremio addon API instead, so they take your AIOStreams manifest URL and need no Jellyfin server at all. If one of these covers your devices, you do not need JellyStreams for playback.

App Platforms Cost Notes
Omni Apple TV, iPhone, iPad $6 one-time, App Store Catalogs, streams, subtitles and metadata from the Stremio addon API, with per-user preferences and watch history synced over iCloud. Not every addon is compatible
Nuvio, Chillio Various Free Alternative Stremio-compatible front ends

When would you still want JellyStreams? Three things these cannot give you, because they are addon clients and the Stremio addon protocol has no concept of a user:

  • A household across every platform, not just Apple. Omni's profiles are per Apple TV user over iCloud; JellyStreams profiles are server-side, so the same person gets the same watch state on an Android TV, a browser or a phone.
  • Kids' libraries filtered by certification, and daily screen-time caps, which need a server that can refuse a play.
  • Playback notices, for the same reason.

If you are one person on Apple hardware, an addon client is a perfectly good answer and cheaper. If there is a family involved, or screens that are not Apple, that is what JellyStreams is for.

Odin, and what we know about it

Odin is the Apple player people keep asking about, so here is an accurate account rather than a guess.

It is built by Orbital Builds, native for iPhone, iPad, Apple TV and Mac, and free in TestFlight beta. It is a purist playback app:

  • Direct play only. "Video and audio go straight through Apple's playback pipeline. Nothing re-encoded, nothing downmixed, nothing dropped." The same philosophy JellyStreams and Remux take, for the same reason.
  • Continue Watching across devices, surfaced in the Apple TV Top Shelf.
  • Profiles, with separate history, watchlist and Continue Watching per person, and an optional PIN.
  • Subtitles embedded or external, translated on the fly, with timing offsets remembered per file.
  • Private by default: no account, no analytics, and server details kept in the device Keychain.

Does it work with JellyStreams? Yes, and it is one of the clients we tune JellyStreams against, so it is a tested pairing rather than a hopeful one. Add JellyStreams as a server, sign in with your AIOStreams config credentials, and your library is there.

Its own site names no server type, which is why you will see Odin described elsewhere as an unknown quantity. It takes a Jellyfin server, and this is one.

One distinction worth holding onto. Odin's own profiles live on the device, which is the right design for a player: it is your phone deciding whose history to show. JellyStreams profiles live on the server, which is what lets the same person resume on an Android TV or in a browser, and what lets a screen-time cap actually refuse a play. The two are complementary rather than competing: signed in to JellyStreams, Odin gets the server-side history, so what you watch in Odin on the sofa is waiting for you in another app on the train.

Questions about Odin with JellyStreams go to #elf-aiostreams.

How does it work?

flowchart LR
    Client["Jellyfin app<br/>(Infuse / Swiftfin / Strand / official)"]
    JS["JellyStreams"]
    AIO["AIOStreams"]
    META["Metadata and catalogs<br/>(AIOMetadata, Cinemeta)"]
    SRC["Your configured addons<br/>and providers"]

    Client -->|"[1] Jellyfin API"| JS
    JS -->|"[2] catalogs, posters, episodes"| META
    JS -->|"[3] resolve streams"| AIO
    AIO --> SRC
    JS -->|"[4] redirect to the stream"| Client
    SRC -->|"[5] bytes, direct to your device"| Client
  1. Your Jellyfin app connects to your JellyStreams URL and signs in. Credentials are checked against AIOStreams itself, so there is no second password store.
  2. Browsing comes from your metadata layer, so the library is populated on day one whether or not you have catalog addons enabled. Catalogs your AIOStreams config exposes appear alongside it.
  3. Pressing play resolves that title through your normal AIOStreams pipeline, honouring your filters, sort order, providers and proxy settings.
  4. Your player is handed a redirect rather than having bytes proxied through us.
  5. The stream flows straight from its source to your device.

Nothing is downloaded, nothing is imported, and there is no library scan to wait for.

What do I get beyond plain playback?

Full detail on the JellyStreams app page. The short list:

  • Profiles, one per person, each a real Jellyfin user with its own watch history
  • One watch history across every app. Start a film on your phone in Infuse, pick it up on the TV in Swiftfin that evening, and land in the same place. Progress is kept on the server against your profile rather than inside whichever app you opened, so changing app, device or platform never loses it
  • Kids' libraries filtered by certification, through AIOMetadata
  • Daily screen-time caps per profile, with a warning before they land
  • Push notifications when somebody starts watching, delivered through Sam
  • Device enrollment, so people tap their own profile instead of typing a password
  • Search, resume, a version picker, skip intro, and real codec and audio-language data so your client picks the right track

Do I have to set up a server myself?

No. The pattern going round at the moment is to rent or claim a free cloud VM, install Docker, run an addon server on it, and point your apps at that. It works well, and it is a good weekend if you enjoy that sort of thing. What you take on alongside it is a machine you now own: SSH keys, firewall rules, port forwarding, container updates, and a free tier that may reclaim an idle instance.

Here, the server already exists, with a hostname, a TLS certificate and updates handled.

The same reasoning applies to running the addon itself, covered in self-host AIOStreams on a VPS or Oracle Free Tier vs ElfHosted.

Does every device share the same setup?

Yes, and this is the real benefit once you have more than one screen. Your addons, filters, providers and sort order are configured once, in AIOStreams. Every Jellyfin app you sign in on gets that same configuration, and watch state is kept on the server against your profile rather than in the app, so you can start something on the Apple TV in one app and pick it up on your phone in a different one.

What are the limits?

  • No transcoding. Streams go direct to your player, so your device must decode the format natively. Native TV and mobile apps handle nearly everything; browsers need AVC/H.264.
  • No local files, no WebDAV, no music. This serves your AIOStreams library and nothing else. A library of your own files beside your addons is a Jellyfin job.
  • Not a general-purpose Jellyfin server. No plugins, no library of your own files.
  • A few stream types are hidden, specifically those that need custom request headers to play. A client following a redirect can't send them, so those sources are excluded rather than offered as a choice that always fails.
  • Multi-file library entries appear as folders, so a single-file entry costs one extra tap to open.

How do I set it up?

Full setup guide

The step-by-step setup is available to logged-in customers. Sign in to continue →

Frequently asked questions

Can I use AIOStreams with Jellyfin? Yes, through JellyStreams, which serves your AIOStreams library over the Jellyfin protocol. It is included with the AIOMagic Bundle.

Does AIOStreams support Jellyfin natively? Yes, now, in a simpler form: off by default on your instance and switched on with one variable. It serves several users with their own watch history; it does not do per-person content limits, screen time or requests to a parent.

Do I need to run a Jellyfin server? No. JellyStreams answers the Jellyfin API itself, so you add it as a server in your client and sign in.

What do I use as the username and password? Your AIOStreams config UUID is the username, and your config password is the password. Quick Connect works too, which is easier on a TV.

Can each person in the house have their own profile? Yes. Each profile is a real Jellyfin user with its own watch history, and kids' profiles can be filtered by certification.

Does AIOStreams work with Infuse? Yes. Add JellyStreams as a Jellyfin server in Infuse and your AIOStreams library appears, with the version picker for choosing a release.

Does AIOStreams work with Swiftfin? Yes, the same way, and Swiftfin is free on the App Store for both Apple TV and iPhone.

What about Odin, Strand and Moonfin? All work. Odin and Strand are free TestFlight betas on Apple platforms; Moonfin is the one to reach for on Samsung Tizen, LG webOS, Android TV and Fire TV.

Does AIOStreams work with Omni? Yes, but differently: Omni is a Stremio addon client, so you give it your AIOStreams manifest URL rather than a Jellyfin server address. It is Apple-only and a one-off $6 on the App Store. What it cannot do is the household layer, since the addon protocol has no concept of a user.

Does Odin work with AIOStreams? Yes, through JellyStreams. Odin is a native player for iPhone, iPad, Apple TV and Mac from Orbital Builds, free in TestFlight beta, and one of the clients we specifically tune JellyStreams against.

Is Odin a Jellyfin client? Yes. Its own site describes pointing it at "your server" without naming a type, but it takes a Jellyfin server, and JellyStreams is a tested one.

Will it play on Apple TV? Yes, through Infuse or Swiftfin from the App Store, with no sideloading. See Stremio on Apple TV.

How does this compare to the other options?

Side by side, in Stremio addons in Jellyfin.

The one-line version: JellyStreams serves your AIOStreams library to a household, Remux adds several addons and rule-built libraries, Polyfin gives each person an account with its own limits, and Gelato inside Jellyfin gives you a real Jellyfin server (with transcoding on a Hobbit tier or above).

What users say..

We're rocking some excellent ⭐⭐⭐⭐⭐ TrustPilot Reviews, and here's what some of our usersfriends say..

I am new here, but today I learned realized that Elfhosted is one of the best free and open source software communities I've seen, and FOSS communities have been at the center of my life since the 90s (Perl, PHP, Symfony, Drupal, Ethereum, etc.). Great open software built by great people who care = great community, and that is something special.

You've done an amazing job @Funky Penguelf with the platform you provide and this place has an awesome mix of active community caretakers and software creators that I've seen here so far like BSM, Spoked, LayeZee and other elf vengers. Keep up the energy, productivity and community and take time to enjoy it and appreciate each other!

⭐⭐⭐⭐⭐ @skwah (Discord)

As a happy Elfhosted customer—who also self hosts MANY things across about 10 severs (dedicated, VPSes, and VMs running on Synology), I wouldn’t switch to self hosting the services I get from Elfhosted. They just work with very little effort configuring things, and the support the owner and his team provides is second to none. Plus I love being part of a fledgling—but quickly growing—enterprise.

⭐⭐⭐⭐⭐ /u/jatguy. (Reddit)

I’ve been using this service for a while now, and honestly, it’s a game-changer compared to anything else I’ve tried for managing my media library. The support is fantastic—super quick, and if the staff aren’t around (which rarely happens), the community steps up right away. I can’t imagine going back to any other platform.

Before this, I had my own setup with a NUC, NAS, and tools like Sonarr and Radarr. It worked pretty well for a while, and my internet speed was high enough to stream without any buffering. But in the end, it wasn’t worth the time or headache of managing all the storage and keeping everything running smoothly.

Now, with this service, everything runs smoothly in 1080p+ with no buffering issues. The interface is really easy to use, which makes managing everything a breeze. Plus, having a whole community of smart people available for guidance is a huge bonus.

I was sold from the start, which is why I quickly upgraded from a 1-month to a 3-month subscription, and I’m planning to switch to a 1-year plan soon. This service totally pays for itself, and I’m sure you won’t be disappointed. It’s been really impressive.

⭐⭐⭐⭐⭐ @seapound (Discord)

Best possible options for anyone looking for the do-it-all option along with the best customer service ive experienced in this space so far. Id rate it a 6 if I could but its limited to 5/5...

⭐⭐⭐⭐⭐ @hashmelters (Discord)

(responding to a discussion re the cost of ElfHosted vs mainstream streaming / self-hosting):

I didn't know that the goal of this project was to compete with large companies running/renting entire DCs. I was under the impression that the goal of this project was to manage the updating of almost selfhosted applications on a shared platform with other users. Basically, be my sysadmin for me.

That being said, paying for services is the 'easy button'. There is a real world cost incurred for the time saved. Time is money. Time is the most valuable currency that exists. Once time is spent, it's forever lost, one cannot retrieve it again (yet). In my mind, there are 3 options for use of time with respect to: mainstream, selfhosting, elfhosted.

  • mainstream - my time is valuable and I don't want curated content and I don't care what content that I have the ability to consume. I only like what's popular.

  • elfhosted - my time is valuable, I want my own curated content without being forced to browse past the same damn entry 500 times just to find out that I can't watch the movie I want because it's not available in my current location or was removed last week from mainstream providers.

  • selfhost - I care about costs and I have nothing but time to waste or I want to learn about the backend of the systems involved. I'll pay for my own VPS/homelab, electricity, manage the OS, manage app updates, figure out how to make the apps talk nice to each other, create my own beautiful frontend.

I know how much my time is worth, does that reddit poster know how much their time is worth? Without knowing what you are worth, you can't make effective capital expenditures with respect to the time it will take to recoup the capital.

I know I don't need elfhosted at all for my use case. I choose to stay with elfhosted because it's my 'easy button'. It's an efficient capital expense for the amount of time it saves me managing my own hardware, apps and saves me electricity costs. I'm also in a situation where I don't have upload bandwidth from my home to serve HD content to myself remotely. If I lived back in a city, I would still be here. My time is worth $$/hr.

⭐⭐⭐⭐⭐ @cobra2 (Discord)

"Just wanted to check in here and let @Darth-Penguini and anyone/everyone else know...WOW. I have been struggling with storage for years, maintenance of Docker containers, upkeep, all of it. Elfhosted is so freeing. It's an amazing service that I hope to be a member of for a long, long time!"

⭐⭐⭐⭐⭐ @Fingers91 (Discord)

"I would recommend ElfHosted to anyone. It has been great so far and made life a lot easier than running my own setups. If you’re in the fence give them a try and help support this great community."

⭐⭐⭐⭐⭐ Zestyclose_Teacher20 (Reddit)

"thanks for the help and must say this is the best host I every had for my server 🙂 10/10 🙂 All other places I have try have I got a lot buff etc. Your host can even give me full power on a 4K Remux on 200GB big movie file . That's damn awesome 😄"

⭐⭐⭐⭐⭐ @tjelite (Discord)

"What an amazing support system these guys have Chris and Layzee i think it was! Both are very patient with me even though I am a newbie at all this. Very thorough and explained everything step by step with me

I couldn’t ask for anything better than the service I have received by these guys! Happy happy client❤️"

⭐⭐⭐⭐⭐ @dead.potahto (Discord)

"Very happy customer. Great service"

⭐⭐⭐⭐⭐ @ronney67 (Discord)

"Very good customer service, frequent updates, and excelent uptime!!!!!"

⭐⭐⭐⭐⭐ @ed.guim (Discord)

"I had my own plex-arrs setup on hetzner for years. Yesterday I deleted everything as elfhosted has gone above and beyond it. And it has a fantastic, active community as well! Very friendly, helpful and like-minded folks always willing to help and improve the system. Top notch!"

⭐⭐⭐⭐⭐ @alon.hearter (Discord)

"Absolutely Amazed with the patience and professionalism of all Elf-Venger Staff including bossman penguin❤️"

⭐⭐⭐⭐⭐ @dead.potahto (Discord)

"@BSM went above and beyond to make sure I had all the one on one support needed with my sub. Thank you for your patience! Elfhosted continues to be Elftastic !!"

⭐⭐⭐⭐⭐ @bfmc1 (Discord)

"really enjoying the service from elfhosted. The setup is really easy from the guides on the website. And the help on the discord channel is really quick."

⭐⭐⭐⭐⭐ @jrhd13 (Discord)

"Support is amazing, and once you find a setup which works best for you it works perfectly, very happy 😊"

⭐⭐⭐⭐⭐ @fiendclub (Discord)

"great fast service, resolved my problem and really friendly"

⭐⭐⭐⭐⭐ @allan.st.minimum (Discord)

"Great service and sorted out a billing issue super quick and easy."

⭐⭐⭐⭐⭐ @scottcall707 (Discord)

"Very friendly support, resolved a problem with my account! I also appreciate the community that has been built around the service!"

⭐⭐⭐⭐⭐ @leo1305 (Discord)

"excellent customer service and very fast replies"

⭐⭐⭐⭐⭐ @yo.hohoho (Discord)

"Loved the simplicity, experience and support"

⭐⭐⭐⭐⭐ @y.adhish (Discord)

"Very friendly help as always, problem solved, one happy elf here!"

⭐⭐⭐⭐⭐ @badfurday0 (Discord)

"Great Helpful and Fast support. Thanks!"

⭐⭐⭐⭐⭐ @.mxrcy (Discord)