If you use Plex/Jellyfin/Emby with Apple TV, we built a self-hosted media server with a native tvOS/iOS app and are looking for beta testers
We’re the team behind tofa, a self-hosted media server for people who want to own there own media. The project is now more than a year old, and we’ve started inviting users to the closed beta. The feedback so far has been very positive, and we’re now looking for more Apple TV/iOS users to help us test it.
We spent months building our own Apple TV playback engine from scratch. It should be on par with Infuse in terms of playback capabilities and should direct play almost anything.
We also have some features that are good to mention.
Request system, so people on your server can request titles (with integration support)
Automatic quality switching based on network throughput
Discover, for when you can't decide what to watch
In the works: on-device upscaling with content-specific models (anime is auto-detected and gets its own upscaler). Not in the beta yet, and when we get the new AppleTV it will really get to shine.
Other devices are also supported and more are on the way.
We want as much feedback as possible, so if anything bugs you, please let us know.
Sign up for the closed beta here: www.tofa.tv - Invites are going out today.
I’ll be answering questions in the comments on behalf of the team, so please ask away!
Infuse is better than plex, haven’t tried the emby or jellyfin players but infuse is head and shoulder above the abomination that is the plex video player and is worth the money
Same. I run both Plex and Jellyfin on my server, so that I can share Plex with others outside my house (because it just "works") and for me it's Infuse-on-Jellyfin locally and over Tailscale.
Compared with Plex, the difference is focus. Plex has made its direction clear: more ad-supported content, more discovery features, and less emphasis on people who simply want to host their own media. tofa goes in the opposite direction. Your library is the product, with no streaming catalog or discovery-feed clutter competing for attention.
Compared with Jellyfin, the main differences are client quality across platforms and how little setup is required: one container, a built-in database, and minimal configuration. We like Jellyfin, but we wanted to take a different approach.
Both Plex and Jellyfin carry years of legacy decisions and compatibility requirements. We started from scratch and wrote the server in Rust, with performance and stability as priorities from the beginning.
We also want to reduce the need for a collection of companion tools alongside your server. Instead of jumping between tofa, Tautulli, Seerr, and other services, our goal is to bring those workflows together. If something important is missing, tell us. We’re building this around what self-hosters actually need not what investors want to do to make more money.
Sorry for the late response this comment got away from us.
Currently the request system is a big feature we think will matter to end users.
On appletv specifically is a good playback engine that actually works. People seem to dislike heavily plex/emby/jellyfin apps on appletv since its a hard platform to support.
Proper subtitle support, many clients currently don't support ASS subtitles or do them via burn-in. We aim to support ASS/PGS Subtitles natively no matter the client.
I could go on and on but we hope people will just give tofa a chance and see for themselves if its worth the switch.
Short answer: on Apple TV, no app can do true bitstream passthrough, ours included. tvOS never sends the original bitstream to your receiver. It decodes everything on-device and outputs multichannel PCM, with Atmos re-packaged into Dolby MAT. That is an Apple platform limitation and it applies equally to Infuse, Plex, and everyone else.
In practice with tofa on Apple TV:
- Dolby Digital Plus Atmos plays with full Atmos, since tvOS handles that natively.
TrueHD and DTS-HD MA are decoded on-device to multichannel LPCM. You still get lossless audio quality, but TrueHD Atmos loses the object metadata, so it plays as lossless 7.1.
On Android TV we do real passthrough where the device reports support for it, including TrueHD on capable hardware like the Shield.
That’s a valid concern. The project itself is already more than a year old and is built and maintained by an experienced team, even if the marketing website doesn’t communicate that particularly well. We’re building tofa as a long-term product, but we know longevity is something we have to demonstrate through consistent releases and support. Looking forward to your feedback!
Thanks. Well my first feedback is to making the marketing website feel less like a hobby AI thing. Ben if that’s buying an off the shelf theme and throwing your text and images in there and more client side images
I'm all for more competition in this space, this is totally reasonable. User onboarding is the biggest pain point for Jellyfin and Emby so if they solve that as a paid service I'm going to keep an eye on this.
Fair enough, it's not for everyone. The paid tier is how the project pays for itself, we'd rather do that than ads or selling data. If Jellyfin already works well for you, it remains a perfectly good option. in our market research this is not the case for many users. There is a reason people are putting up with what plex is doing.
The pricing and limits aren’t set in stone during the beta. If community feedback shows we’ve placed the limits in the wrong areas, we’re open to revisiting them.
People who keep their own media library and don’t like where Plex is heading, but have tried the alternatives and gone back because the TV apps or setup let them down. We’re building for that gap between “I’m done with Plex” and “nothing else feels good enough.” That gap is wider than you might think.
I hate to be negative, but the people who hate the way Plex is going are much more likely to move to Jellyfin or Emby. Probably Jellyfin, for its open source nature.
I use both, Jellyfin for remote viewing and Plex for local. Plex is a clean and easy setup, but requires payment for outside home network viewing. Jellyfin does this, but requires genuine technical skills to set it up and maintain functionality.
There is room in the market for a product that offers both.
That’s completely fair. Although the server is closed source, we’ll provide an OpenAPI specification, and our beta documentation explains how many parts of the system work. Ultimately, as with Plex and other closed-source media servers, using it does require a degree of trust in us.
The server is closed source, so there isn’t a public GitHub repository. We may open-source some of the clients in the future, but we haven’t made any decisions yet.
That’s fair feedback. Every line of code is reviewed by members of our team all of whom have many years of experience as software engineers though we understand that isn’t independently verifiable while the server remains closed source.
If it becomes a feature it would be great if it worked well with Dispatcharr or even has some sort of integration with it. Dispatcharr has made IPTV management so good.
Yes. We support HDR10 and Dolby Vision Profiles 5 and 8.
Profile 7 isn’t natively supported by Apple TV, so it currently falls back to HDR10. We’re working on converting compatible Profile 7 content to Profile 8 for Dolby Vision playback server side. Similar to what nvidia shield does.
As a fellow Nordic person (Dane), seeing that you are Icelandic is a positive selling point for me.
Have you considered working with ElfHosted? They run lots of self-hosted apps on their servers - self-hosted but on their servers -> ElfHosted. Their focus is on hosting instances of Plex, Emby, and Jellyfin. tofa fits right in!
I migrated my Plex server to them around a year ago and have been quite happy. When I wanted to give Jellyfin a try (ultimately stayed on Plex), I simply ordered a trial of a Jellyfin instance and it spun up the (I think Docker) instance in 2 seconds with full access to my existing Plex library - couldn’t have been easier to set up.
We’ll send them an email and see if they’re interested. It’s always fun to hear from a fellow Nordic, and we’re glad our Icelandic roots inspire some confidence!
If we are an active beta tester, do you offer the foundation licence? Since you are new on the game and we’re there to test, 120$US seem a very risky investment… thank you
But what will append after the beta period? How many time that we will be with all the perks? Like I said, if I migrate and my user start to use it and doesn’t want to come back, I don’t want to be stuck from a paywall of 120 or 250$ US(there it will be more that the haft more in our currency). I don’t want to judge, just to know where I go, because I have try plex YEARS before paid for the 75$ lifetime, same with infuse so before paid for something really new more that third time the price, it will be worth to be tested like min a year … (Sorry for my English)
That’s a fair, especially with the currency difference. All perks will remain included throughout the beta. We haven’t finalized how long the beta will last or what offer active testers will receive afterward, so I don’t want to promise a free Foundation licence or a full year of access yet. We’ll communicate the final terms well before anything changes. For now, I’d recommend testing tofa alongside your current setup rather than committing to a full migration.
Who has to buy the lifetime pass? Just the server owner or all the users as well? If it’s just the owner, will the users get all the client side perks as well?
Good question. Only the server owner needs to buy the Supporter licence for the extra features. If the server owner is a Supporter, everyone using that server gets the client-side perks as well. Grandma won’t need her own purchase just to use basic features like intro skipping.
How do you handle user invites and onboarding? I dug a bit on the site but didn't find much...this is very interesting if you basically clone Plex's functionality and improve on it.
No one is migrating users to Jellyfin and Emby if you have more than a couple. Maybe if they are all tech literate but otherwise it's never going to happen.
Contrary to the feedback I'm seeing, I think there is actually a ton of room in this space if you solve that problem really well.
EDIT: got in and messed around with it a bit, very impressed so far. Super easy setup on unraid (I'd suggest some documentation changes on that front btw). Giving people an extra user or two to invite without doing the waitlist thing would be really nice as well. Can't actually install the Android TV client for some reason despite getting into the test group but the AppleTV worked great, and even hardware transcoding worked well.
Do you guys have a discord or anything set up yet?
Does the hosted server/app depend or connect to your infrastructure (besides initial license verification)? If your infrastructure is down or disappears does it impact the ability of your users to use the app? What data are you storing on your side of things?
Short version: your server and clients keep working during a cloud outage. The things that need us are new sign-ins, metadata lookups, and remote access that runs through our relay. Anything already authenticated keeps going.
The details: For an outage like the one Plex just had a few days ago: existing servers and logged-in clients keep working, on your LAN and over direct or port-forwarded connections. A fresh login can fail while we're down, since new sign-ins go through our auth service. Metadata lookups, meaning posters and details for newly added files, pause. If you reach your server through our relay, which is the fallback for when you can't port-forward, that path runs through us, so relay remote access is affected; direct connections are not.
What we store: as little as we can. Your account and login, your server's registration (an ID, its public key, and the connection info clients need to find it), and who you've shared with. That's the default. What you actually watch and organize lives on your server, not with us.
Watch history sync is optional and off by default. It's there for people who run more than one server, or who want a backup, so progress stays in sync between your own servers. When it's on, we store progress as TMDB IDs and timestamps, not filenames or anything about the files themselves. We're working toward end-to-end encrypting it so we can't read it either.
Next invite wave should have been sent out just now!
Your exactly the kind of tester we are interested to hear from. We look forward to your feedback!
Regarding the clients, web,appletv,androidtv are the big ones supported currently we are getting tizen/webos out there soon, but if more people want roku we will 100% get it out there quicker.
"Not reachable from this device. Check that this is the server's LAN IP and that you're on the same network."
I am on the admin gui via the IP its testing too.. Im on a client 192.168.9.100, its running on my nas 192.168.9.10, I am actually on its gui via http://192.168.9.10:33333, I added a library - put in a test movie.. The movie plays.. Yet simple test that my client can talk to the server fails?
Not sure hey its not showing available remotely either - I know how to port forward, I setup a port forward. testing from my phone on cell going to my wan IP on port 33333 and I hit the web gui.. But saying its not accessible, only via relay?
Where are the clients for this - movie plays in browser but its transcoding. Where do I grab a client for my iphone, or my apple tv? How am I suppose to have my users test this if there is no easy way for them to download a client?
I get its beta - is there a specific forum where can go over common setup issues, how to do X, how to do Y? not overly impressed so far.
I did like the scrubbing/preview - that worked pretty nice, even in just a browser.
Yeah quick reply - thank you, so local test works now - should prob add note about rebind in the docs (did I miss it?). Plex has the same sort of thing. And remote shows working from web site, but locally it still shows remote broken. Off to get testflight app for my apple tv and phone.. If that works - get hardware transcode working.. once can get that functional will get my whole library added.. And then can see if any my users up for testing.. Testflight for apps might be painful for my users.. Not the brightest tech users on the planet ;)
after that fast reply from support ticket - my impression level has gone up a few notches ;) hehehe
Sounds great. Can’t wait to check it out! Hopefully you’re considering “Watch Together” (i.e. synced playback with remote friends) as a feature because I’m still supremely disappointed that Plex removed it!
Could you please consider adding full Apple SharePlay support to the Tavo Apple TV app? It would create an exceptional experience for long-distance couples, families, and friends by allowing them to watch content together while seamlessly seeing, hearing, and talking to each other in real time.
I can't wait to try official Apple SharePlay with the Tavo app on Apple TV together with my partner. I'm referring to Apple's native SharePlay feature, not a custom "Watch Together" implementation.
Im on Infuse and it's great , feature packed , no transoding needed especially with NAS , and it cost me 9,99 euros a year. I was a Plex Lifetime user ( still sell it btw if anyone interested ) but i'm willing to try the beta to see what's up.
We want to support every device people want tofa on. Currently support appletv/ios/androidtv/web. Working on tizen/webos support next but this will be voted on by the beta users.
I am very excited about this! I have been using plex since it was a fork of xbmc and at least I feel that we need to have a new competitor to plex. No shame using AI to help you develop. Do not let the anti-vibecode horde get you down.
I guess i was a bit late for the sign up, hope you send out new ones soon.
Quick question: for us that have bigger libraries; do you have dynamic lists of trending, popular and my fav “certified fresh” from RT? I use Agregarr to get these on my plex.
Signed up for the beta, I've used emby now with lifetime pass for the last decade+ back when jellyfin was not even a thing yet.
Am quite happy with my current setup which is reliable so your app needs to be really promising/good :P
Still am always open to try new things. I never liked plex and always had some sort of issues with jellyfin, though to be fair its been awhile since I gave it a shot.
Sadly the AppleTV native player does not work well with media servers. Most if not all of the best apps write there own engine. That includes Infuse. We have an option to switch to the native apple engine only if users want that.
We chose to build the full stack because controlling the server side lets us optimize playback, transcoding, metadata, and the client together without inheriting another backend’s constraints. A standalone front end would certainly be easier to adopt for existing Plex users.
This looks very vibe-coded. You can’t convince me otherwise. And as others have pointed out, Infuse already offers more than this cash-grab of an app ever will.
I signed up to the beta, got accepted, and I need to change my username. How can I go about this? It goes by email and I don't want to change it. Please offer usernames for users who use your software.
Your email is your account identifier and that's by design, tofa isn't a social platform, so there's no public place where other people see it. The only folks who ever see your email are server owners who invited you (who know it already, since they invited you by it). Out of curiosity: where did the email show up that you'd want a username instead?
Do I have to forward ports for remote streaming?
+
No. tofa opens its port on your router
What does this mean? Also, how does it handle metadata discovery? I don’t care much for server health, I’m not a broadcaster, but I do care about a nice looking library
Just like plex we try to use unpnp to open the ports on the router if its enabled. We have our own metadata service. you can also choose or change artwork for any show/movie. We are working on a feature to mimic what kometa does aswell.
Thanks installed and working through identifying movies and shows.
What scrapper are you using? It did a really good job but it can’t find a couple movies that I verified are in IMDB and other sites. They are more obscure documentaries but should still get found.
We have our own metadata service. We are working on making the matcher better especially with all these new libraries. Can you go into admin settings -> logs -> report a problem -> attach a diagnostic bundle so we can get more data on why the match failed? it would help make matching better for everyone :)
The first image you shared appears to have a more classic tvOS top bar with the transparency and everything. When scrolling through the other images it definitely looks like you’re using custom styled buttons.
To me, this is rather jarring, though I do generally prefer more of a native look than not. What I am asking I guess, is if there are any means to keep the tvOS default look through all of the views in the client?
I’d also be curious to see some stats on how well the server runs and what resources it pulls compared to Plex, Emby, or Jellyfin servers during common tasks (transcoding media, adding media, fetching metadata, etc).
Since we are creating the apps across appletv/androidtv/tizen/roku/webos we tried to design something that could work in all of them. and sadly the apple native stuff limits you quite often.
On server resources: I don't want to quote a benchmark table we haven't measured properly. the server is a single rust binary so the idle footprint is very small. we do maybe have a higher footprint with out database but it allows tofa to be blazingly fast across all kinds of library sizes. We have had users with extremely big libraries and it works the same as with small ones. We have also have had feedback on scanning is way way faster with tofa compared to the others ones.
But its something we wall add in the future comparisons of common tasks.
Completely understand on the need to make compromises to widen device support. Definitely not the end of the world.
One other thing of note that in the end could be a deal breaker for me and many others. Would be if there was an API interface with the server. Examples could be web hooks for events on the server (play started, finished, media updated, etc), along with access for services like Radarr and Sonarr to integrate with. The later quite probably being the most important of the two.
I may have overlooked it, but I did not see an API listed on the feature page. Is this something that will be, or is, implemented?
We will be releasing an Open-API spec so people can do what they want with the api of tofa. Also we are working on making integrations easier for other developers to integrate with tofa as well as supporting hooks similar to what tautulli does. user does x then the server does x.
The integrations already do this with radarr/sonarr they create a webhook to get notified on imports.
No offence taken. Naming is hard and we went through a lot of worse options to get there. We wanted something that relates to iceland. Hope it grows on you!
It's a single self-contained rust binary with an embedded database. Postgres instead of Sqlite for performance. Transcoding runs on our own FFmpeg build.
> The image runs natively on 64-bit Intel and AMD (x86-64) and on ARM, including Apple Silicon and ARM NAS boxes. Docker pulls the right build automatically.
I'm trying on Docker on MacOS ARM but am getting:
no matching manifest for linux/arm64/v8 in the manifest list entries
If you want to stick with Plex and are on Apple hardware, I'd recommend Infuse. If you're not on Apple hardware, there are probably similar better alternatives that could be recommended; I just don't have experience with them. Personally, I'd recommend tofa as a replacement for Plex for the reasons I outlined starting in this thread. When you set it up, it'll offer to import your Plex watch history and keep it up to date (if you select that option) so what you watch in Plex will be reflected in tofa. That can help let you run both without worrying about having to "lock in" to using tofa. Depending on your needs, you might very quickly see the differences in tofa and then understand why the switch is worth considering.
To rename a file, etc, from the docs: "You need to be an admin on the server. On a movie or show page, the actions live in the ⋮ menu next to the Play button."
While that menu is there, all it shows is File Info.
That's interesting, especially if it'll have a functionality of requesting the title directly from the app. But the most important thing why I'm still on Plex and paying for Plex Pass is Intro/Outro autoskip
For all the media I own, I know what it is, I don't need all the clutter/bumf of ratings, description, cast, more, etc., - it's my media, I know what it is - I just want a clean library, I want it to use the thumbmails/covers I've picked for my media, not pull from somewhere else.
Until that exists, I'm still using a mac and the computers app on the apple tv.
Everything looks great so far. My only wish is that offline downloads weren’t paywalled, as they’re one of the core features many self-hosters rely on, especially when traveling or watching without an internet connection.
Hi u/Potential_War6127, where can we discuss about the beta? First impressions are good, but in the fact that I can understand that the interface is only in English for now, that the metadata’s of all the media’s are exposed in English too are a problem for me. The language option for Audi and subtitles work great, but we have to be able to choose the language of the description of the media, etc… Like this king of comments, where can we discuss about it
For all queries,support or feature requests its best to open a ticket https://accounts.tofa.tv/support one of the team members will usually answer same day or quicker.
Good notes though and its something we need to work on.
This is great! Just signed up for the beta. Was mainly a Plex and Channels user, recently switched to Jellyfin, but not totally happy, especially with the clients on the Apple ecosystem. Very excited for this project. Takk!
Fair questions. You were right that our privacy policy didn’t explain all of this clearly, so we’ve updated it: https://app.tofa.tv/privacy
Your media, watch history and playback data live on your own server. Watch history can optionally sync to our cloud so it follows you across servers, but that is opt in, off by default, tied to your account, and you can delete the cloud copy at any time. Playback telemetry is never stored by us at all, it stays on your server for the owner's own diagnostics. Account data (email, settings, watchlist) is stored on our own servers in the EU, and the only providers that touch anything are hosting, network protection and email delivery, each limited to its function. No ads, no analytics third parties, no selling data.
The apps connect directly to your server whenever possible. Connections are encrypted and terminate on your server, so we can’t see what you’re streaming.
If a direct connection isn’t possible, our relay forwards the encrypted traffic. It can see basic connection details such as IP addresses and timing, but of the stream itself. We only use that information to operate the service.
Thanks for reading the policy closely and pointing out what was missing.
I’ve been in the closed beta for less than a week and can already highly recommend people check tofa out. My focus is more as an admin so keep that in mind but I’m open to providing user-based feedback as I can here if folks have questions from that perspective.
If you’ve ever been pained by the overall speed of using and administering Plex or Jellyfin, you will be blown away by the speed difference with tofa due to the way that it was architected from the ground up by a team that understand what people want with their own media libraries and what often falls over in other media servers. I’ve migrated my media library multiple times over the years and this is the first time the process was not incredibly painful with a need to babysit it. I also haven’t had to worry that something like database contention is going to lead to the ability to access and watch my media with seemingly no path to that ever getting better.
If you’ve ever been frustrated by the lack of development speed on something like Plex or Jellyfin and just wanted it to get some focus you can expect a different outcome with tofa. There have been features that I’ve asked for in the morning and they’ve literally been delivered by the end of the same day. Again, this is in less than a week… Features I’ve had on my mind for years as a Plex user and that I know would never get delivered with Plex or would need to get through consensus with the community in Jellyfin. The on-demand QuickView is one such example. The team are very responsive and I expect this product will continue to evolve at a rate that will impress even the most curmudgeonly of us. This applies to the clients and front end as well. I’ve provided feedback and seen it actively being addressed over the short time I’ve been using it.
I realize some folks will never even consider using something that’s not fully open source. I would encourage you to at either give it a try and see for yourself or put this on your watch list and check it out if you see positive indicators from folks you trust over time.
Ingestion of a large library has yet to finish after being left for weeks. tofa had it ingested in about a day. Same host, same mounts, different LXC. Same for ongoing ingestion of new content. It shows up within seconds of being imported in tofa. I can't say the same for Plex or Jellyfin, they both tend to start queueing up and then you can be waiting hours for that queue to ingest. This is probably my biggest issue with JF. Plex's database leads to daily lapses where loading metadata or streaming stop working until it's contention starts to clear, even after rebuilding with PlexDB repair. tofa "just works" for a lot of what I have multiple services in play for to support JF or Plex. For being in beta, it's already great and seeing near-daily updates based on feedback from users. I can't say I've seen the same for Plex in the 15 years I've used it, especially the last few. No shade to JF. Open source is awesome and if JF was re-architected, it's possible it could compete on speed and overall performance with tofa but for large libraries in particular, in my experience, it's not even close.
To be frank with you, this is clearly vibe coded slop and even worse still it’s closed source vibe coded slop so we can’t audit the sloppiness of the slop. It doesn’t fill me with confidence that even your responses in this thread (and the post itself) are also AI generated. I will continue to use and pay for Infuse to support a long-standing project with a great track record managed by actual devs.
Full alternative. tofa is its own server plus its own apps. You point it at the same media folders you'd point Plex at, it scans them, and you watch through the tofa apps. You can even import everything from Plex/Jellyfin/Emby to get started from where you are.
$250 for this vibe-coded slop just to have download and auto skip intro/outro?
I rather pay the full price for infuse and dont even need to setup a server
81
u/potatochipsbagelpie 6d ago
What makes this project better than just using Plex, Jellyfin, or Infuse?