Miguel PalhasandClaude Opus 5 e03b9695a0
ci / web (pull_request) Successful in 6s
ci / rust (pull_request) Successful in 1m14s
e2e / e2e (pull_request) Successful in 1m24s
feat(compat): Radarr v3 shim for Jellyseerr
Jellyseerr stays and keeps talking to what it thinks is a Radarr, so the
crate is a translation layer over the real domain and holds no state.

Two of Radarr's ideas are absorbed rather than passed on: policy attaches
to a root (DESIGN.md §5.1), so `qualityProfileId` on an add is read and
dropped and `rootFolderPath` decides which policy a request lands under;
and `searchForMovie` is dropped because the reconcile loop already
searches whatever is wanted (§8).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 20:51:25 +01:00
2026-08-22 20:22:23 +01:00
2026-08-22 19:20:47 +01:00
2026-08-22 19:20:47 +01:00

arr

One service that replaces Radarr and Sonarr, and later Bazarr, for a single household.

Five .NET services idle at 600-900 MB to run a loop with four steps in it: decide what you want, find it, fetch it, put it where Jellyfin can read it. Each has a configuration surface an order of magnitude larger than the subset anyone uses, and none of them share a model.

This is that loop, once, in Rust.

  • Prowlarr stays — it owns tracker auth, Cloudflare bypass and the indexer definitions, and replacing it buys nothing.
  • Transmission stays.
  • Jellyseerr stays, talking to a thin Radarr-compatible shim.

Status

Design complete, implementation not started. See DESIGN.md for the contract and the issue tracker for the work.

Documents

  • DESIGN.md — the contract. Domain model, policy engine, sourcing, import, crate layout, build order.
  • CLAUDE.md — repository conventions, label taxonomy, and how an autonomous driver session should sequence the work.
S
Description
No description provided
Readme
17 MiB
Languages
Rust 83.4%
TypeScript 11.5%
CSS 1.9%
Python 1.4%
HTML 1%
Other 0.8%