- Rust 65.8%
- Kotlin 18%
- Swift 8.8%
- JavaScript 3.8%
- CSS 1.2%
- Other 2.4%
|
All checks were successful
Build Android Nightly APK / apk (push) Successful in 5m24s
|
||
|---|---|---|
| .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 • Matrix
Community
Discussion happens in #invio:salix.host, which works from any Matrix client. If you do not have an account yet, you can create one on salix.host, my public homeserver: federated, encrypted by default, and no email address required.
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.
Web
Self-host Invio Web with Docker Compose to use Invio in your browser, with background feed collection. See the setup guide.
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 apps for watching YouTube content through Invidious or Direct YouTube. You pick your sources, Invio handles subscriptions, search, playback, Shorts, playlists, and history, all stored on hardware you control.
There is an Android app, a GNOME desktop app, a macOS app, and Invio Web, a self-hosted web application with background feed collection. The apps share one Rust core so they behave the same way underneath.
Features
- Direct YouTube. Browse channels and playlists, watch videos, read comments and replies, and refresh subscription feeds without an Invidious instance. Add it during setup or in Settings. See source ordering and request routing.
- 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, DeArrow, and Return YouTube Dislike. The shared core handles segment skipping, crowdsourced titles and thumbnails, and dislike counts on every platform, including the web app. Enable DeArrow in Settings. Its separate Tor switch routes both title and thumbnail requests.
- 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 |
| Invio Web | Any browser, from a server you host | 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 Invio Web 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. Release tags must be GPG-signed with
git tag -s vMAJOR.MINOR.PATCH, and the pipeline's validate job verifies each tag's signature
against the RELEASE_TAG_PUBLIC_KEY secret, which must hold the tag signer's armored public key.
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.





