All projects

Catalogue number OB-004

JellyBridge

Jellyfin on the desktop, without the browser tab.

Free and open source under GPL-3.0, for Linux, Windows and macOS. The first public release is being prepared; until then it builds from source.

  1. 01Browse
  2. 02Play
  3. 03Sync

Overview

JellyBridge is a desktop client for Jellyfin, the open source media server. It shows the same Home screen, libraries, search and item pages as Jellyfin's web app, laid out the same way, but as a real program on your computer rather than a browser tab: it opens on your Home screen about a tenth of a second after launch and uses around 120 MB of memory while you browse.

Playback goes through mpv, built into the packages together with the codecs it needs, so a film plays from the original file with hardware decoding and the server never transcodes. Progress, watched state and favourites are saved on the server as usual, so you can carry on from any other device. It is free software under the GPL.

How it works

  • Home and libraries

    Your libraries, Continue Watching, Next Up and latest additions, arranged by your Jellyfin Home settings; poster grids with sorting, filters and an A to Z jump bar.

  • Search and item pages

    Search across the whole server as you type. Films, series, seasons, episodes and people get a page with backdrop, ratings, media info, cast, trailers and similar titles.

  • Direct play through mpv

    H.264, HEVC, AV1, VP9, 10-bit and HDR from the original file, with hardware decoding where the GPU supports it. The server's CPU stays idle.

  • A full player

    Resume, embedded and external subtitles, audio tracks, chapters, playback speed, next and previous episode, and skip buttons for intros and recaps. Your computer stays awake while a video plays.

  • Progress that syncs

    Positions, watched state, favourites, playlists and collections live on the server, so JellyBridge and every other client agree.

  • Private by construction

    It talks only to your server, and your access token never reaches the player: mpv streams through a local proxy that adds it.

Limits worth knowing

  • No public release is published yet. Version 0.1.0 is packaged and tested on eleven systems, but until the release page lists it, JellyBridge builds from source.
  • It plays what mpv can play. Files mpv cannot decode are not transcoded by the server yet.
  • Live TV, SyncPlay, casting, offline sync and server administration are not there. Music and books can be browsed but have no player of their own.
  • The speed and memory figures were measured on one machine (a Ryzen 7950X with an RTX 3090 at 4K and 240 Hz); other hardware will differ.

Story

The first commit was on 20 May 2026, a Kotlin application. The observation was small and personal: a Jellyfin library watched in a browser tab is a browser tab, with the memory, the startup time and the playback limits of one, while every file on the server is already in a format a desktop player handles perfectly.

The decision was to make a native client that plays the file as it is. The app was rewritten in Rust, first with one GUI toolkit and then with egui, and mpv was built in rather than installed separately, loaded only when something plays. The second decision was to follow Jellyfin's own web interface closely instead of inventing a new one, so that anyone who knows Jellyfin knows where everything is.

The third was to measure. Every performance change started from a reproducible scenario: launch to content went from 302 to 102 milliseconds, browsing memory from about 170 MB to about 118 MB, and an idle window from nearly sixty frames a second to none. Several obvious fixes measured as no gain and were dropped.

Version 0.1.0 is packaged for Debian, Fedora, openSUSE, Arch, any Linux as an AppImage, Windows 10 and 11 and macOS on both chips. The Linux and Windows packages were installed and tested on eleven systems; the macOS builds are signed and notarized by Apple. The public release is being prepared; the catalogue record will say Released when it is out.