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 |
|---|---|---|
![]() |
![]() |
![]() |
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: https://opentubex.org
- Source: https://github.com/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.



Top comments (0)