Skip to content

v1.0.0: Initial Release - The *arr Watchdog is Live

Choose a tag to compare

@o51r15 o51r15 released this 10 Jun 16:49
· 158 commits to main since this release

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.
  • *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