I got tired of maintaining a pile of YouTube userscripts, so I built my own YouTube client
I used to watch YouTube in Firefox with uBlock Origin, half a dozen extensions and 12 Violentmonkey userscripts. It worked, but every YouTube redesign broke something, and on my older laptop the YouTube page itself was sluggish.
So I've been building OpenTubeX, an open-source YouTube client for Windows, macOS, Linux, Android and experimental iOS/iPadOS builds. It never loads YouTube's website or its JavaScript, so it runs a lot smoother, and most of what I used extensions and userscripts for is built in:
- No ads and no Google account. Subscriptions, history and playlists stay on your device. (uBlock Origin)
- SponsorBlock and DeArrow (SponsorBlock extension)
- Default speed and quality, which can be overridden per channel, and theater mode as the default view (Video Speed Controller, Youtube Speed By Channel, YouTube Fixed Video Quality, YouTube - Always Theater Mode)
- Hide Shorts from your subscriptions and channel pages, or choose per channel whether videos, Shorts, live streams or posts show up in your feed
- Members-only videos stay hidden unless you turn them on for a channel you're subscribed to (Hide YouTube Members-Only)
- Original titles, descriptions and chapters instead of YouTube's auto-translations (YouTube No Translation)
- Jump from a live chat message to the sender's channel (YouTube Livechat GoToChannel)
- Downloads through yt-dlp
- Playlist autoplay you can turn off (YouTube Playlist Autoplay Button)
- Tabs, a queue and a mini-player that keeps playing while you browse
- Optional sync between devices, end-to-end encrypted
Most of the code is written by Claude Code and Codex. I decide what goes in, review it and test it, and every change has to pass an end-to-end test suite before it's merged.
It's free, AGPL-3.0 and still in beta.
- GitHub: OpenTubeX/OpenTubeX
- Downloads: opentubex.org
- Promo video (24 seconds): youtu.be
Feedback is welcome, especially from anyone else who's been customizing the hell out of the YouTube website.
1 point · 2 comments
OpenTubeX: a cross-platform open-source YouTube client (AGPL-3.0)
Repo: OpenTubeX/OpenTubeX
License: AGPL-3.0
Downloads: opentubex.org
preview.redd.it
preview.redd.it
OpenTubeX is a YouTube client for Windows, macOS, Linux and Android, with experimental iOS/iPadOS builds. It plays videos without ads or a Google account, never loads YouTube's own page or JavaScript, and keeps your subscriptions, history and playlists on your device.
Main features:
- Choose per channel whether videos, Shorts, live streams or posts show up in your feed
- Playback speed, quality and subtitles remembered per channel
- Tabs, a queue, and a mini-player that keeps playing while you browse
- SponsorBlock and DeArrow
- Optional recommendations, ranked on your device
- Optional sync between devices, end-to-end encrypted on a compatible server
- Downloads and playback from other sites through yt-dlp
Most of the code is written with Claude Code and Codex. I review and test the changes, and every PR runs unit tests, linting, CodeQL and a Playwright end-to-end suite before it's merged.
What I'm looking for:
- Bug reports and feature requests on GitHub
- Translations on Weblate: weblate.opentubex.org
- Feedback from new users on anything that's confusing
It's still in beta, so expect some rough edges.
3 points · 4 comments
Ten months of maintaining a YouTube client fork with AI coding agents
---
title: Ten months of maintaining a YouTube client fork with AI coding agents
published: true
tags: showdev, opensource, ai, privacy
cover_image: dev-to-uploads.s3.us-east-2.amazonaws.com
---
OpenTubeX is an open-source, privacy-focused YouTube client for Windows, macOS, Linux and Android, with experimental iOS builds. It started on December 30, 2025 as a fork of FreeTube, and I have developed it independently since then. You can watch without ads or a Google account, and your subscriptions, playlists and history stay on your device unless you turn on sync.
Most of the code since the fork was written by AI coding agents. I mostly used Claude and OpenAI's Codex through T3 Code. I chose what to build, reviewed the results and wrote the rules. This post covers the setup that keeps that working.
| Subscription feed | Watch page | Settings |
| --- | --- | --- |
| !Subscription feed | !Watch page | !Settings |
The numbers
Since the fork, as of October 29, 2026:
- about 3,790 commits on top of upstream
- 1,826 merged pull requests
- 68 releases
- about 3,100 end-to-end tests in 400 spec files, running against the packaged Electron app
The rules live in AGENTS.md
The repository has an AGENTS.md file that every agent reads before it starts. It is 87 lines long and has changed 63 times. When an agent gets something wrong, a rule goes into the file so the next one doesn't repeat it. It now covers testing, pull requests, translations, UI checks and dependency updates. Two examples:
Show the result. For every visual change, the agent has to attach a screenshot before it reports the work as done, or a short recording if the change involves animation or interaction. Passing tests don't show whether a change looks right.
Test at more than one UI scale. The UI Scale setting changes Electron's zoom factor, so positions and scroll offsets can land on fractional pixels. Agents kept treating those fractional values as errors and writing layout code that only worked at 100%. Tests that check layout or scrolling are now tagged @scale, and CI reruns them at 95% and 125%.
Tests do most of the work
Reviewing thousands of diffs by hand doesn't work, so the test suite carries most of the load. On every pull request, CI runs all the E2E tests against the packaged app. Tests changed in a PR run five times without retries, which catches most flaky tests before they merge.
Translations
Human translators work on Weblate. For languages they haven't finished yet, the app can show AI-generated translations, and an AI translation is dropped as soon as a human one exists. An agent that adds a string writes the English and German versions and the AI completions for the other active locales.
Try it
- Website and downloads: opentubex.org
- Source: OpenTubeX/OpenTubeX
The app is in beta. Bug reports and feature requests on GitHub help a lot.
---
I wrote this post with help from an AI assistant and edited it myself.
OpenTubeX: an open-source YouTube client for Windows, macOS, Linux and Android, with encrypted sync between them (AGPL-3.0)
Source: OpenTubeX/OpenTubeX
Downloads: opentubex.org
Processing img 9qjxini616yh1...
Processing img u0cfvaj616yh1...
OpenTubeX is for people who want to watch YouTube without ads or a Google account. It doesn't load YouTube's website or its JavaScript, and your subscriptions, playlists and history stay on your device. It's AGPL-3.0 and still in beta.
What it adds. The open-source YouTube clients I know of each cover one platform. OpenTubeX runs on Windows, macOS, Linux and Android from one codebase, has experimental iOS/iPadOS builds, and can sync your library between your devices. Sync is end-to-end encrypted on a compatible server, and you pair a new device with a QR code. It also combines features I haven't found together in another client:
- Browser-style tabs with pinning and grouping, a queue, and a mini-player that keeps playing while you browse
- Per-channel feed controls for videos, Shorts, live streams and posts, plus per-channel playback speed, quality and subtitles
- Optional recommendations, ranked on your device from your watch history and feedback
- SponsorBlock, including submitting segments from the player, and DeArrow
- Downloads and playback from other sites through yt-dlp
- Themes, a configurable Home page, a command palette and gamepad navigation
How it's built. AI agents wrote most of the code, mostly Claude Code and Codex. I decide what goes in, review and test the changes, and send them back when they're wrong. Every PR runs unit tests, linting, CodeQL and a Playwright end-to-end suite against the desktop app, and Android changes get tested on an emulator. Each PR description names the model that made it. The project has been in daily development since January 2026, with nightly builds.
You can install it through WinGet, Homebrew, APT, RPM/COPR, Flatpak, Snap, Nix or the AUR. On Android, use our F-Droid repo or Obtainium.
Bug reports and questions are welcome.
10 points · 11 comments
I made OpenTubeX, an open-source YouTube client for desktop and Android (no ads, no Google account, AGPL-3.0)
I've been building OpenTubeX, a YouTube client for Windows, macOS, Linux and Android, with experimental iOS builds. You can watch without ads or a Google account, and your subscriptions, playlists and history stay on your device unless you turn on sync.
Most of the code is written by Claude Code and Codex. My part is deciding what goes in, testing it, and sending it back when it's wrong. Every change also has to pass an end-to-end test suite before it gets merged.
Some of the things it does:
- Subscribe to channels without an account and group them into profiles
- Choose per channel whether videos, Shorts, live streams or posts show up in your feed
- SponsorBlock and DeArrow
- Per-channel playback speed and quality, custom shortcuts, skip silence
- Tabs, a queue, and a mini-player that keeps playing while you browse
- Themes and a configurable Home page
- Optional sync between devices, end-to-end encrypted on a compatible server
- Plays from other sites yt-dlp supports too
It's still in beta. You can get it as a Flatpak, Snap, the AUR, WinGet, Homebrew and more, or on Android through our own F-Droid repo or Obtainium.
- Source code: OpenTubeX/OpenTubeX
- Downloads: opentubex.org
Happy to answer questions, including how building it with agents has gone.
18 points · 7 comments
OpenTubeX – An open-source YouTube client focused on privacy
OpenTubeX is an open-source YouTube client for Windows, macOS, Linux and Android, with experimental iOS support.
It lets you watch YouTube without a Google account, keep subscriptions and watch history locally, and customize your experience with features like SponsorBlock, DeArrow and subscription profiles.
GitHub: OpenTubeX/OpenTubeX
71 points · 9 comments
Mentions
I got tired of maintaining a pile of YouTube userscripts, so I built my own YouTube client I used to watch YouTube in Firefox with uBlock Origin, half a dozen extensions and 12 Violentmonkey userscripts. It worked, but every YouTube redesign broke something, and on my older laptop the YouTube page itself was sluggish. So I've been building OpenTubeX, an open-source YouTube client for Windows, macOS, Linux, Android and experimental iOS/iPadOS builds. It never loads YouTube's website or its JavaScript, so it runs a lot smoother, and most of what I used extensions and userscripts for is built in: - No ads and no Google account. Subscriptions, history and playlists stay on your device. (uBlock Origin) - SponsorBlock and DeArrow (SponsorBlock extension) - Default speed and quality, which can be overridden per channel, and theater mode as the default view (Video Speed Controller, Youtube Speed By Channel, YouTube Fixed Video Quality, YouTube - Always Theater Mode) - Hide Shorts from your subscriptions and channel pages, or choose per channel whether videos, Shorts, live streams or posts show up in your feed - Members-only videos stay hidden unless you turn them on for a channel you're subscribed to (Hide YouTube Members-Only) - Original titles, descriptions and chapters instead of YouTube's auto-translations (YouTube No Translation) - Jump from a live chat message to the sender's channel (YouTube Livechat GoToChannel) - Downloads through yt-dlp - Playlist autoplay you can turn off (YouTube Playlist Autoplay Button) - Tabs, a queue and a mini-player that keeps playing while you browse - Optional sync between devices, end-to-end encrypted Most of the code is written by Claude Code and Codex. I decide what goes in, review it and test it, and every change has to pass an end-to-end test suite before it's merged. It's free, AGPL-3.0 and still in beta. - GitHub: OpenTubeX/OpenTubeX - Downloads: opentubex.org - Promo video (24 seconds): youtu.be Feedback is welcome, especially from anyone else who's been customizing the hell out of the YouTube website.
OpenTubeX: a cross-platform open-source YouTube client (AGPL-3.0) Repo: OpenTubeX/OpenTubeX License: AGPL-3.0 Downloads: opentubex.org preview.redd.it preview.redd.it OpenTubeX is a YouTube client for Windows, macOS, Linux and Android, with experimental iOS/iPadOS builds. It plays videos without ads or a Google account, never loads YouTube's own page or JavaScript, and keeps your subscriptions, history and playlists on your device. Main features: - Choose per channel whether videos, Shorts, live streams or posts show up in your feed - Playback speed, quality and subtitles remembered per channel - Tabs, a queue, and a mini-player that keeps playing while you browse - SponsorBlock and DeArrow - Optional recommendations, ranked on your device - Optional sync between devices, end-to-end encrypted on a compatible server - Downloads and playback from other sites through yt-dlp Most of the code is written with Claude Code and Codex. I review and test the changes, and every PR runs unit tests, linting, CodeQL and a Playwright end-to-end suite before it's merged. What I'm looking for: - Bug reports and feature requests on GitHub - Translations on Weblate: weblate.opentubex.org - Feedback from new users on anything that's confusing It's still in beta, so expect some rough edges.
Ten months of maintaining a YouTube client fork with AI coding agents --- title: Ten months of maintaining a YouTube client fork with AI coding agents published: true tags: showdev, opensource, ai, privacy cover_image: dev-to-uploads.s3.us-east-2.amazonaws.com --- OpenTubeX is an open-source, privacy-focused YouTube client for Windows, macOS, Linux and Android, with experimental iOS builds. It started on December 30, 2025 as a fork of FreeTube, and I have developed it independently since then. You can watch without ads or a Google account, and your subscriptions, playlists and history stay on your device unless you turn on sync. Most of the code since the fork was written by AI coding agents. I mostly used Claude and OpenAI's Codex through T3 Code. I chose what to build, reviewed the results and wrote the rules. This post covers the setup that keeps that working. | Subscription feed | Watch page | Settings | | --- | --- | --- | | !Subscription feed | !Watch page | !Settings | The numbers Since the fork, as of October 29, 2026: - about 3,790 commits on top of upstream - 1,826 merged pull requests - 68 releases - about 3,100 end-to-end tests in 400 spec files, running against the packaged Electron app The rules live in AGENTS.md The repository has an AGENTS.md file that every agent reads before it starts. It is 87 lines long and has changed 63 times. When an agent gets something wrong, a rule goes into the file so the next one doesn't repeat it. It now covers testing, pull requests, translations, UI checks and dependency updates. Two examples: Show the result. For every visual change, the agent has to attach a screenshot before it reports the work as done, or a short recording if the change involves animation or interaction. Passing tests don't show whether a change looks right. Test at more than one UI scale. The UI Scale setting changes Electron's zoom factor, so positions and scroll offsets can land on fractional pixels. Agents kept treating those fractional values as errors and writing layout code that only worked at 100%. Tests that check layout or scrolling are now tagged @scale, and CI reruns them at 95% and 125%. Tests do most of the work Reviewing thousands of diffs by hand doesn't work, so the test suite carries most of the load. On every pull request, CI runs all the E2E tests against the packaged app. Tests changed in a PR run five times without retries, which catches most flaky tests before they merge. Translations Human translators work on Weblate. For languages they haven't finished yet, the app can show AI-generated translations, and an AI translation is dropped as soon as a human one exists. An agent that adds a string writes the English and German versions and the AI completions for the other active locales. Try it - Website and downloads: opentubex.org - Source: OpenTubeX/OpenTubeX The app is in beta. Bug reports and feature requests on GitHub help a lot. --- I wrote this post with help from an AI assistant and edited it myself.
OpenTubeX: an open-source YouTube client for Windows, macOS, Linux and Android, with encrypted sync between them (AGPL-3.0) Source: OpenTubeX/OpenTubeX Downloads: opentubex.org Processing img 9qjxini616yh1... Processing img u0cfvaj616yh1... OpenTubeX is for people who want to watch YouTube without ads or a Google account. It doesn't load YouTube's website or its JavaScript, and your subscriptions, playlists and history stay on your device. It's AGPL-3.0 and still in beta. What it adds. The open-source YouTube clients I know of each cover one platform. OpenTubeX runs on Windows, macOS, Linux and Android from one codebase, has experimental iOS/iPadOS builds, and can sync your library between your devices. Sync is end-to-end encrypted on a compatible server, and you pair a new device with a QR code. It also combines features I haven't found together in another client: - Browser-style tabs with pinning and grouping, a queue, and a mini-player that keeps playing while you browse - Per-channel feed controls for videos, Shorts, live streams and posts, plus per-channel playback speed, quality and subtitles - Optional recommendations, ranked on your device from your watch history and feedback - SponsorBlock, including submitting segments from the player, and DeArrow - Downloads and playback from other sites through yt-dlp - Themes, a configurable Home page, a command palette and gamepad navigation How it's built. AI agents wrote most of the code, mostly Claude Code and Codex. I decide what goes in, review and test the changes, and send them back when they're wrong. Every PR runs unit tests, linting, CodeQL and a Playwright end-to-end suite against the desktop app, and Android changes get tested on an emulator. Each PR description names the model that made it. The project has been in daily development since January 2026, with nightly builds. You can install it through WinGet, Homebrew, APT, RPM/COPR, Flatpak, Snap, Nix or the AUR. On Android, use our F-Droid repo or Obtainium. Bug reports and questions are welcome.
I made OpenTubeX, an open-source YouTube client for desktop and Android (no ads, no Google account, AGPL-3.0) I've been building OpenTubeX, a YouTube client for Windows, macOS, Linux and Android, with experimental iOS builds. You can watch without ads or a Google account, and your subscriptions, playlists and history stay on your device unless you turn on sync. Most of the code is written by Claude Code and Codex. My part is deciding what goes in, testing it, and sending it back when it's wrong. Every change also has to pass an end-to-end test suite before it gets merged. Some of the things it does: - Subscribe to channels without an account and group them into profiles - Choose per channel whether videos, Shorts, live streams or posts show up in your feed - SponsorBlock and DeArrow - Per-channel playback speed and quality, custom shortcuts, skip silence - Tabs, a queue, and a mini-player that keeps playing while you browse - Themes and a configurable Home page - Optional sync between devices, end-to-end encrypted on a compatible server - Plays from other sites yt-dlp supports too It's still in beta. You can get it as a Flatpak, Snap, the AUR, WinGet, Homebrew and more, or on Android through our own F-Droid repo or Obtainium. - Source code: OpenTubeX/OpenTubeX - Downloads: opentubex.org Happy to answer questions, including how building it with agents has gone.
OpenTubeX – An open-source YouTube client focused on privacy OpenTubeX is an open-source YouTube client for Windows, macOS, Linux and Android, with experimental iOS support. It lets you watch YouTube without a Google account, keep subscriptions and watch history locally, and customize your experience with features like SponsorBlock, DeArrow and subscription profiles. GitHub: OpenTubeX/OpenTubeX