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