A privacy-respecting YouTube and YouTube Music client with a native, fully local recommendation engine.
Flow Desktop is the desktop companion to Flow for Android, built with Rust, Tauri, React, and TypeScript.
Flow Desktop is under active development. Features and storage formats may change before the first stable release.
- Native video playback with quality and codec selection, SABR/DASH/HLS support, chapters, subtitles, playback speed, queues, mini-player, and Picture-in-Picture.
- YouTube Music home, search, artists, albums, playlists, queue management, synchronized lyrics, repeat, shuffle, and equalizer controls.
- A dedicated Shorts feed with comments, descriptions, saved Shorts, looping, auto-next, and timed scrolling modes.
- Local subscriptions, playlists, Watch Later, likes, albums, video and music history, Continue Watching, and regional Explore feeds.
- Channel pages with videos, Shorts, playlists, community posts, comments, and live chat support.
- SponsorBlock, DeArrow, and Return YouTube Dislike integrations.
- Imports from Flow backups, Google Takeout, NewPipe, LibreTube, FreeTube, and OPML.
FlowNeuro is Flow's native local recommendation engine. It learns from watches, skips, likes, dislikes, searches, topic preferences, and creator affinity, and ranks content on your device without sending a recommendation profile to a Flow server.
The Control Center lets you inspect topic weights, time-based patterns, channel memory, learning activity, and blocked content. You can export, import, reset, or temporarily pause learning with Deep Flow mode.
- No Google account is required, and Flow contains no advertising or analytics SDK.
- History, settings, library data, and recommendation state are stored locally in SQLite.
- Tauri permissions are restricted to the main window and the OS, dialog, and external-link capabilities the app uses.
- A strict Content Security Policy blocks arbitrary scripts, frames, objects, and remote application code.
- Rust validates search terms, video IDs, channel IDs, browse IDs, and continuation tokens before network requests.
- Media is relayed through a tokenized loopback-only proxy instead of exposing a public local server.
- BotGuard and PO-token handling run through a native hidden WebView, with a packaged Node script retained only as a compatibility fallback.
Flow still contacts YouTube and optional services such as SponsorBlock, DeArrow, Return YouTube Dislike, and configured lyrics providers when their features are used.
Release builds are published through GitHub Releases.
- Stable: reviewed releases intended for normal use.
- Beta / RC: public GitHub prereleases for wider testing. These install as Flow Beta with isolated application data.
- Nightly: automatic snapshots from
main. These install as Flow Nightly, use isolated data, and may be unstable. Download the latest packages from GitHub Actions or nightly.link without a GitHub account.
| Platform | Supported versions | Architectures | Packages |
|---|---|---|---|
| Windows | Windows 10 22H2, Windows 11 | x64, ARM64 | NSIS installer |
| macOS | macOS 13 Ventura or later | Intel x64, Apple Silicon | DMG |
| Linux | Ubuntu 22.04+, Debian 12+, and comparable modern distributions | x64, ARM64 | AppImage, .deb, .rpm |
Linux builds require a compatible glibc, GTK 3, and WebKitGTK 4.1 environment. Legacy 32-bit systems are not supported.
On Linux, video decoding goes through WebKitGTK and the system GStreamer plugins (Windows and macOS ship their own decoders). If audio plays but video stays frozen on a spinner, a video decoder is missing.
- AppImage — bundles the required GStreamer codec plugins (including
gst-libavfor H.264); no system codec packages are needed. .deb— declares the codec plugins as dependencies. Install withsudo apt install ./Flow_*.debso they are pulled in automatically..rpm— the freely licensed plugins are hard dependencies. On Fedora, H.264 decoding (gstreamer1-libav,gstreamer1-plugins-bad-freeworld) is only available from RPM Fusion for patent reasons: enable RPM Fusion and runsudo dnf install gstreamer1-libav gstreamer1-plugins-bad-freeworld, or use the AppImage instead.
If the app opens to a blank or white window, that is usually the WebKitGTK DMABUF renderer failing on your graphics stack (common with NVIDIA proprietary drivers and some Wayland sessions). Flow disables it automatically and, if a launch still fails to render, escalates GPU workarounds on the next launch on its own: first forcing software compositing (WEBKIT_DISABLE_COMPOSITING_MODE=1), then falling back to X11/XWayland (GDK_BACKEND=x11). A clean launch resets this. You can still override any of these yourself — for example WEBKIT_DISABLE_DMABUF_RENDERER=0 to re-enable the DMABUF renderer.
If the app aborts on startup with Could not create default EGL display: EGL_BAD_PARAMETER (seen on some Arch-family / Mesa systems with the AppImage), that is a known Tauri AppImage packaging issue: a bundled libwayland client library conflicts with your system's newer Mesa/EGL stack. As an interim workaround, delete the bundled Wayland libraries and run the extracted app:
./Flow_*_linux_amd64.AppImage --appimage-extract
rm squashfs-root/usr/lib/*wayland*so*
./squashfs-root/AppRunOn Arch-family distributions the AUR package and the planned Flatpak build avoid this class of issue; prefer those when available.
Requirements: Node.js 22.12+, pnpm 11.9+, stable Rust, and the Tauri 2 prerequisites for your operating system.
pnpm install --frozen-lockfile
pnpm tauri devBuild packages for the current operating system:
pnpm test
pnpm build
pnpm tauri buildWindows, Linux, and macOS packages are built natively by the GitHub Actions release workflow. Production macOS and Windows releases should be signed and, on macOS, notarized before publication.
Flow is free and open-source software maintained by an independent developer. Patreon supports card, PayPal, Apple Pay, recurring support, and one-time tips.
You can also donate directly with crypto. Scan a QR code using a compatible wallet, or click it where custom wallet links are supported. The address and network are printed below every code — always verify both before sending.
Wallet URI support varies between wallet applications. Bitcoin, Ethereum, Solana, and Monero QR codes use their standard payment URI formats; the TRC20 code uses a Tron URI and may fall back to displaying the address in wallets that do not register the scheme.
Flow Desktop is free software licensed under the GNU General Public License v3.0.
This license requires that any project using Flow's source code, including the FlowNeuro engine, must also be released as open source under GPLv3. It may not be used in a proprietary or closed-source application.
Copyright © 2025–2026 A-EDev




