Redirecterr is a small, self-hosted webhook service that sits between Overseerr or Jellyseerr and your Radarr/Sonarr instances and decides where a request actually goes. When a user asks for a title and it lands in the pending-approval queue, Redirecterr receives the webhook, runs the request through a set of user-defined filters — keywords, genres, content ratings, requester, season count and dozens of other TMDB fields — and routes it to whichever instance matches: an anime library, a 4K library, a kids-safe set of root folders, or all of them at once.
media_type (movie or tv), an optional is_4k flag, a set of conditions and one or more target instances to apply them to.requestedBy_email/requestedBy_username, max_seasons, vote average and count, original language, spoken languages, networks, production companies, countries, release dates and more, all taken from the incoming Overseerr/Jellyseerr payload.require (all values must match), exclude (none may match) and include (at least one matches).sonarr and sonarr_4k in a single rule.approve toggle per instance.is_4k: true matches only 4K requests, false only non-4K, and leaving it empty matches both.config.yaml, logs go to a mounted directory, and there is no database to back up or migrate.Overseerr routes a request to one service per media type, which is fine until a library grows into separate anime, 4K and kids collections. After that the routing decision lives in someone’s head: the admin reads the pending list, works out that this is an anime series, and manually picks the instance with the right root folder. Redirecterr turns that judgement into a rules engine that runs on every incoming request, in milliseconds, with the same answer every time.
It also replaces the usual pile of per-user workarounds. Instead of granting broad auto-approval because triage is tedious, you keep requests pending and let the filters approve the harmless ones, while the rules that matter — no adult content for the kids profile, no 4K for the metered connection — are stated explicitly in a YAML file you can read, diff and version.
requestedBy_username and cap a heavy requester to short series with max_seasons.The container listens on port 8481 and exposes a single POST /webhook endpoint, so point your Overseerr webhook at http://redirecterr:8481/webhook. There is no web interface by design: the service is operated through its structured logs and its YAML configuration.
MIT — free and open source. The licence is declared as MIT in the project’s package.json; the repository does not ship a separate LICENSE file.