I’ve been building Fathom, a desktop Jellyfin client, for quite some time and just put out the first public release (0.9.0) for Linux and Windows.

The real draw is having everything in one place. Your Jellyfin movies, shows, music, and Live TV; most of Jellyfin’s important server-side management (users, libraries, scheduled tasks, transcoding, Live TV and DVR, and more); and optional Seerr requests plus a full YouTube client, all without leaving the app. No bouncing between the web dashboard, a requests page, and a browser tab. One window does the lot.

What’s in it:

  • Server management, built in. Handle users, libraries, scheduled tasks, transcoding, active sessions, Live TV and DVR, and more, without opening the Jellyfin web dashboard.
  • Optional Seerr requests right from the detail page, with Jellyfin, Seerr, or API-key sign-in.
  • Optional YouTube client. SponsorBlock, DeArrow, dislike counts, downloads, no ads and no account, off unless you turn it on.
  • One shared player. Jellyfin and YouTube use the same controls, seek bar, and shortcuts. Picture-in-picture, or pop a video out to a floating, always-on-top window on your desktop.
  • Plus: SyncPlay watch-together (works with other Jellyfin clients too), ratings (Rotten Tomatoes, IMDb, and more), in-app updates with a stable or beta channel, light/dark/AMOLED themes, and searchable settings. Everything plays through mpv, so you get direct play, hardware decoding, and proper subtitle and audio track control.

It’s Linux-first (built and tested on Arch/KDE) with a self-contained AppImage, plus a portable Windows build. Android and more features are on the roadmap.

Download + source: https://github.com/Fathom-Media/fathom/releases/tag/v0.9.0 Repo (AGPL-3.0): https://github.com/Fathom-Media/fathom

This is the first public release, so expect a few rough edges. All feedback is genuinely wanted: bug reports, feature requests, and ideas. The goal is to grow Fathom into one of the best Jellyfin clients out there, so open an issue or start a discussion and it’ll get read.

AI Disclosure

Per Rule 7 / [AIP] disclosure requirements AI was used during development as a coding assistant. Level per category:

  • Design (architecture, system design): Hint — I make the architectural calls; AI suggests trade-offs and edge cases I might have missed.
  • Implementation (production code): Pair — roughly 50/50. AI drafts, I review, adjust, test on real hardware, and only commit what I’ve verified. Every commit is manually reviewed before it goes to my dev repo.
  • Testing (writing tests, test plans, QA): Assisted — real-device testing is manual (I test on my own PC before every release). AI helps draft test plans and think through edge cases.
  • Documentation (docs, comments, README, CHANGELOG): Pair — release notes and changelog entries are drafted with AI then edited for tone; comments and code docs are mostly Pair as well.
  • Review (code review, PR feedback): Assisted — I’m the reviewer; AI helps with security sweeps, audit passes on complex changes, and consistency checks.
  • Deployment (CI/CD config): Hint — GitHub Actions/release pipeline is largely conventional; AI-suggested improvements only.
  • vpklotar@lemmy.world
    link
    fedilink
    English
    arrow-up
    3
    ·
    5 hours ago

    Oh man, of this just had a controller friendly interface for YouTube I could ditch my Nvidia shield and setup an HTPC with KDE big screen and this. Would’ve been awesome!

    Nice project anyways!

  • CAVOK@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    7 hours ago

    Any idea of integrating it into I2P? Being able to torrent files anonymously would be nice maybe?

    • TraceApps@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      3
      ·
      6 hours ago

      Interesting idea, but that’s out of scope for this app, Fathom is just a Jellyfin/YouTube/Seerr client, with no torrent or P2P layer, so there’s nothing for I2P to integrate with.

  • potustheplant@feddit.nl
    link
    fedilink
    English
    arrow-up
    3
    ·
    10 hours ago

    I’m assuming the youtube client is precisely that, right? Meaning that it’s the client that fetches the stream, not the server. Asking because Google’s been very annoying about not veing able “verify my country” due to travelling for extended periods of time. So I’m trying to find a way to spoof my location.

    • TraceApps@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      6 hours ago

      Yes, the YouTube side is fully client-side, the app resolves and fetches the stream directly, the Jellyfin server isn’t involved at all. So YouTube sees the connection of whatever machine is running Fathom, using that machine’s IP and location. Fathom doesn’t spoof anything itself, but because it’s client-side, running it at home or behind a VPN is what should decide the location YouTube sees.

      • potustheplant@feddit.nl
        link
        fedilink
        English
        arrow-up
        2
        ·
        6 hours ago

        Yeah except that YouTube support told me that they can detect if you’re using a vpn or no. At least in my case, using ProtonVPN that seems to be the case because when I try to subscribe to premium, it says that they can’t verify my country.

        • TraceApps@lemmy.worldOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          5 hours ago

          Yeah, unfortunately that’s a Google account/billing thing, not a playback thing. Fathom only fetches the video stream on your machine; it doesn’t touch your account or Premium. That “verify your country” check is much stricter than playback and wants a residential IP in the country, so datacenter VPN ranges like Proton’s can get “flagged”. Nothing i think a media client alone can get around.

          • potustheplant@feddit.nl
            link
            fedilink
            English
            arrow-up
            1
            ·
            1 hour ago

            My thought was that (maybe) the server (aka fathom in this case) could be the one that has the active youtube session so that it fetches the stream and then uploads it to the client. Acting like a proxy of sorts. To youtube, the user is always where the server is, but you can move around freely without issues.

    • TraceApps@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      6 hours ago

      Unfortunately, it’s Jellyfin-only. Emby and Jellyfin came from the same codebase originally, but their APIs and auth have drifted apart enough that Fathom’s Jellyfin-specific calls won’t work against Emby. No Emby support planned, the focus is Jellyfin, alongside the Seerr and YouTube pieces.

  • deleted@lemmy.world
    link
    fedilink
    English
    arrow-up
    12
    ·
    edit-2
    23 hours ago

    Great app and AI disclosure. AI is a tool and useful when used properly.

    Gonna try it!