- Rust 62.3%
- Kotlin 20.3%
- Swift 8.9%
- HTML 5.4%
- CSS 1.1%
- Other 2%
- Fall back to authorThumbnails array when authorThumbnail is absent - Skip thumbnail entries with missing url or failed proxying - Add test for legacy thumbnail array parsing |
||
|---|---|---|
| .forgejo/workflows | ||
| assets/readme | ||
| docs | ||
| invio-adwaita | ||
| invio-android | ||
| invio-core | ||
| invio-mac | ||
| invio-server | ||
| website | ||
| .dockerignore | ||
| .gitignore | ||
| logo.png | ||
| README.md | ||
Invio
Follow the channels you care about, without the noise.
Download • Android • GNOME • macOS • Core
Download Invio
Android
Obtainium is the recommended option because it installs updates directly from Invio releases. The APK button opens the latest release for a manual download. Invio is not available through Google Play.
Linux
Open the Flatpak repository button with GNOME Software or Discover, then install Invio from the
new Salix source. The repository is signed and provides updates for the stable app as well as the
separately installable nightly build. These packages currently support x86_64 only. If your
software center does not handle the button, use:
flatpak remote-add --if-not-exists salix https://salix.host/flatpak/salix.flatpakrepo
flatpak install salix app.invidious.Invio
AppImage builds were discontinued after Invio 1.1.6 because their packaging toolchain was not reliable enough to maintain. Existing AppImages remain available in older releases but do not receive updates.
macOS
There is no packaged macOS download yet. See the macOS project to build the app from source.
Screenshots
Description
Invio is a set of native apps for watching YouTube content through Invidious. You pick the instances you trust, Invio deals with the rest: subscriptions, search, playback, Shorts, playlists, and history, all stored locally on your own devices.
There is an Android app, a GNOME desktop app, and a macOS app. They look and feel like the platform they run on, and they share one Rust core so they behave the same way underneath.
Features
- Survives flaky instances. Instances are tried in the order you set, health is tracked per instance, and a browser check is solved in a real web view and reused, so one bad server does not end your session.
- A feed you can shape. Group subscriptions into categories, and decide per channel whether its videos, its Shorts, or both belong in the feed.
- Watch statistics. Watch time by day, week, or month, your top channels, and how much of it goes to Shorts instead of full videos.
- SponsorBlock and Return YouTube Dislike. Both run through the shared core, so segment skipping and dislike counts behave the same on every platform.
- Your data stays yours. Everything lives in a local SQLite database with backup and restore in a format all three apps read. Optional sync goes through your own WebDAV server or folder, with no account and no service in the middle.
- A remote Video Archive Library. Preserve videos in a separately configured, safety-probed WebDAV folder and stream them through an authenticated in-app range proxy. See the archive design and server requirements.
- Private by choice. Route all in-app traffic through Tor when you want to, and proxy media through the instance instead of fetching it from Google directly.
Install
| App | Best for | Built with | How to get it |
|---|---|---|---|
| Android | Phones, tablets, foldables | Kotlin, Compose, Media3 | APK on the releases page or via Obtainium |
| GNOME | Linux desktops | Rust, GTK, libadwaita, GStreamer | Flatpak from the signed Salix repository |
| Server | Self-hosted household feed collector | Rust, Axum, SQLite, Docker | Docker Compose or release image archive |
| macOS | Macs | SwiftUI, AppKit, VLCKit | Builds from source for now |
| Core | Everything shared | Rust, SQLite, UniFFI | Used by the apps above |
Each project README covers install, build, and what is actually implemented today.
Contributions
I'm not currently accepting contributions, but issues are welcome for bug reports, feature ideas, and other feedback.
Releases
Releases use a shared vMAJOR.MINOR.PATCH tag. Pushing the tag runs the unified
.forgejo/workflows/release.yml pipeline, which verifies the checked-in versions, builds Android,
Linux, and server deliverables, and publishes one Forgejo release only after every job succeeds.
Name the tagged version-bump commit Release Invio MAJOR.MINOR.PATCH; the nightly workflows skip
that commit so the release jobs get the runner first.
The signed Salix Flatpak repository publishes stable x86_64 and ARM64 builds plus a separately
installable x86_64 nightly. Older component-prefixed tags such as core-v1.0.6 and
adwaita-v1.0.6 are kept for history.
Disclaimer and license status
Invio is a personal project, built for daily use and experimentation. Invio, its source code, and all downloadable builds are provided as is, without warranties of any kind, express or implied. You use them entirely at your own risk. To the fullest extent permitted by applicable law, the author will not be liable for any claim, loss, damage, data loss, service interruption, or other consequence resulting from the use, misuse, or inability to use Invio.
No support commitments, compatibility guarantees, or release schedule are provided. You are responsible for complying with applicable laws and third-party terms when using Invio. The project is not affiliated with YouTube, Google, Invidious, SponsorBlock, or Return YouTube Dislike.
The code is source available for reading and reference. It is not open source licensed, so unless a license is added later, no permission is granted to reuse, redistribute, or relicense it.





