Skip to content

Navigation Menu

Sign in
Sign up

How Nudgarr Works

MMagTech edited this page Mar 15, 2026 · 13 revisions

How Nudgarr Works

This page explains the sweep lifecycle in detail — how Nudgarr decides what to search, when to search it, and what happens with the results.


Overview

A sweep is one full pass across all enabled instances. Nudgarr runs sweeps on a cron schedule (or on demand via Run Now) and during each sweep it:

  1. Fetches the Cutoff Unmet list from each instance
  2. Filters out excluded titles and items already in the download queue
  3. Applies cooldown — skips anything searched too recently
  4. Picks up to the configured maximum from the eligible items
  5. Sends search requests to the arr app in batches
  6. Records each search in History with a timestamp
  7. Repeats for Backlog Nudges (if enabled)
  8. After the sweep completes, the import check loop polls independently to confirm successful downloads

Scheduling

Nudgarr uses a cron expression to determine when sweeps fire. The default is 0 */6 * * * — every 6 hours on the hour. You can change this in Settings, or set the scheduler to off and trigger sweeps manually with Run Now.

Key behaviours:

  • No startup sweep. Nudgarr does not sweep immediately on container start. The first sweep fires when the cron expression next matches.
  • No catch-up. If the container was stopped and missed several scheduled runs, those are not replayed on restart.
  • Timezone-aware. Set the TZ environment variable to make your cron schedule fire in local time.

The sweep lifecycle in detail

Step 1 — Fetch Cutoff Unmet

Nudgarr calls GET /api/v3/wanted/cutoff on each enabled Radarr instance and the equivalent on Sonarr. This returns the full list of items that have a file but have not reached the quality cutoff you configured in that app.

Step 2 — Apply exclusions

Any title that appears on the Exclusions list is removed before further processing. Exclusions are matched by title (case-insensitive).

Step 3 — Skip Queued

Nudgarr fetches the current download queue from each instance and removes any items whose IDs appear in that queue. This happens silently — queued items are never counted against the run's maximum. If 3 of your 5 Cutoff Unmet items are already downloading, Nudgarr searches the remaining 2 eligible ones (up to your Max per Run cap), not 2 minus 3.

Step 4 — Apply cooldown

Each item that has been searched before has a timestamp in the database. If that timestamp is within the configured Cooldown window, the item is skipped. The Sweep tab shows the count of items skipped for this reason in the On Cooldown stat.

Step 5 — Pick items

From the eligible items (not excluded, not queued, not on cooldown), Nudgarr picks up to Max per Run according to the configured Sample Mode — random, alphabetical, oldest added, or newest added.

Step 6 — Search

Nudgarr sends the selected items to the arr app's search endpoint in batches of Batch Size. Between batches it waits sleep_seconds plus a random amount up to jitter_seconds. This pacing prevents hammering indexers.

Step 7 — Record history

Every searched item is recorded in the SQLite database with the sweep type (Cutoff or Backlog), instance name, title, and timestamp. This record is what drives the cooldown check on future sweeps.

Step 8 — Backlog Nudges (if enabled)

If Backlog Nudges are enabled for Radarr or Sonarr, the same process repeats for missing items using the separate Missing Max cap and Missing Added Days age filter. Backlog and Cutoff searches are independent — they have separate counters and separate history entries. See Radarr & Sonarr Backlog.


Import tracking

Nudgarr runs an import check loop on its own independent timer (default: every 120 minutes). This loop polls each instance for recently imported files and matches them against previously searched items in the database. When a match is found, the item is recorded in the Imports tab.

The import loop runs regardless of whether a sweep has recently completed.

Turnaround time measures the gap between the first search timestamp (first_searched_ts) and the confirmed import. It is displayed in human-readable form: <1m, 4h 23m, 3d 14h, etc.

If the same item is imported more than once (e.g. a quality upgrade after an initial grab), an iteration counter is incremented and shown as a ×ばつ2 or ×ばつ3 badge in the Imports tab.


Cooldown and the History tab

The History tab shows every search Nudgarr has triggered, most recent first. Each row includes:

  • Title
  • Sweep type — Cutoff or Backlog
  • Instance name
  • Library added date (when the item was added to Radarr/Sonarr)
  • Search count (how many times Nudgarr has searched this item)
  • Last searched timestamp

You can sort by any column and filter by title. The ⊘ icon on any row adds the title to the Exclusions list.

State retention (default 180 days) prunes history entries older than the configured threshold. This keeps the database from growing indefinitely and also means cooldown records are eventually cleared for very old searches.


The Sweep tab

The Sweep tab shows a live view of the current or most recent sweep. For each enabled instance it displays:

Stat Meaning
Cutoff Unmet Total items in the Wanted → Cutoff Unmet list
On Cooldown Items skipped because they were searched too recently
Searched Items Nudgarr sent a search request for this run

The run indicator light blinks while a sweep is in progress and turns solid green when it completes (including all history writes).


Multiple instances

Nudgarr processes each enabled instance independently and in sequence. Each instance has its own health indicator — a failed instance does not block others from being swept. Cooldown tracking is per-instance, so searching an item in your main Radarr does not affect its cooldown state in a secondary Radarr.

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /