Rangarr
Media ServersA lightweight service that orchestrates and staggers media searches across multiple *arr instances (Radarr, Sonarr, Lidarr, Readarr, Whisparr) to keep libraries complete without overloading indexers or hitting API limits.
Features
- Multi-instance support for Radarr, Sonarr, Lidarr, Readarr, Whisparr v2 & v3
- Global slot allocation and instance interleaving to avoid wasted search capacity
- Smart staggering and proportional interleaving of missing items vs upgrades
- Weighted distribution, season‑pack grouping, independent scheduling, retry logic, tag filtering, active‑hours windows
- Configurable via YAML or environment variables; no external connections or telemetry
Recent releases
View all 21 releases →
v0.7.4
Bug fix
Notable features
- `interleave_types` setting added to control interleaving of missing and upgrade searches
Full changelog
Added
interleave_typessetting controls whether missing and upgrade searches are interleaved in the execution queue. Whenfalse, all missing items are searched before any upgrade items begin, regardless of theinterleave_instancessetting. Defaults totrue(current behaviour). See the user guide for the full combination reference table.
Fixed
- Corrected an off-by-one error in the ETA calculation for staggered search batches. The ETA now reflects
N - 1stagger intervals forNitems, matching actual sleep behaviour. Single-item batches no longer display a stagger ETA.
v0.7.3
New feature
Notable features
- `interval_missing` and `interval_upgrade` settings allow independent fetch schedules for missing and upgrade searches, overriding the global `interval` when set (minimum 60 s).
- `fetch_page_size` default increased to 2000 records per API request (previously 1000), improving performance on large libraries.
Full changelog
Added
interval_missingandinterval_upgradesettings allow independent fetch schedules for missing and upgrade searches. When set, each overrides the globalintervalfor its respective search type, enabling aggressive polling for missing content alongside a slower upgrade cadence (or vice versa). Both default tonull, which falls back tointerval. Values must be at least 60 seconds. The cycle-complete log reports which type(s) ran and the next scheduled time for each.fetch_page_sizesetting controls how many records are fetched per API request when retrieving the wanted/missing and cutoff-unmet lists. Defaults to2000(previously hardcoded to1000). Higher values reduce round trips for large libraries at the cost of a slightly longer per-request time — benchmarked at 38% faster than the previous default on a 12,800-item library. Tune this setting if you have a very large library and the fetch phase is slow.
v0.7.2
Bug fix
Notable features
- `season_packs` now accepts integer or float thresholds in addition to boolean.
- ETA displayed on total search batch log line when `stagger_interval_seconds` > 0.
Full changelog
Added
season_packsnow accepts an integer or float in addition to a boolean. An integer (≥ 1) triggers aSeasonSearchonly when at least that many episodes in a season are missing or upgrade-eligible; a float (0.0 < x < 1.0) triggers aSeasonSearchonly when the ratio of affected to total monitored episodes meets or exceeds the value. Seasons that don't meet the threshold fall back to individualEpisodeSearchcommands. Existingtrue/falsebehaviour is unchanged.- The total search batch log line now includes an ETA when
stagger_interval_secondsis greater than zero. The ETA reflects the total time to complete all searches at the configured stagger rate (e.g.Total search batch: 120 item(s) (1 every 30 seconds, ETA: 1:00:00)).
Fixed
- Search counter display (
1/N,2/N, …) is now correct across multi-item queues built from multiple instances. Previously the counter could restart or skip values when items from more than one instance were interleaved.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.