Note: Seekarr is a rebranded and actively maintained fork of Huntarr. It includes all original functionality plus security improvements, reverse proxy support, session persistence, and ongoing updates. If you are upgrading from Huntarr, see the migration notes in CHANGELOG.md.
| Application | Status |
|---|---|
| Sonarr | ✅ Ready |
| Radarr | ✅ Ready |
| Lidarr | ✅ Ready |
| Readarr | ✅ Ready |
| Whisparr v2 | ✅ Ready |
| Whisparr v3 (Eros) | ✅ Ready |
| Bazarr | ❌ Not Ready |
Note for curated collections: Seekarr only processes items that are marked as monitored in your *Arr application. If you have hand-selected media you don't want auto-searched or upgraded, unmonitor those items in Sonarr/Radarr/etc. before enabling Seekarr — this is the standard way to exclude specific content from any automated activity.
This application continually searches your media libraries for missing content and items that need quality upgrades. It automatically triggers searches for both missing items and those below your quality cutoff. It's designed to run continuously while being gentle on your indexers, helping you gradually complete your media collection with the best available quality.
For detailed documentation, please visit the Seekarr Docs.
🔌 Seekarr connects to your Sonarr/Radarr/Lidarr/Readarr/Whisparr v2/Whisparr v3 instances and analyzes your media libraries to identify both missing content and potential quality upgrades.
- 🔍 Efficient Refreshing: Skip metadata refresh to reduce disk I/O and database load
- 🔮 Future-Aware: Automatically skip content with future release dates
- 🎯 Precise Control: Configure exactly how many items to process per cycle
- 👀 Monitored Only: Focus only on content you've marked as monitored
- ⬆️ Quality Improvement: Find content below your quality cutoff settings
- 📦 Batch Processing: Set specific numbers of upgrades to process per cycle
- 🚦 Queue Management: Automatically pauses when download queue exceeds your threshold
- ⏱️ Command Monitoring: Waits for commands to complete with consistent timeouts
- 🛡️ Rate Protection: Hourly caps prevent overloading your indexers
- ⏲️ Universal Timeouts: Consistent API timeouts (120s) across all applications
- 🔄 Consistent Headers: Identifies as Seekarr to all Arr applications
- 📊 Intelligent Monitoring: Visual indicators show API usage limits
💤 Seekarr waits for your configured interval (adjustable in settings) before starting the next cycle, ensuring your indexers aren't overloaded while maintaining continuous improvement of your library.
Seekarr's live homepage provides statistics on how many missing items and quality upgrades have been processed.
Seekarr includes a real-time log viewer and settings management web interface that allows you to monitor and configure its operation directly from your browser.
The web interface is available on port 9705. Simply navigate to:
http://YOUR_SERVER_IP:9705
The URL will be displayed in the logs when Seekarr starts, using the same hostname you configured for your API_URL.
The web interface allows you to configure all of Seekarr's settings:
To ensure data persistence, make sure you map the /config directory to a persistent volume on your host system:
-v /your-path/appdata/seekarr:/configThe simplest way to run Seekarr is via Docker (all configuration is done via the web UI):
Platforms: The image is published as a multi-arch manifest supporting
linux/amd64andlinux/arm64(Raspberry Pi 4/5, Apple Silicon via Docker Desktop, etc.). Docker pulls the correct variant automatically.
docker run -d --name seekarr \
--restart always \
-p 9705:9705 \
-v /your-path/seekarr:/config \
-e TZ=America/New_York \
ghcr.io/diybits/seekarr:latestTo check on the status of the program, you can use the web interface at http://YOUR_SERVER_IP:9705 or check the logs with:
docker logs seekarrFor those who prefer Docker Compose, add this to your docker-compose.yml file:
services:
seekarr:
image: ghcr.io/diybits/seekarr:latest
container_name: seekarr
restart: always
ports:
- "9705:9705"
volumes:
- /your-path/seekarr:/config
environment:
- TZ=America/New_YorkThen run:
docker-compose up -d seekarrRun from the Unraid terminal:
docker run -d --name seekarr \
--restart always \
-p 9705:9705 \
-v /mnt/user/appdata/seekarr:/config \
-e TZ=America/New_York \
ghcr.io/diybits/seekarr:latest- First-Time Setup: Navigate to the web interface after installation to create your admin account with 2FA option
- API Connections: Configure connections to your *Arr applications through the dedicated settings pages
- Search Frequency: Adjust Sleep Duration (default: 900 seconds) based on your indexer's rate limits
- Batch Processing: Set Hunt Missing and Upgrade values to control how many items are processed per cycle
- Queue Management: Use Minimum Download Queue Size to pause searching when downloads are backed up
- Skip Processing: Enable Skip Series/Movie/Artist Refresh to significantly reduce disk I/O and database load
- Future Content: Keep Skip Future Items enabled to avoid searching for unreleased content
- Authentication: Enable two-factor authentication for additional security on your Seekarr instance
- API Rate Limits: Configure hourly API caps to prevent rate limiting by your indexers
- Universal Timeouts: All apps use consistent 120s timeouts for reliable command completion
- Monitored Only: Filter searches to focus only on content you've marked as monitored
For common problems and step-by-step solutions — connection test failures, SSL errors, no items found, Whisparr v2 vs Eros, log location, and more — see the Troubleshooting Guide.
- Session Secret Key: Seekarr automatically generates a unique, cryptographically random session key on first start and stores it at
/config/secret_key(readable only by the process owner). No action is required. If you prefer to supply your own key, set theSECRET_KEYenvironment variable — it takes precedence over the auto-generated file. - Two-Factor Authentication: Enable TOTP-based 2FA in the user profile settings for an additional layer of protection.
- Authentication Modes: Three modes are available — standard login, local-network bypass, and no-login mode. Local-network bypass and no-login mode are intended for trusted private networks only.
- Local Network Bypass: When local-network bypass mode is enabled, authentication is skipped only for requests whose TCP source address (
remote_addr) falls within a private IP range. Proxy headers such asX-Forwarded-Forare intentionally ignored for this check and cannot be used to spoof a local address. This mode requires Seekarr to be directly reachable on your local network — do not use it when Seekarr sits behind a reverse proxy; use No Login Mode instead. - Reverse Proxy: When running behind Nginx, Traefik, Caddy, or any other reverse proxy, set the
TRUSTED_PROXIESenvironment variable. Use*to trust any upstream (simple LAN setups), or supply a comma-separated list of specific proxy IPs and/or CIDR ranges (e.g.10.0.1.5,192.168.1.0/24) for load-balanced or multi-proxy deployments. When set,X-Forwarded-For,X-Forwarded-Proto,X-Forwarded-Host, andX-Forwarded-Prefixheaders are trusted only from matching upstream IPs, real client IPs are correctly visible to the local-bypass check, and the session cookie receives theSecureflag. Forwarded headers from untrusted connections are stripped to prevent spoofing. Do not setTRUSTED_PROXIESon deployments that are directly internet-facing. - Stats Reset: The
/api/stats/resetendpoint requires an authenticated session. The former unauthenticated/api/stats/reset_publicendpoint has been removed — if you were calling it directly, switch to/api/stats/resetwith a valid session cookie. - Password Storage: Passwords are hashed with bcrypt, a purpose-built algorithm with a tunable cost factor that makes brute-force attacks computationally expensive. Existing accounts are migrated to bcrypt automatically on next login — no action required.
See CHANGELOG.md for a detailed history of security fixes and breaking changes.
For full release notes visit: https://github.com/diybits/seekarr/releases/



