Skip to content

About

Free & open-source manga · anime · series · music · novels hub — cross-platform, self-hostable, extensible via JS plugins

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

2,342 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Watchtower Banner

Build Debug APK Build Profile APK Build Release APK Build Linux Headless CLI

License Flutter Dart Rust Go Node.js

Typing SVG

✨ Fonctionnalités

📺 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

🏗️ Architecture

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…

📦 Download

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

🧰 Headless Linux CLI

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":[]}' \
  --json

The 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.


🛠️ Build locally

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

🧰 Tech Stack

Tech Stack

GitHub Stats

Top Languages

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

🤝 Contributing

  1. Fork the repo
  2. Create your feature branch (git checkout -b feat/my-feature)
  3. Commit your changes
  4. Push to the branch and open a PR

📄 License

Distributed under the Apache 2.0 License — see LICENSE.


Made with ❤️ by the Watchtower community

Footer

About

Free & open-source manga · anime · series · music · novels hub — cross-platform, self-hostable, extensible via JS plugins

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages