Free media center for streaming and downloading movies, TV shows and anime. Extension-based, ad-free, with watch tracking — now as a native Linux desktop app.
Unofficial native CloudStream desktop client for Linux, maintained by AMR GAMAL.
A community-maintained Linux desktop client based on CloudStream Desktop, built with Kotlin and Compose Multiplatform.
The application is designed to run compatible Android CloudStream extensions on a desktop JVM without requiring an Android emulator. It provides a native desktop interface and uses a Linux native media bridge for video playback.
Important
Independent, ad-free hard fork. This repository is a desktop-exclusive hard fork and does not merge upstream into Android CloudStream. It is unaffiliated with the original Android CloudStream app and its team — please do not contact upstream developers about this client. Derivative builds and forks must remain clean, free, and open.
Note
Beta / Early Release. This project is under active development and some features may change between releases. It is usable today, but expect rough edges and report issues with the output of cloudstream --diagnostics. Review the known limitations before installing it.
- Native desktop client (Compose Multiplatform, Amoled dark theme, desktop window controls)
- Runs Android CloudStream extensions on the JVM (DEX-to-JVM transcompilation + sandbox)
- Hardware-accelerated playback via system
libmpv(sole playback engine) - Embedded WebKitGTK player surface reusing the shared
player.html/player.css/player.js - Local SQLite persistence (history, preferences, state) via SQLDelight
cloudstream --version/cloudstream --diagnosticssupport commands for bug reports- Strict Linux-only update channel: only
linux-v<version>tags from this repository are ever offered as updates
Feature availability may vary by release. Successful application startup does not guarantee that every extension, stream, or media format will work.
The project is organized into modular components:
| Module | Purpose |
|---|---|
desktop-app |
Desktop UI, application lifecycle, Linux integration, and media-player integration. |
plugin-runtime |
Runtime support for executing compatible Android extension bytecode on the JVM. |
player-abstraction |
Media-player abstractions and native playback integration. |
android-stubs |
Compatibility implementations for selected Android APIs required by extensions. |
common |
Shared application logic and persistence components. |
library |
Core interfaces and provider contracts. |
The exact implementation and supported APIs may evolve as Linux support develops.
- x86_64 (64-bit): Primary Linux target.
- aarch64 (ARM64): Experimental; availability depends on the published artifacts and release.
The Linux application may require the following system components, depending on the package format and release:
- JDK 21-compatible runtime or the Java runtime supplied by the application package.
- GTK 3.
- WebKitGTK 4.1.
- libmpv.
- X11 and the required OpenGL/EGL libraries.
- XWayland when running inside a Wayland desktop session.
The native player currently relies on an X11-compatible embedded surface. Wayland desktops therefore require XWayland; native Wayland embedding without XWayland is not currently supported.
Runtime dependencies can vary between distributions and package formats. Consult the release notes and package documentation before installation.
| Library | Purpose |
|---|---|
| GTK 3 | Native window / embedded player surface |
| WebKitGTK 4.1 | Embedded WebView player host |
libmpv (.so.2 or .so.1) |
Hardware-accelerated video decoding |
| X11 / OpenGL / EGL | Rendering (libX11, libGL, libEGL) |
XWayland + DISPLAY |
Required on Wayland sessions (see below) |
For an exact machine check, run:
bash desktop-app/check-linux-dependencies.shThe check is soname-based (not package-name-based), so it works across Debian/Ubuntu/Deepin, Fedora, and Arch-style systems. Suggested package groups per family are documented in desktop-app/README.md.
Compatibility depends on the host distribution, available system libraries, architecture, and display server.
| Platform | Status | Notes |
|---|---|---|
| Debian 12 and newer | Expected to be compatible with the release baseline | Verify required runtime libraries. |
| Ubuntu 22.04 and newer | CI build baseline | Actual playback and installation should be tested on the target system. |
| Linux Mint 21 and newer | Expected to be compatible | Verify dependencies on the installed release. |
| Deepin | Developer testing environment | Results from one Deepin installation do not establish compatibility with every release. |
| Fedora and compatible distributions | Requires validation | WebKitGTK availability and package dependencies vary. |
| Arch Linux and derivatives | Requires validation | Runtime libraries must match the application's requirements. |
| openSUSE | Requires validation | Verify library availability and package compatibility. |
| ARM64 Linux | Experimental | A successful build does not establish reliable media playback. |
These entries describe the intended compatibility scope, not a claim that every listed distribution has been independently tested.
The project's official Linux release workflow is intended to build on Ubuntu 22.04.
The expected baseline is:
- Architecture: x86_64.
- glibc: 2.35 or newer.
- libstdc++: Compatible with the required
GLIBCXXsymbol versions.
These are build-baseline expectations, not a guarantee that every package will run on every distribution meeting those version requirements. Additional runtime libraries may still be required.
For the most reliable results, use the packages published by this repository's release workflow rather than rebuilding the application on a newer host and redistributing the result.
Download the latest release from GitHub Releases (titled CloudStream <version>, e.g. CloudStream 0.1.10).
Choose a package that matches your Linux distribution and CPU architecture.
The available formats depend on the artifacts successfully produced by each release. Do not assume that every format is available for every version.
# Debian / Ubuntu / Deepin / Mint
sudo dpkg -i cloudstream-desktop_0.1.10_amd64.deb
cloudstream --version
# Fedora / RHEL-family / openSUSE
sudo rpm -i cloudstream-desktop-0.1.10-1.x86_64.rpm
cloudstream --version
# Portable TAR (any supported distro)
tar -xzf CloudStream-Desktop-0.1.10-linux-x86_64.tar.gz
./CloudStream-Desktop/bin/CloudStream-Desktop --version
# or use the bundled launcher: ./cloudstream --version
# AppImage (any supported distro)
chmod +x CloudStream-Desktop-0.1.10-linux-x86_64.AppImage
./CloudStream-Desktop-0.1.10-linux-x86_64.AppImage --versionUninstall:
# DEB
sudo dpkg -r cloudstream-desktop
# RPM
sudo rpm -e cloudstream-desktopEvery release publishes four artifacts for x86_64 (filenames use the numeric version, e.g. 0.1.10):
| Format | Filename pattern | Notes |
|---|---|---|
| DEB | cloudstream-desktop_<version>_amd64.deb |
Technical package ID stays lowercase (cloudstream-desktop) so upgrades keep working; installs to /opt/cloudstream/CloudStream-Desktop, launcher is cloudstream |
| RPM | cloudstream-desktop-<version>-1.x86_64.rpm |
Same layout and launcher as the DEB |
| TAR.GZ | CloudStream-Desktop-<version>-linux-x86_64.tar.gz |
Portable; run CloudStream-Desktop/bin/CloudStream-Desktop or the bundled cloudstream launcher |
| AppImage | CloudStream-Desktop-<version>-linux-x86_64.AppImage |
Portable; leaves GTK/WebKitGTK, libmpv and GPU drivers host-provided |
The menu entry is CloudStream Desktop (com.cloudstream.CloudStreamDesktop.desktop). The display name uses the CloudStream capitalization; the lowercase cloudstream-desktop package ID and /opt/cloudstream paths are intentionally kept stable for existing installations.
For a Linux development environment, install:
- Git.
- JDK 21.
- A C/C++ compiler and the native build tools required by the project.
- GTK 3 development files.
- WebKitGTK 4.1 development files.
- libmpv development files.
- pkg-config.
On Debian-based distributions, the common dependencies can be installed with:
sudo apt update
sudo apt install \
git \
openjdk-21-jdk \
build-essential \
cmake \
pkg-config \
libgtk-3-dev \
libwebkit2gtk-4.1-dev \
libmpv-devPackage names may differ on other distributions.
git clone --recursive https://github.com/AMRGAMAL-1/CloudStream-Desktop-Linux.git
cd CloudStream-Desktop-LinuxIf you already cloned the repository without its submodules, initialize them with:
git submodule update --init --recursiveRun the relevant Gradle tasks:
./gradlew \
:plugin-runtime:test \
:player-abstraction:test \
:desktop-app:test \
:desktop-app:linuxNativeBridge \
:desktop-app:createDistributable \
--no-daemon -PAPP_VERSION="0.1.10"This command runs the listed test tasks, builds the Linux native bridge, and creates the application distributable.
A successful build does not replace runtime testing. Verify application startup, native-library loading, extension compatibility, and actual media playback separately.
The repository provides a dependency-check script:
bash desktop-app/check-linux-dependencies.shRun it from the repository root. Review its output before attempting to launch or package the application.
If the distributable has already been built, the packaging scripts can be used to produce the supported package formats:
SKIP_BUILD=1 bash desktop-app/packaging/build-linux-packages.sh --allValidate the generated runtime image with:
SKIP_BUILD=1 bash desktop-app/packaging/build-linux-packages.sh --validateThe exact output formats depend on the packaging implementation and available build tools.
AppImage generation may require additional tooling. Consult the packaging scripts and release workflow for the requirements of the current version.
To build the JNI bridge manually:
cd desktop-app/src/main/cpp
JAVA_HOME="$(dirname "$(dirname "$(readlink -f "$(command -v javac)")")")" bash build_jni.shRun in development mode:
./gradlew :desktop-app:runThe packaged launcher resolves the native bridge from lib/app/resources/jni/libplayer_bridge.so inside the runtime image.
Linux playback uses the project's native player integration and libmpv.
For playback to work correctly, the application must be able to load its native bridge and access the required system libraries.
If the application starts but video playback fails, check the following:
- Confirm that the native bridge was built for your CPU architecture.
- Verify that the required native libraries are installed.
- Run the Linux dependency-check script.
- Check the application logs for native-library loading errors.
- Test a known-compatible stream to distinguish player problems from extension or provider problems.
Not every stream, codec, subtitle format, or extension is guaranteed to work.
X11 is the primary display path for the current embedded media surface.
Wayland sessions currently require XWayland for the embedded player surface.
Native Wayland embedding without XWayland is not supported by the current implementation.
If the application fails to display video correctly under Wayland, verify that XWayland is installed and available in the session.
Linux builds use this repository's GitHub Releases as their update source.
The Linux update channel is configured through LINUX_UPDATE_REPO in:
desktop-app/src/main/kotlin/com/lagradost/cloudstream3/desktop/AppConfig.kt
Development builds may support overriding the repository with:
-Dcloudstream.linux.update.repo=owner/repo
Linux releases use version tags in the following format:
linux-v<version>
For example:
linux-v0.1.10
The Linux update channel is separate from the original project's Windows release channel.
Update availability depends on the release metadata, version comparison logic, and successfully published release artifacts.
- Verify that the package matches your architecture.
- Check that the required runtime libraries are available.
- Run the dependency-check script when working from a source checkout.
- Review the terminal output and application logs for the first meaningful error.
- Confirm that the native bridge exists in the expected package location.
- Check its architecture and shared-library dependencies.
- Verify that libmpv and the required GTK/WebKitGTK libraries are available.
The current player integration requires an X11-compatible embedded surface. Confirm that XWayland is available and that the application is running with access to it.
The runtime provides compatibility for selected Android APIs, not a complete Android environment. Extensions that depend on unsupported Android APIs, services, WebView behavior, or platform-specific functionality may fail.
Check the package architecture and dependency errors reported by your package manager. A portable archive may still require system libraries that are not bundled with the application.
Codec support comes from the system GStreamer/FFmpeg packages — install the distribution's normal codec bundle when a preview or stream format is unavailable.
Bug reports and contributions should include enough information to reproduce the issue.
When reporting a Linux-specific problem, provide:
- Linux distribution and version.
- CPU architecture.
- Display server: X11 or Wayland.
- Application version and package format.
- Relevant error messages or logs.
- Steps required to reproduce the problem.
Please avoid including passwords, API keys, access tokens, or other sensitive information in logs and issue reports.
Contributions should preserve the separation between platform-specific implementations and shared application code. Changes to shared modules must be evaluated for unintended effects on other supported build targets.
This project is distributed under the license provided in the repository.
Review the repository's LICENSE file for the applicable terms.
This application is a desktop client and runtime for compatible CloudStream extensions. It does not itself guarantee the availability or legality of third-party streams or services. It does not host, distribute, or bundle any media content, streams, or scrapers.
Users are responsible for the extensions they install and the content they access. The project does not endorse or guarantee the behavior of third-party extensions.
This is an unofficial community project and is not affiliated with the original CloudStream developers.
- User-facing version: numeric, e.g.
0.1.10(single source of truth:APP_VERSIONingradle.properties). - Git tag:
linux-v0.1.10(required by the updater'slinux-vprefix check — do not change one without the other). - GitHub Release title:
CloudStream 0.1.10. - Artifacts:
CloudStream-Desktop-0.1.10-linux-x86_64.tar.gz/.AppImage,cloudstream-desktop_0.1.10_amd64.deb,cloudstream-desktop-0.1.10-1.x86_64.rpm.
- CloudStream (Android) — the upstream Android app whose core library powers this client (unaffiliated; do not contact upstream about this fork).
- Extension documentation — plugin development guides and extension APIs.
- Compose Multiplatform, SQLDelight, libmpv, WebKitGTK and the Linux distribution maintainers whose runtimes this client builds on.
- Linux edition maintainer: AMR GAMAL.











