Modern cross-platform Plex & Jellyfin client built with Flutter
See the codeA modern client for Plex, Jellyfin, and Emby on desktop, mobile, and TV. Built with Flutter for native performance and a clean interface.
Website · Screenshots · Download · Contributing · License
| Platform | Download |
|---|---|
| macOS | DMG (x64, arm64) |
| Linux x64 | .deb · .rpm · .pkg.tar.zst · .flatpak · portable tar.gz |
| Linux arm64 | .deb · .rpm · .pkg.tar.zst · .flatpak · portable tar.gz |
brew tap edde746/plezy https://github.com/edde746/plezy
brew install --cask plezy
winget install edde746.Plezy
Install Flatpak with your distribution's package manager, download the bundle for your architecture above, then run:
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user flathub org.freedesktop.Platform//25.08
flatpak install --user ./plezy-linux-x64.flatpak
flatpak run com.edde746.plezy
On arm64, install plezy-linux-arm64.flatpak.
~/.var/app/com.edde746.plezy/. Add host folders through the desktop file chooser portal, and keep download folders writable.--device=all (Flatpak 1.14 compatibility) exposes more than GPUs and controllers; session-bus access stays filtered.sudo pacman -S plezy
Installation instructions · Community repository by @aldobarr.
Community package maintained by @mio-19 and @MiniHarinn.
sudo moss it plezy
Self-hosted relays must support authenticatedResume for recovery. Deploy the updated relay before updating clients.
Older relays still accept explicit create/join, but failed recovery requires joining or creating a room again.
git clone https://github.com/edde746/plezy.git
cd plezy
flutter pub get
scripts/codegen.sh
flutter run
After modifying model classes or other generated sources:
scripts/codegen.sh
After modifying translations:
dart run slang
Packages an already fully resolved Linux release bundle — pinned libmpv and bundled libraries included, not a Flathub source-build manifest. Run it on Linux, on the same architecture as the bundle, after following the bundle preparation steps in the Linux release workflow: flutter build linux alone does not produce all the required bundled libraries.
Install the packaging tools (Debian/Ubuntu shown) plus the native-architecture SDK and runtime:
sudo apt-get update
sudo apt-get install -y flatpak flatpak-builder imagemagick
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user flathub org.freedesktop.Platform//25.08 org.freedesktop.Sdk//25.08
BUNDLE_DIR=build/linux/x64/release/bundle
python3 linux/packaging/build-flatpak.py --bundle "$BUNDLE_DIR" --arch x64 --output "$PWD"
That writes plezy-linux-x64.flatpak, installable with the Flatpak commands above; on arm64, use the prepared arm64 bundle directory and --arch arm64. Package from the checkout matching the bundle, since the version comes from pubspec.yaml.
Cross-architecture packaging needs native Flatpak tools, a registered binfmt interpreter, and the target SDK/runtime installed with flatpak install --user --arch=x86_64 (or aarch64) — never run Flatpak's namespace tools under emulation. Pass --arch x64 or --arch arm64 to the checker and the matching Flatpak architecture to flatpak run --arch=....
Check the installed package against the runtime (not just the SDK), then launch it on a Wayland desktop and exercise streaming, audio, downloads/offline playback, and file chooser portals:
python3 linux/packaging/check-flatpak.py
The check fails on a non-executable entry point or an unresolved bundled ELF dependency. A container without a GPU can use flatpak run --env=GALLIUM_DRIVER=softpipe com.edde746.plezy for software-rendered verification; this is not a hardware-decoding or HDR test.
scripts/ci_checks.sh
To install the same pre-commit checks locally:
scripts/setup_hooks.sh
End-to-end tests (Android emulator plus a Dockerized Jellyfin fixture):
python3 scripts/maestro/run_maestro.py basic
See CONTRIBUTING.md for development workflow, formatting, tests, and translation guidelines.
Plezy is licensed under GPL-3.0.
Jellyfin and Emby only. ↩
Requires connecting the service under Settings > Services. ↩
In-app HDR toggle on Windows, macOS, iOS, tvOS, and Linux — Linux needs a colour-managed Wayland compositor. Dolby Vision on Android and Apple TV. ↩
Desktop, Android TV, and Apple TV. ↩
Requires the mpv player backend — unavailable on iOS and tvOS, and Android defaults to ExoPlayer. ↩
Android, iOS, and macOS — not on Android TV or Apple TV. ↩
Windows, Android, and tvOS. ↩
Progress sync on Android. ↩
Where your server provides lyrics. ↩
tvOS pauses music when the app is backgrounded. ↩
Not available on tvOS. ↩
Real-time scrobbling on Trakt and Simkl; MyAnimeList and AniList update on completion. ↩
Android TV / Fire TV and tvOS. ↩
Jellyfin only. ↩
(top 30 of 57)
Dart
75.8%
GLSL
9.6%
Kotlin
5.3%
C++
2.6%
Python
1.9%
Go
1.3%
Swift
1.2%
Modern cross-platform Plex & Jellyfin client built with Flutter
See the codeA modern client for Plex, Jellyfin, and Emby on desktop, mobile, and TV. Built with Flutter for native performance and a clean interface.
Website · Screenshots · Download · Contributing · License
| Platform | Download |
|---|---|
| macOS | DMG (x64, arm64) |
| Linux x64 | .deb · .rpm · .pkg.tar.zst · .flatpak · portable tar.gz |
| Linux arm64 | .deb · .rpm · .pkg.tar.zst · .flatpak · portable tar.gz |
brew tap edde746/plezy https://github.com/edde746/plezy
brew install --cask plezy
winget install edde746.Plezy
Install Flatpak with your distribution's package manager, download the bundle for your architecture above, then run:
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user flathub org.freedesktop.Platform//25.08
flatpak install --user ./plezy-linux-x64.flatpak
flatpak run com.edde746.plezy
On arm64, install plezy-linux-arm64.flatpak.
~/.var/app/com.edde746.plezy/. Add host folders through the desktop file chooser portal, and keep download folders writable.--device=all (Flatpak 1.14 compatibility) exposes more than GPUs and controllers; session-bus access stays filtered.sudo pacman -S plezy
Installation instructions · Community repository by @aldobarr.
Community package maintained by @mio-19 and @MiniHarinn.
sudo moss it plezy
Self-hosted relays must support authenticatedResume for recovery. Deploy the updated relay before updating clients.
Older relays still accept explicit create/join, but failed recovery requires joining or creating a room again.
git clone https://github.com/edde746/plezy.git
cd plezy
flutter pub get
scripts/codegen.sh
flutter run
After modifying model classes or other generated sources:
scripts/codegen.sh
After modifying translations:
dart run slang
Packages an already fully resolved Linux release bundle — pinned libmpv and bundled libraries included, not a Flathub source-build manifest. Run it on Linux, on the same architecture as the bundle, after following the bundle preparation steps in the Linux release workflow: flutter build linux alone does not produce all the required bundled libraries.
Install the packaging tools (Debian/Ubuntu shown) plus the native-architecture SDK and runtime:
sudo apt-get update
sudo apt-get install -y flatpak flatpak-builder imagemagick
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install --user flathub org.freedesktop.Platform//25.08 org.freedesktop.Sdk//25.08
BUNDLE_DIR=build/linux/x64/release/bundle
python3 linux/packaging/build-flatpak.py --bundle "$BUNDLE_DIR" --arch x64 --output "$PWD"
That writes plezy-linux-x64.flatpak, installable with the Flatpak commands above; on arm64, use the prepared arm64 bundle directory and --arch arm64. Package from the checkout matching the bundle, since the version comes from pubspec.yaml.
Cross-architecture packaging needs native Flatpak tools, a registered binfmt interpreter, and the target SDK/runtime installed with flatpak install --user --arch=x86_64 (or aarch64) — never run Flatpak's namespace tools under emulation. Pass --arch x64 or --arch arm64 to the checker and the matching Flatpak architecture to flatpak run --arch=....
Check the installed package against the runtime (not just the SDK), then launch it on a Wayland desktop and exercise streaming, audio, downloads/offline playback, and file chooser portals:
python3 linux/packaging/check-flatpak.py
The check fails on a non-executable entry point or an unresolved bundled ELF dependency. A container without a GPU can use flatpak run --env=GALLIUM_DRIVER=softpipe com.edde746.plezy for software-rendered verification; this is not a hardware-decoding or HDR test.
scripts/ci_checks.sh
To install the same pre-commit checks locally:
scripts/setup_hooks.sh
End-to-end tests (Android emulator plus a Dockerized Jellyfin fixture):
python3 scripts/maestro/run_maestro.py basic
See CONTRIBUTING.md for development workflow, formatting, tests, and translation guidelines.
Plezy is licensed under GPL-3.0.
Jellyfin and Emby only. ↩
Requires connecting the service under Settings > Services. ↩
In-app HDR toggle on Windows, macOS, iOS, tvOS, and Linux — Linux needs a colour-managed Wayland compositor. Dolby Vision on Android and Apple TV. ↩
Desktop, Android TV, and Apple TV. ↩
Requires the mpv player backend — unavailable on iOS and tvOS, and Android defaults to ExoPlayer. ↩
Android, iOS, and macOS — not on Android TV or Apple TV. ↩
Windows, Android, and tvOS. ↩
Progress sync on Android. ↩
Where your server provides lyrics. ↩
tvOS pauses music when the app is backgrounded. ↩
Not available on tvOS. ↩
Real-time scrobbling on Trakt and Simkl; MyAnimeList and AniList update on completion. ↩
Android TV / Fire TV and tvOS. ↩
Jellyfin only. ↩
(top 30 of 57)
Dart
75.8%
GLSL
9.6%
Kotlin
5.3%
C++
2.6%
Python
1.9%
Go
1.3%
Swift
1.2%