No description
  • Rust 65.8%
  • Kotlin 18%
  • Swift 8.8%
  • JavaScript 3.8%
  • CSS 1.2%
  • Other 2.4%
Find a file
2026-10-18 17:00:20 +02:00
.forgejo/workflows release: require GPG-signed tags 2026-10-14 15:35:04 +02:00
assets/readme Add Matrix room button to the README 2026-09-03 12:10:40 +02:00
docs docs: add the video archive design and server requirements 2026-10-14 15:35:04 +02:00
invio-adwaita Merge pull request 'adwaita: make the channel refresh button respond while a tab load is in flight' (#6) from fix/adwaita-refresh-button into main 2026-10-18 03:10:18 +02:00
invio-android android: keep the paged feed stable across no-op refreshes 2026-10-18 15:17:18 +02:00
invio-core core: restore the per-instance permit budget after a feed sync 2026-10-17 13:51:19 +02:00
invio-mac mac: ask before enabling settings that contact Google or third parties 2026-10-16 12:16:40 +02:00
invio-server server: ask before enabling settings that contact Google or third parties 2026-10-16 12:16:40 +02:00
website website: add a CSP, referrer policy, and HTTPS setup guidance 2026-10-14 15:34:58 +02:00
.dockerignore Add self-hosted sync server and improve connection setup 2026-08-04 10:14:18 +02:00
.gitignore ci: pin actions, drop the privileged PR build, and clean up credentials 2026-10-14 15:34:58 +02:00
logo.png Paginate channel videos tab past the RSS feed window 2026-08-17 15:41:56 +02:00
README.md release: require GPG-signed tags 2026-10-14 15:35:04 +02:00

Invio

Follow the channels you care about, without the noise.

Download • Android • GNOME • Matrix


Community

Chat in #invio:salix.host on Matrix

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

Add Invio to Obtainium Download the latest Android APK

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

Add the Salix Flatpak repository

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.