Rangarr
Media ServersA lightweight orchestration service that automates 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 and v3
- Global slot allocation to efficiently distribute search capacity
- Smart staggering and proportional interleaving to avoid "thundering herd" issues
- Configurable weighted distribution, season‑pack grouping, independent scheduling, and retry logic
Recent releases
View all 20 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.
v0.7.1
Bug fix
Notable features
- `retry_interval_days_missing` and `retry_interval_days_upgrade` settings for independent retry windows
Full changelog
Added
retry_interval_days_missingandretry_interval_days_upgradesettings allow independent retry windows for missing and upgrade searches. When set, each overrides the baseretry_interval_daysfor its respective search type, enabling tighter retry pressure for missing content and looser cadence for upgrade polling (or vice versa). Both default tonull, which falls back toretry_interval_days.
Fixed
- Active hours window logging no longer spams the log when the remaining sleep duration is a sub-second fraction. The seconds-until-open calculation now uses ceiling division instead of truncation, ensuring at least one second is always slept. (#61)
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.