Skip to content

JellyStreams

JellyStreams is a Jellyfin server whose library is your AIOStreams configuration. Point Odin, Infuse, Swiftfin, Strand, Moonfin or the official Jellyfin apps at it, sign in, and everything AIOStreams can find is browsable with posters, search, episode lists, resume and skip-intro.

We build it, and it runs on ElfHosted or nowhere: there is no image to pull and no way to run it yourself. It is not sold separately, and comes with either of two bundles:

  • AIOMagic Bundle ($18/mo), the curated stack: AIOStreams, bundled debrid and Usenet accounts, Debridge, AIOMetadata, PostersPlus and JellyStreams
  • Stremio Addons Bundle ($29/mo), the everything tier, which adds the rest of our addon catalogue on top

That is a deliberate difference from the alternatives. Remux and Gelato are open-source projects you could run on your own hardware, and this page will happily point you at them where they fit better. JellyStreams is the one you can only have here.

Get your $1, 7-day free trial!

What is it for?

Two things Stremio itself cannot do, because it has no concept of a person.

Reaching devices Stremio doesn't ship for. Chiefly Apple TV and iOS, where the official route is an IPA you sideload yourself, and Roku, which has no Stremio app at all. Every one of those platforms has a Jellyfin client in its own app store.

Being a household rather than an account. Stremio has no users, so watch state, profiles, kid-safe libraries, content limits, screen time and a person's own tracker account have nowhere to live. JellyStreams is the layer that holds them.

What can it do?

Profiles

A profile is a Jellyfin user, which is what clients already understand: a user picker, a per-user token, per-user watch state. Each profile binds to an AIOStreams configuration and an AIOMetadata install, so what a profile can find is set by what it is bound to.

Watch history follows the person, not the app. Because progress is stored on the server against the profile, you can start a film on your phone in Infuse and pick it up on the TV in Swiftfin later, or on an Android TV in the official app, and land in the same place. This is the part client-side profiles cannot do: an app that keeps profiles on the device keeps your history on that device too.

Your own profile keeps everything it already had. Play state is keyed on your AIOStreams config, so watched, resume and favourites carry over the moment profiles arrive. New profiles start empty.

Kids' libraries that are actually filtered

A kids profile is bound to an age-capped AIOMetadata install. AIOMetadata does the filtering on catalogs and search by certification, including its policy for unrated titles, and it refuses an install filter that would loosen a cap rather than tighten it. JellyStreams writes no rating logic of its own, which means there is one place the rules live and one place they can be got wrong.

Content limits, by what is actually in it

A certificate is a blunt instrument. A 12 might mean a few swear words or it might mean a fight scene, and the parent deciding usually cares about one and not the other. So each profile gets a limit per category, set on its Family tab:

  • Sex and nudity
  • Violence and gore
  • Swearing
  • Alcohol, drugs and smoking
  • Frightening or intense scenes

Each one is None, Mild, Moderate or Any, judged from crowd-sourced parents' guide ratings for the title. That means "fine with action, not with sex" is a setting rather than a wish. Where a title has been graded in the categories you limit, the grades decide, whatever its certificate says. Where it has not, the limit falls back to a certificate age you choose. And for a title nothing is known about at all, you pick what happens: keep it off, or let it through.

Limits are checked at the moment of playing, on the title that is really about to play: an episode of a different show grouped into a series is judged as that show, and a film inside a torrent folder is judged as the film. They apply in every app, because the check is on our side rather than in the player.

The owner is never limited, and a limit never touches anybody else's profile.

When something is blocked, they can ask

A blocked title does not just fail. The screen says it is blocked by the parental settings on this profile, based on its ratings, and that a request has been sent to a parent. Pressing play again does not send another.

The request lands in two places:

  • A push notification on your phone, through Sam: who asked, for what, and why it was blocked. Sent once per title, not once per press of the play button.
  • The profile's Family tab, with the reasons, and for the parent only, a few spoiler-free descriptions of what is in it. You never have to look it up yourself to decide.

Allow and it plays on that profile from then on, whatever the limits say, in every copy and every episode. Dismiss and it stays blocked. Allowed titles are listed on the same tab, each with a Remove that puts the limits back on it. The tab, the profile and its card in the panel all show how many requests are waiting.

A parents' guide on the title page

Every title's page carries a short parents' guide: how each category is graded, with the certificate from the classification boards where there is one. It is there for the grown-ups picking something for the evening, and it is the same data the content limits read.

Tap your own face, no password

Signing in with the account password enrolls that device. After that, a profile with no PIN opens on that device with a tap. Set a PIN on a profile and it is asked for every time, on every device, with no exceptions.

The owner profile is never tappable, because it sees the unfiltered library and reaches the admin panel. That inverts the usual arrangement in a way worth stating: the parent needs a PIN, the child needn't.

A stranger who has guessed your hostname is on a device that was never enrolled, and is shown nothing at all, not even the names of your household.

Friction, not a vault

Device identity is supplied by the client, and a four-digit PIN is a four-digit PIN. What this buys is that an outsider needs your hostname and an enrolled device, while your family needs neither. It is not a cryptographic boundary and we won't pretend otherwise.

Screen time

A daily cap per profile, with a warning on screen five minutes out and a message when it's used up.

It asks the client to stop, and most do

Playback is a redirect, so the video itself never passes through us and we cannot stop sending what we were never sending. What we do instead is ask the app to stop, over the same realtime connection Jellyfin clients already hold open to their server. Apps that hold that connection and honour the command do stop. An app with no connection open never hears it, and one that ignores it keeps playing.

A capped profile also cannot start anything new, and that part needs no cooperation at all, because starting something means asking us.

So this is client cooperation rather than a hard boundary, in the same family as device enrollment: real friction that works for the household it is aimed at, not proof against somebody setting out to defeat it.

The owner is never capped. Locking yourself out of your own library is not a feature.

Playback notices, as push on your phone

Get told when somebody in the household starts or stops something. Notices arrive as push notifications, delivered through Sam, your stack's assistant.

Add Sam to your home screen

Push arrives through Sam, so you need Sam installed as an app. On iPhone and iPad that is not a preference: Apple only permits web push from an app added to the home screen, so a bookmark or an open tab will not receive anything. Open Sam, add it to your home screen, and allow notifications.

Notices are sent under the name JellyStreams, so you can mute them in Sam without silencing everything else your stack sends you.

Opt-in per profile, and your own playback is never announced, because a feed that reports you to yourself is one you stop reading. Repeats are suppressed, so a client that re-sends on every seek doesn't turn one film into six notices.

They are text only. A notice tells you who started what, and there is no poster art in it.

Watch tracking, per profile

Each person links their own Trakt, Simkl, PublicMetaDB, MDBList, AniList or MyAnimeList account, and what they watch is reported to it. Not one account for the household: the link belongs to the profile, so a teenager's history goes to their Trakt and nobody else's, and the owner can disconnect a member's link without ever seeing its token.

If you already have years of history on Trakt, Simkl or PublicMetaDB, you can import it and carry on from where you are.

AniList and MyAnimeList keep count for anime. Finish an episode (or mark it played) and your AniList or MyAnimeList entry moves forward. Anime is numbered differently from TV databases: one show on TVDB can be several AniList entries, one per season, split or sequel. So JellyStreams works out which entry you watched, and which of its episodes, and only writes when it is sure. It never moves your progress backwards, and un-marking an episode here leaves your list alone. Connecting MyAnimeList takes one extra step: after you sign in, MyAnimeList shows you a one-time code to paste back into JellyStreams. Shows AniList numbers straight through rather than by season (Bleach's original run, for example) are tracked for their first season only, for now. Episode matching uses the community-kept Anime-Lists and Fribb anime-lists mappings.

In Stremio itself there are no users, so an addon signed in to a tracker records the whole household's viewing to that one account.

Shelves built from what you actually watched

Because the watch state is per profile, so is what gets suggested.

  • Recommended for you, from that profile's own Trakt recommendations, filtered through the same age cap as the rest of their library.
  • A shelf from what they finished, not from what the household finished.
  • Their linked service's lists on their own home screen.
  • Continue watching, Next Up and a watchlist built from their favourites.
  • Home rows they arrange themselves, hiding and reordering what appears.

Your own collections, drawn as libraries

If you have built a collection layout in AIOMetadata, JellyStreams reads it and draws it: your collections become libraries and your folders become BoxSets, with the artwork you chose.

Without it, a board with two hundred catalogs is two hundred shelves. With it, it is the shape you arranged.

A weekly note about what the house watched

The admin panel shows the household's activity, a day at a time and across every profile. The same summary arrives in your inbox, so you do not have to go looking.

Playback notices are the immediate version of this; the history view is the one you read on a Sunday.

The rest

  • Quick Connect, so you never type a UUID with a TV remote
  • Skip intro, recap and credits on episodes, where crowd-sourced timings exist
  • A password instead of a PIN on a profile, where four digits is not enough
  • Per-profile display preferences, so one person's sort order is not everybody's
  • A version picker, so a client can choose between releases of the same title
  • More than one AIOStreams account on one instance, switchable from the panel
  • Profile pictures, so the user picker on the TV is faces rather than a list of names
  • A quality cap per device, so the phone on mobile data gets the 1080p release and the living room TV gets the 4K one, with a notice when a new device signs in
  • Per-client tuning. Jellyfin clients disagree with each other, so we chase the differences down against real devices. Odin, Strand, Swiftfin, Moonfin and the official Jellyfin Android TV app are the ones we specifically tune against, alongside Infuse
  • An admin panel at /admin on your JellyStreams host, covering library, profiles, devices, household, device sign-in and notifications. It's behind your ElfHosted login; the Jellyfin API deliberately is not, because a Jellyfin client cannot complete a browser login flow.

Get a 7-day trial of ElfHosted JellyStreams! 🪄

JellyStreams guides

How do I access JellyStreams?

JellyStreams is available:

Signed-in users see their own URLs

The addresses above show the general pattern. Sign in and these become your personal, clickable links.

How do I use it?

Full setup guide

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

What can't it do?

  • No transcoding. Streams go direct to your player, so the device must decode the format natively. Native TV and mobile apps handle nearly everything; browsers want AVC/H.264.
  • No local files, no WebDAV, no music. JellyStreams serves your AIOStreams library. Your own files belong in Jellyfin; music beside your addons is Remux's job.
  • It is not a general-purpose Jellyfin server. No plugins, no live TV, no library of your own files.
  • A few stream types are hidden, specifically those needing custom request headers, which a client following a redirect cannot send.
  • You build collections in AIOMetadata, not here. JellyStreams draws the layout you built there; it has no editor of its own.
  • Content limits act when something is played, not when it is listed. A limited profile can still see an over-limit title's poster and description in its shelves; it cannot play it. For a library where those titles never appear at all, bind the profile to an age-capped AIOMetadata install as well, which filters by certificate at the catalogue.

What else comes with it?

JellyStreams ties a stack together, so it ships with the stack. The AIOMagic Bundle is AIOStreams for stream aggregation, a bundled debrid account, a bundled Usenet account, Debridge to route across both with fallback between them, AIOMetadata for catalogs and certification data, PostersPlus for artwork, and JellyStreams to put all of it in a Jellyfin app. One subscription.

How does it compare?

JellyStreams (AIOMagic) Remux Gelato + Jellyfin Hosted shared frontends
Runs as your own instance Yes Yes Yes, your Jellyfin No, shared with everybody
Household profiles Yes Yes Yes Varies
Kids' filtered libraries Yes, via AIOMetadata Yes, a per-user rating cap Jellyfin parental controls No
Limits by what is in a title (violence, sex, swearing...) Yes, per category, per profile No, a certificate cap No, a certificate cap and tags No
A child can ask, a parent allows Yes, push to your phone, Allow in the panel No No No
Screen time Yes, a daily cap No Access schedule, not a daily cap No
Watch tracking per profile Yes, Trakt / Simkl / PublicMetaDB / MDBList / AniList / MyAnimeList Per-user playback state Jellyfin's own No
Import existing watch history Yes, from Trakt / Simkl / PublicMetaDB Yes, from a Jellyfin server No No
Weekly household summary Yes, panel and email No No No
Playback notices Yes, push via Sam Webhooks you host yourself Via plugins No
Your own collection layout Yes, read from AIOMetadata Writable, rule-based Jellyfin collections Provider shelves
Build your own collections No Yes Yes No
WebDAV, local files, music No Yes Yes No
Transcoding No No Yes No

Full write-up: Stremio in Jellyfin apps.

On hosted shared frontends (jlly.cc and similar): free, instant, and not self-hostable, since they are closed services with no public source release.

Two consequences worth knowing. They fetch for all of their users from one address, so they burn through whatever public addon they are pointed at and everybody behind them gets rate limited together. And because the service is closed and shared, everything you browse and play passes through somebody else's system, along with any keys you configure there, with no way to check what is kept or for how long.

JellyStreams runs as your own instance, so neither applies. Your requests are yours. Your household's watch history, profiles and settings live in your own config/jellystreams/ folder, which you can open with FileBrowser and read, copy or delete yourself. It is not our code you have to take on trust, it is one instance with one household on it, and its data is in your hands.

JellyStreams also works with

How do I get support for JellyStreams?

  1. JellyStreams is an ElfHosted-exclusive, proprietary tool with no third-party upstream. For general usage questions, refer to the documentation above.

  2. For specific support re your ElfHosted configuration / account, see the ElfHosted support options!

Your content, your responsibility

ElfHosted provides JellyStreams as a hosted application — we do not supply content, accounts, or third-party credentials. You are responsible for ensuring that your use of this app complies with applicable laws and our Acceptable Use Policy. If you have questions about what is or isn't permitted, please reach out — we're happy to help.

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)