Native app for Windows, Linux, and Android TV for browsing a movie catalog and watching in one window. TMDB for discovery, Jackett or Prowlarr for releases, TorrServer for streaming.
Rust
44
125 commits
updated Oct 3, 2026

English | Русский
What and why | Features | How it works | Install | Architecture | Roadmap | Contributing | Disclaimer

Cinebox is a native app for Windows, Linux, and Android TV. Movie and series catalog, torrent search, and playback in one window: no browser, no extra player.
The stack is the same one people already use in LAMPA MX: TMDB, Jackett or Prowlarr, TorrServer. LAMPA is a website. It runs in a browser or a WebView, the built-in player handles few codecs and often stutters, so the stream almost always ends up in VLC or MPC-HC. The browser also eats RAM on its own.
TMDB is a separate story. In regions where api.themoviedb.org is DNS-blocked (including Russia), LAMPA goes through someone else's TMDB proxy. Cinebox talks to TMDB itself. If regular DNS cannot resolve the host, built-in DNS-over-HTTPS kicks in: you can set your own server, otherwise Quad9 / DNS.SB / AliDNS. No extra plugin and no third-party proxy.
Catalog
Playback
App
Android TV
flowchart LR
UI[Cinebox] --> TMDB[TMDB]
UI --> Parser[Jackett / Prowlarr]
Parser --> TS[TorrServer]
TS --> Player[libmpv / ExoPlayer]
UI --> YT[YouTube trailers]
YT --> Player
TMDB -.-> DoH[DoH if DNS is blocked]
Parser -.-> DoH
Get a build from GitHub Releases:
Windows x64: unpack the zip and run cinebox.exe. Settings and the database stay in that folder.
Linux x86_64, pick one:
flatpak install --user cinebox-*.flatpak. Shows up in the app menu and in GNOME Software or Discover; the runtime and codecs come from Flathub. To update, install the newer file over it. Settings and the database live in ~/.var/app/io.github.dexsper.cinebox/.sudo apt install ./cinebox_*.deb. Uses the system libmpv.chmod +x and run. libmpv is inside. For a menu entry and updates, open it with Gear Lever or AppImageLauncher, like any other AppImage.Outside Flatpak, settings go to ~/.config/cinebox and the database to ~/.local/share/cinebox.
Android TV (Android 8.0+, ARM): install cinebox-*-android.apk.
Cinebox does not ship TMDB, a parser, or TorrServer. You run those yourself:
| What | Settings | Typical URL |
|---|---|---|
| TMDB API key | TMDB | - |
| Jackett or Prowlarr | Parser | http://127.0.0.1:9117 |
| TorrServer | TorrServer | http://127.0.0.1:8090 |
On Android TV, 127.0.0.1 works only for what runs on the TV itself; for a server on another machine, use its LAN address.
[!IMPORTANT] TMDB wants the short API key (32 hex characters). A JWT access token will not work here.
On first launch, open Settings (gear) and fill in the key and URLs. Same screen can check the TMDB key, the parser, and ping TorrServer. If the catalog is empty because TMDB is blocked, leave DNS bypass on: it is on by default.
For hacking on the code, or if there is no release yet.
lib.exe on PATH). The first build downloads libmpv (about 30 MB) into crates/cinebox-player/mpv-src/.pkg-config, and the system libmpv 0.35+ with headers.
sudo apt install build-essential pkg-config libmpv-devsudo pacman -S --needed base-devel mpvgit clone https://github.com/dexsper/cinebox.git
cd cinebox
cargo run -p cinebox --release
cargo test --workspace.Linux packages: cargo install cargo-deb && cargo deb -p cinebox builds the .deb. The Flatpak builds offline from packaging/flatpak/ (needs org.flatpak.Builder); after changing Cargo.lock, run ./scripts/flatpak-cargo-sources.sh and commit the refreshed cargo-sources.json.
flatpak run org.flatpak.Builder --user --install --install-deps-from=flathub --force-clean \
.flatpak-builder/build-dir packaging/flatpak/io.github.dexsper.cinebox.yml
Android TV APK: JDK 17+, the Android SDK with NDK r28 (ANDROID_HOME), the Rust targets aarch64-linux-android and armv7-linux-androideabi, and cargo install cargo-ndk --locked.
./scripts/android-build.sh debug
Without debug it builds the release APK, signed when ANDROID_KEYSTORE_PATH, ANDROID_KEYSTORE_PASSWORD, ANDROID_KEY_ALIAS, and ANDROID_KEY_PASSWORD are set.
The repo is split into crates. The window and screens live in cinebox, the rest are libraries.
| Crate | What it does |
|---|---|
cinebox | Window (egui/eframe), screens, translations |
cinebox-core | Models, settings.json, SQLite (cache, history, lists) |
cinebox-tmdb | TMDB requests, section shelves, discover queries |
cinebox-net | HTTP: proxy, DoH, retries |
cinebox-indexer | Jackett and Prowlarr, release-name parse, voices, filters |
cinebox-torrserver | TorrServer client, file/episode parse |
cinebox-player | libmpv over OpenGL; ExoPlayer on Android TV |
cinebox-youtube | YouTube InnerTube and signature decipher for the player |
cinebox-skip | Skip-segment data (TheIntroDB; extensible for other sources) |
cinebox-typograf | Title typography (ru / en-US) |
cinebox-android | Android TV entry point; the Java side (ExoPlayer, MediaSession, voice input, keyboard) is in android/ |
Bugs and ideas go in Issues. Code changes go through a pull request.
master.cargo test --workspace before you push.settings.json, or sqlite files.If you touched SQLx query! or migrations, refresh offline data with scripts/sqlx-prepare
Cinebox is a media player and a catalog. It does not host, upload, or distribute copyrighted content. Users are responsible for what they open and for following the law. This product uses the TMDB API but is not endorsed or certified by TMDB.
Rust
96.5%
Java
3.1%
Native app for Windows, Linux, and Android TV for browsing a movie catalog and watching in one window. TMDB for discovery, Jackett or Prowlarr for releases, TorrServer for streaming.
Rust
44
125 commits
updated Oct 3, 2026

English | Русский
What and why | Features | How it works | Install | Architecture | Roadmap | Contributing | Disclaimer

Cinebox is a native app for Windows, Linux, and Android TV. Movie and series catalog, torrent search, and playback in one window: no browser, no extra player.
The stack is the same one people already use in LAMPA MX: TMDB, Jackett or Prowlarr, TorrServer. LAMPA is a website. It runs in a browser or a WebView, the built-in player handles few codecs and often stutters, so the stream almost always ends up in VLC or MPC-HC. The browser also eats RAM on its own.
TMDB is a separate story. In regions where api.themoviedb.org is DNS-blocked (including Russia), LAMPA goes through someone else's TMDB proxy. Cinebox talks to TMDB itself. If regular DNS cannot resolve the host, built-in DNS-over-HTTPS kicks in: you can set your own server, otherwise Quad9 / DNS.SB / AliDNS. No extra plugin and no third-party proxy.
Catalog
Playback
App
Android TV
flowchart LR
UI[Cinebox] --> TMDB[TMDB]
UI --> Parser[Jackett / Prowlarr]
Parser --> TS[TorrServer]
TS --> Player[libmpv / ExoPlayer]
UI --> YT[YouTube trailers]
YT --> Player
TMDB -.-> DoH[DoH if DNS is blocked]
Parser -.-> DoH
Get a build from GitHub Releases:
Windows x64: unpack the zip and run cinebox.exe. Settings and the database stay in that folder.
Linux x86_64, pick one:
flatpak install --user cinebox-*.flatpak. Shows up in the app menu and in GNOME Software or Discover; the runtime and codecs come from Flathub. To update, install the newer file over it. Settings and the database live in ~/.var/app/io.github.dexsper.cinebox/.sudo apt install ./cinebox_*.deb. Uses the system libmpv.chmod +x and run. libmpv is inside. For a menu entry and updates, open it with Gear Lever or AppImageLauncher, like any other AppImage.Outside Flatpak, settings go to ~/.config/cinebox and the database to ~/.local/share/cinebox.
Android TV (Android 8.0+, ARM): install cinebox-*-android.apk.
Cinebox does not ship TMDB, a parser, or TorrServer. You run those yourself:
| What | Settings | Typical URL |
|---|---|---|
| TMDB API key | TMDB | - |
| Jackett or Prowlarr | Parser | http://127.0.0.1:9117 |
| TorrServer | TorrServer | http://127.0.0.1:8090 |
On Android TV, 127.0.0.1 works only for what runs on the TV itself; for a server on another machine, use its LAN address.
[!IMPORTANT] TMDB wants the short API key (32 hex characters). A JWT access token will not work here.
On first launch, open Settings (gear) and fill in the key and URLs. Same screen can check the TMDB key, the parser, and ping TorrServer. If the catalog is empty because TMDB is blocked, leave DNS bypass on: it is on by default.
For hacking on the code, or if there is no release yet.
lib.exe on PATH). The first build downloads libmpv (about 30 MB) into crates/cinebox-player/mpv-src/.pkg-config, and the system libmpv 0.35+ with headers.
sudo apt install build-essential pkg-config libmpv-devsudo pacman -S --needed base-devel mpvgit clone https://github.com/dexsper/cinebox.git
cd cinebox
cargo run -p cinebox --release
cargo test --workspace.Linux packages: cargo install cargo-deb && cargo deb -p cinebox builds the .deb. The Flatpak builds offline from packaging/flatpak/ (needs org.flatpak.Builder); after changing Cargo.lock, run ./scripts/flatpak-cargo-sources.sh and commit the refreshed cargo-sources.json.
flatpak run org.flatpak.Builder --user --install --install-deps-from=flathub --force-clean \
.flatpak-builder/build-dir packaging/flatpak/io.github.dexsper.cinebox.yml
Android TV APK: JDK 17+, the Android SDK with NDK r28 (ANDROID_HOME), the Rust targets aarch64-linux-android and armv7-linux-androideabi, and cargo install cargo-ndk --locked.
./scripts/android-build.sh debug
Without debug it builds the release APK, signed when ANDROID_KEYSTORE_PATH, ANDROID_KEYSTORE_PASSWORD, ANDROID_KEY_ALIAS, and ANDROID_KEY_PASSWORD are set.
The repo is split into crates. The window and screens live in cinebox, the rest are libraries.
| Crate | What it does |
|---|---|
cinebox | Window (egui/eframe), screens, translations |
cinebox-core | Models, settings.json, SQLite (cache, history, lists) |
cinebox-tmdb | TMDB requests, section shelves, discover queries |
cinebox-net | HTTP: proxy, DoH, retries |
cinebox-indexer | Jackett and Prowlarr, release-name parse, voices, filters |
cinebox-torrserver | TorrServer client, file/episode parse |
cinebox-player | libmpv over OpenGL; ExoPlayer on Android TV |
cinebox-youtube | YouTube InnerTube and signature decipher for the player |
cinebox-skip | Skip-segment data (TheIntroDB; extensible for other sources) |
cinebox-typograf | Title typography (ru / en-US) |
cinebox-android | Android TV entry point; the Java side (ExoPlayer, MediaSession, voice input, keyboard) is in android/ |
Bugs and ideas go in Issues. Code changes go through a pull request.
master.cargo test --workspace before you push.settings.json, or sqlite files.If you touched SQLx query! or migrations, refresh offline data with scripts/sqlx-prepare
Cinebox is a media player and a catalog. It does not host, upload, or distribute copyrighted content. Users are responsible for what they open and for following the law. This product uses the TMDB API but is not endorsed or certified by TMDB.
Rust
96.5%
Java
3.1%