|
📺 Anime & Séries Multi-sources streaming, lecteur intégré |
📚 Manga & Novels Lecture hors-ligne, chapitres, marque-pages |
🎵 Musique Lecteur audio, playlists, sources JS |
🧩 Extensions JS Sources communautaires via QuickJS |
|
🌐 Cross-platform Android · iOS · Windows · Linux · macOS · Web |
🖥️ CLI headless Linux, CI et SSH sans interface graphique |
🔒 Anti-bot & TLS Rotation UA, TLS custom via Rust |
⚡ Torrent intégré Client BitTorrent Go, streaming HTTP |
watchtower/
├── lib/ ← Flutter app
│ ├── modules/ UI by media (anime, manga, music, novels, player)
│ ├── eval/ JS/Dart extension engine (QuickJS)
│ ├── remote/ Embedded HTTP server (shelf — port 4567)
│ ├── services/ Network, Aria2 downloads, anti-bot
│ ├── ffi/ C bindings → Go torrent server
│ └── src/rust/ Rust bindings (EPUB, image, custom TLS)
│
├── lib/cli/ ← Headless CLI on the real Watchtower runtime
├── scripts/install-linux-headless.sh
│
├── rust/ ← Rust library (flutter_rust_bridge 2.x)
└── go/ ← BitTorrent client + HTTP streaming server
| Mode | Files | When to use |
|---|---|---|
| Embedded | lib/remote/ — shelf port 4567 |
Installed app (phone / desktop) |
| Headless | watchtower --cli ... — real Flutter/QuickJS runtime |
CI, Linux servers, SSH… |
| Platform | How to get |
|---|---|
| Android (arm64) | Actions → Build Debug APK |
| Android (profile) | Actions → Build Profile APK |
| Android (release) | Actions → Build Release APK |
| Windows x64 | Actions → Build Windows x64 |
| Linux headless | watchtower-linux-x64-headless.7z via GitHub Actions |
| Web | watchtower-website-zeta.vercel.app/download |
The Linux build contains the same extension runtime as the desktop application. It can run without X11 or Wayland:
./watchtower --cli help
./watchtower --cli doctor --json
./watchtower --cli extensions list --repo ./watchtower-extensions
./watchtower --cli extensions list --repo ./watchtower-extensions \
--type watch --lang fr --include-unindexed
./watchtower --cli plugins list --repo ./watchtower-extensions
./watchtower --cli plugins validate --repo ./watchtower-extensions --json
./watchtower --cli extensions test \
--repo ./watchtower-extensions \
--type watch --lang fr --include-unindexed \
--mode smoke \
--report extensions.json
./watchtower --cli source 1900000002 inspect \
--repo ./watchtower-extensions --json
./watchtower --cli source 1900000002 search \
--repo ./watchtower-extensions \
--query "space opera" \
--filters-json '{"filters":[]}' \
--jsonThe Build Linux Headless CLI workflow publishes a .7z archive containing
the binary, Flutter runtime files, and the installer:
7z x watchtower-linux-x64-headless.7z -o./watchtower-linux
sudo ./watchtower-linux/install-linux-headless.sh ./watchtower-linux
# Or install as the current user:
./watchtower-linux/install-linux-headless.sh ./watchtower-linux \
--prefix "$HOME/.local/share/watchtower"load checks that the declared runtime can load each source and read its
filters, preferences and headers. smoke also calls popular/latest/search,
suggestions, details and the matching page, novel or video operation. deep
adds page-two and HTTP probes.
--lang fr filters by the effective source language. A language directory such
as src/watch/fr takes precedence over outdated lang fields in the index.
--include-unindexed explicitly adds JavaScript files under src/ that are
missing from the published index; it does not modify the catalog.
source exposes the available ExtensionService operations, including filters,
preferences, headers, custom lists, comments, recommendations and HTML. Use
--filters-json to pass filter values in Watchtower's type_name format.
Output, error messages and test reports redact common credentials and signed
URL parameters.
plugins list, plugins show and plugins validate only inspect the local
index/plugins.json catalogue. They do not install or execute plugins or
validate downloaded plugin binaries/manifests. Library, history, progress,
download queue and tracker commands are not available yet: the headless entry
point does not initialize Watchtower's Isar/Hive application stores.
Commands return 0 on success, 1 when a health/test/validation check fails,
and 2 for invalid command usage or an unhandled CLI operation error.
Prerequisites
- Flutter SDK 3.38+ / Dart 3.10+
- Rust (for flutter_rust_bridge bindings)
- Java 17 (Android builds)
- Go 1.21+ (optional — rebuild torrent client)
git clone https://github.com/ferelking242/watchtower.git
cd watchtower
flutter pub get
flutter run # dev
flutter build apk --release --target-platform android-arm64 # Android
flutter build windows # Windows
flutter build linux # Linux| Layer | Tech |
|---|---|
| UI / App | Flutter 3.38+, Dart 3.10+ |
| State | Riverpod 3.x |
| Local DB | Isar (community fork) |
| Prefs | Hive 2.x |
| Video | media_kit (fork communautaire) |
| Navigation | GoRouter 17.x |
| JS Extensions | QuickJS via FFI |
| Rust | flutter_rust_bridge 2.x |
| Go | Aria2 + torrent streaming |
| Server | Node.js 20 + Express + QuickJS VM |
| CI | GitHub Actions |
- Fork the repo
- Create your feature branch (
git checkout -b feat/my-feature) - Commit your changes
- Push to the branch and open a PR
Distributed under the Apache 2.0 License — see LICENSE.