Cinephage

GPL-3.0-or-later
Platform
Docker Linux Web Self-hosted
Licence
GPL-3.0-or-later Open source
Cinephage

Cinephage is a self-hosted media management platform that replaces the usual *arr stack with a single application. Instead of running Radarr, Sonarr, Prowlarr, Bazarr and Overseerr as five separate services that have to be kept in sync, Cinephage puts movies, TV shows, indexers, subtitles, download clients and even live TV into one database, one configuration and one container. It ships as a Docker image on port 3000 and is written in TypeScript with a SvelteKit interface over a single-file SQLite database. The current release is v0.17.0 (September 2026); the project was started in November 2025 and is under very active development.

Key Features

  • One app instead of five — Movie and series management, indexer handling, subtitle search and content discovery live in the same codebase and the same SQLite file, so there is no API sync to break and no duplicated configuration.
  • Torrent, Usenet and streaming indexers — Newznab and Torznab indexers (so existing Jackett or Prowlarr setups still work), plus YAML-defined trackers with CSS-selector templates. Built-in definitions for Kinozal and Milkie.cc, and capability discovery via /api?t=caps.
  • Wide download client support — qBittorrent, Transmission, Deluge, rTorrent and aria2 for torrents; SABnzbd, NZBGet and NZB-Mount for Usenet. Path mapping handles the classic “client and manager see different paths” problem.
  • Stream without downloading — Generates .strm files that point at online sources so Jellyfin, Emby, Kodi or any .strm-capable player can play them instantly, with no disk usage and no seeding. Usenet streaming goes further and plays NZBs directly through a seekable stream with segment caching.
  • Built-in Cloudflare bypass — Camoufox is integrated, so there is no separate FlareSolverr container to run and wire up for trackers sitting behind a challenge.
  • Quality scoring and custom formats — Over 50 scoring factors including codec efficiency (x265, AV1), HDR formats, audio quality and release-group reputation, with custom formats for your own rules. A “prevent resolution downgrades” toggle blocks a higher-scored but lower-resolution replacement.
  • Smart lists and discovery — Import IMDb, Trakt or TMDb lists, or build your own queries (“all 2024 films rated 7.5+”) and have them added to the library automatically.
  • Subtitle automation — Around a dozen subtitle providers (OpenSubtitles, Addic7ed, SubDL and others) across 80+ languages, with forced and hearing-impaired handling and a native subtitle sync engine.
  • Live TV in the same database — Stalker portals (MAC authentication), XStream Codes accounts and plain M3U playlists, with XMLTV EPG, catch-up support, portal scanning for account discovery and an M3U output for external players.
  • Notifications and a real API — Jellyfin, Emby and Plex notifications; a REST API with API keys, Better Auth sessions, Zod request validation and rate limiting; TRaSH-compatible naming tokens for file and folder patterns.

What It Replaces

Radarr and Sonarr for library management, Prowlarr for indexers, Bazarr for subtitles, Overseerr for discovery and requests, and FlareSolverr for Cloudflare challenges. The *arr projects remain the mature, battle-tested option; Cinephage’s argument is architectural — one process, one database, one settings screen, rather than a set of services that each need their own backup, upgrade path and sync.

Requirements and Installation

You need a free TMDB API key from themoviedb.org (metadata comes from TMDb), a server with about 2GB of RAM, and a download client if you want to download rather than stream. The recommended install is Docker Compose using ghcr.io/moldytaint/cinephage:latest, with ./config for persistence, your media and download directories mounted as /media and /downloads, and a generated BETTER_AUTH_SECRET in .env. Never mount /app — it holds the application code. A bare-metal install on Node.js 22 or newer is documented too, including a systemd unit, and media info extraction uses the optional ffprobe.

Why Use Cinephage?

If you already run the *arr stack and it works, the honest answer is that migrating is a project, not a click. Cinephage appeals when the maintenance overhead itself is the problem: five containers, five upgrade cadences, five sets of logs, and a shared API key dance every time a service moves. Here the whole pipeline — search, grab, import, rename, subtitle, notify, and now stream or watch live TV — is one thing you back up by copying a SQLite file. The unglamorous details are covered too: failed-download cooldowns, delay profiles, blocklists, collections and tags, bulk editing and library maintenance tools.

Who It Is For

  • Homelab users who want the *arr feature set without the *arr sprawl, and are comfortable running one Docker container behind a reverse proxy.
  • People who mostly stream: .strm and NZB streaming turn it into a catalogue the media server can play without downloading anything.
  • Households mixing torrents, Usenet and IPTV, where one indexer and client list serves everything.
  • Anyone who wants TMDb browsing, smart lists and request-style discovery in the same interface as the library.

Worth Knowing Before You Start

The interface still carries a BETA label and the version numbers are 0.x, so expect the churn of a project that ships quickly — the docs are good, but read the release notes before upgrading. It is designed as a single-user application, not a multi-tenant instance for a group, and there is no mobile app (the web UI is responsive). Its live TV features depend entirely on third-party IPTV providers, and like every tool of this kind it stores no media itself: it manages files and links you already have access to.

Project documentation, including the Docker, indexer and live TV guides, is at docs.cinephage.net; the source is at github.com/MoldyTaint/Cinephage.

Explore More Categories

Sign In

Register

Reset Password

Please enter your username or email address, you will receive a link to create a new password via email.