Releases: o51r15/inspectarr
Release list
v2.0.0
Full Changelog: v1.6.0...v2.0.0
v1.6.0
Full Changelog: v.1.5.0...v1.6.0
Full Changelog: v.1.5.0...v1.6.0
v.1.5.0
Full Changelog: v.1.4.0...v.1.5.0
Full Changelog: v.1.4.0...v.1.5.0
v.1.4.0
Full Changelog: V1.2.5...v.1.4.0
Full Changelog: V1.2.5...v.1.4.0
V1.2.5
v1.2.0
v1.1.1
What's Changed
Bug Fix — Indexer Scoring: Response Time and Success Rate
All indexers were reporting identical response time and success rate values (e.g. 2157.7 ms / 98.1%). The numbers looked plausible but were the same for every indexer regardless of actual performance.
Root cause: The scorer was fetching Prowlarr history per-indexer using an indexerId query parameter on GET /api/v1/history. Prowlarr silently ignores that filter — every call returned the full global history, so every indexer was computing the same global average.
Fix: Replaced the per-indexer history fetching with a single call to GET /api/v1/indexerstats, which returns Prowlarr's own pre-computed per-indexer averageResponseTime and query/failure counts. This is the same endpoint the Prowlarr UI stats page uses.
Side effect: A scoring run now makes 3 API calls total instead of N+2 (one history fetch per indexer). Noticeably faster on instances with many indexers.
After rescoring with the fix, rankings reflect actual indexer performance — fast, reliable indexers rise to the top, slow or backoff'd indexers fall accordingly.
What didn't change
- Health score formula and weights are unchanged
- Reorder logic and ignore/pin behaviour are unchanged
get_indexer_history()is retained in the Prowlarr client for future malicious content linkage
Full changelog: https://github.com/o51r15/inspectarr/commits/v1.1.1
v1.1.0 — Prowlarr Indexer Health Scoring, Web UI Auth & Docker Publishing
What's New
Prowlarr Indexer Health Scoring
Inspectarr now monitors your torrent indexers and automatically reorders them by health. Each indexer gets a 0–100% score weighing response time, success/failure rate, and malicious content served. The healthiest indexer floats to your configured base priority; the rest follow. Unhealthy or unreachable indexers sink to the bottom.
- Dedicated Indexers page with a live health table
- Separate Rescore (recalculate scores) and Reorder Now (apply changes) actions
- Per-indexer Ignore toggle to lock an indexer at its current priority
- Automatic reordering on a configurable interval, driven by the scheduler
- Malicious-content attribution: when a bad torrent is actioned, the serving indexer is traced via *arr grab history and penalized
- NZB indexers are never touched — torrent indexers only
Web UI Authentication
Optional HTTP Basic Auth for the web interface, configurable from the Config page. Takes effect immediately with no restart, includes a logout action, and fails open on config errors so a bad file never locks you out.
Automated Docker Publishing
Tagged releases now build and publish a multi-stage Docker image to GHCR automatically via GitHub Actions, and generate a GitHub Release.
Configuration
A new prowlarr: block is available in config.yaml — see config.example.yaml for all options (base priority, reorder interval, scoring weights, history window). Existing configs are unaffected; Prowlarr scoring is disabled by default.
Notes
- Priority writes use Prowlarr's
forceSaveso unreachable indexers can still be reprioritized - Requires Prowlarr with the URL base set correctly if you use one (e.g.
http://host:9696/prowlarr)
Full Changelog: v1.0.0...v1.1.0
v1.0.0: Initial Release - The *arr Watchdog is Live
Welcome to the first official release of Inspectarr, the automated janitor for your *arr homelab stack.
Inspectarr addresses the frustrating "orphaned download" problem: when a completed torrent contains an invalid or malicious payload (like a .exe or .lnk spoofed in a TV category), Sonarr rightfully refuses to import it, but leaves the broken torrent lingering in your client indefinitely. Inspectarr bridges this gap by actively interrogating your payloads, deleting the bad actors, and triggering Sonarr to blocklist and grab a new release—all with zero human intervention.
✨ Key Features
- Smart Rule Engine: Configurable rules to detect malicious or unwanted files based on extensions, matching either any file in the payload or just the primary (largest) file.
- Dual Execution Modes: * Web UI Daemon: A persistent Flask application (
web.py) with a live dashboard, real-time log viewer, and a built-in scheduler for continuous polling.- One-Shot CLI: A headless, manual trigger (
inspectarr.py) perfect for cron jobs, testing, or dry-runs.
- One-Shot CLI: A headless, manual trigger (
- *Seamless arr Integration: Currently supports the Sonarr v4 API to automatically blocklist bad releases so your pipeline doesn't grab the same broken file twice. (Radarr support coming soon).
- qBittorrent Integration: Utilizes the Web API v2 to monitor specific categories, nuke bad torrents, and permanently delete the associated files from your disk.
- Resilient State Management: Uses an SQLite backend to handle retry queues so blocklist actions are never lost, even if the Sonarr API temporarily drops.
- Notifications: Built-in Pushover support to ping your devices whenever a bad swarm is intercepted.
🐳 Docker Deployment
With this release, Inspectarr is now fully containerized and automatically published to the GitHub Container Registry.
You no longer need to build the image locally. You can deploy it instantly via Docker Compose:
services:
inspectarr:
image: ghcr.io/o51r15/inspectarr:latest
container_name: inspectarr
ports:
- 8585:8585
volumes:
- ./data:/app/data
- ./config.yaml:/app/config.yaml
restart: unless-stopped