ClawARR Suite
Unified deep-integration control for self-hosted media automation stacks. This skill provides comprehensive agent-executable operations across the entire *arr ecosystem with rich analytics, dashboard generation, and advanced library exploration.
Security & Scanner Clarity
- Local-first operations: all API calls target user-provided local hosts (typically LAN/NAS).
- No embedded secrets: API keys/tokens are sourced from environment variables or user-owned config files.
- No telemetry/exfiltration paths: scripts do not transmit credentials or library data to third-party endpoints.
- Destructive behavior is opt-in: delete/remove actions require explicit command invocation by the user/agent.
- Setup logic avoids dynamic
evaland uses explicit variable mapping for scanner-friendly shell behavior.
Quick Start
First time setup (recommended):
scripts/setup.sh <host-ip-or-hostname>
Discovers services, grabs API keys, verifies connections, and outputs your config.
Common operations:
scripts/status.sh # Health check all services
scripts/library.sh stats all # Library statistics
scripts/analytics.sh activity # Current Plex streams
scripts/dashboard.sh # Generate HTML dashboard
scripts/manage.sh wanted all # Show missing content
scripts/requests.sh list # Overseerr requests
Scripts Overview
Core Operations
setup.sh— Guided setup wizard with auto-discoverydiscover.sh— Scan host for *arr servicesstatus.sh— Health check all configured servicesdiagnose.sh— Automated troubleshooting
Library Exploration (library.sh)
Deep statistics and exploration for Radarr/Sonarr/Lidarr:
library.sh stats [app] # Overall library stats
library.sh quality [app] # Quality profile breakdown
library.sh missing [app] # Missing/wanted content
library.sh unmonitored [app] # Unmonitored items
library.sh recent [app] [days] # Recently added (default: 7)
library.sh genres [app] # Genre distribution
library.sh years [app] # Year distribution
library.sh studios [app] # Studio/network breakdown
library.sh nofiles [app] # Monitored but no files
library.sh disk [app] # Disk usage by root folder
Analytics (analytics.sh)
Rich viewing analytics from Tautulli/Plex:
analytics.sh activity # Currently watching
analytics.sh history [count] # Watch history
analytics.sh most-watched [period] # Most watched (week/month/year)
analytics.sh popular-genres [period] # Popular genres
analytics.sh peak-hours # Peak watching hours
analytics.sh user-stats [user] # User activity
analytics.sh library-stats # Plex library stats
analytics.sh recent-added [count] # Recently added to Plex
analytics.sh play-totals # Total play statistics
Content Management (manage.sh)
Add, remove, and manage content:
manage.sh add-movie "<title>" [quality] [root]
manage.sh add-series "<title>" [quality] [root]
manage.sh remove <app> <id>
manage.sh wanted [app]
manage.sh calendar [app] [days]
manage.sh history [app] [count]
manage.sh rename <app> <id>
manage.sh refresh <app> [id]
Request Management (requests.sh)
Overseerr request handling:
requests.sh list [pending|approved|available|all]
requests.sh approve <id>
requests.sh deny <id> [reason]
requests.sh info <id>
requests.sh stats
Subtitle Management (subtitles.sh)
Bazarr operations:
subtitles.sh wanted
subtitles.sh history [count]
subtitles.sh search <series|movie> <id>
subtitles.sh languages
Indexer Management (indexers.sh)
Prowlarr operations:
indexers.sh list
indexers.sh test [id]
indexers.sh stats
Download Client (downloads.sh)
SABnzbd operations:
downloads.sh active
downloads.sh speed
downloads.sh history [count]
downloads.sh pause
downloads.sh resume
downloads.sh queue
Dashboard Generation (dashboard.sh)
Generate self-contained HTML dashboard:
dashboard.sh [output_file]
Creates beautiful dark-themed dashboard with:
- System health
- Download activity
- Library statistics
- Recent activity
- Viewing analytics
- Disk usage
Output defaults to clawarr-dashboard.html (open in any browser).
Media Tracker Integration (trakt.sh, trackers.sh, letterboxd.sh, simkl.sh)
Track and sync what you watch across services like Trakt.tv, Letterboxd, Simkl, and more.
Unified Interface (trackers.sh):
trackers.sh setup # Interactive setup wizard
trackers.sh status # Show configured trackers
trackers.sh sync plex trakt # Sync Plex → Trakt
trackers.sh export trakt json # Export watch history
trackers.sh import letterboxd file.csv
trackers.sh compare trakt simkl
Trakt.tv Integration (trakt.sh):
Authentication:
trakt.sh auth # Device code OAuth flow
trakt.sh auth-status # Check authentication
Profile & Stats:
trakt.sh profile [username] # Show profile
trakt.sh stats [username] # Detailed statistics
Watching & History:
trakt.sh watching # Currently watching
trakt.sh history [movies|shows|episodes] [limit]
trakt.sh sync-history export file.json
trakt.sh sync-history import file.json
Scrobbling:
trakt.sh scrobble start movie 12345
trakt.sh scrobble stop movie 12345 100
trakt.sh checkin movie "Inception"
Lists & Collections:
trakt.sh watchlist [movies|shows]
trakt.sh watchlist-add movie "Dune Part Two"
trakt.sh collection movies
trakt.sh collection-add movie 12345
trakt.sh lists # Custom lists
trakt.sh list-items my-favorites
Ratings:
trakt.sh ratings movies 8 # Movies rated 8+
trakt.sh rate movie "Inception" 10
Discovery:
trakt.sh recommendations movies
trakt.sh trending shows
trakt.sh popular movies
trakt.sh calendar all 7 # Next 7 days
Search:
trakt.sh search "Breaking Bad" show
Sync:
trakt.sh sync-plex # Sync Plex watch history to Trakt
Letterboxd Integration (letterboxd.sh):
letterboxd.sh export # Export from Plex as Letterboxd CSV
letterboxd.sh import diary.csv # Import Letterboxd diary
letterboxd.sh profile username # View public profile
letterboxd.sh diary username 2024
Simkl Integration (simkl.sh):
simkl.sh auth # OAuth authentication
simkl.sh profile # Show profile
simkl.sh stats # Viewing statistics
simkl.sh history movies # Watch history
simkl.sh watchlist all # View watchlist
simkl.sh sync # Sync with Plex
Traktarr & Retraktarr Integration
Automate content discovery and library syncing with Trakt lists.
Traktarr (Trakt → Radarr/Sonarr):
# Status and configuration
trakt.sh traktarr-status # Check if installed
trakt.sh traktarr-config # Configure Traktarr
# Add content from Trakt lists
trakt.sh traktarr-add movies trending 10
trakt.sh traktarr-add movies anticipated 15
trakt.sh traktarr-add movies popular 5
trakt.sh traktarr-add shows trending 5
trakt.sh traktarr-add movies watchlist 50
Retraktarr (Radarr/Sonarr → Trakt):
# Status and configuration
trakt.sh retraktarr-status # Check if installed
trakt.sh retraktarr-config # Configure Retraktarr
# Sync library to Trakt lists
trakt.sh retraktarr-sync all # Sync movies and shows
trakt.sh retraktarr-sync movies
trakt.sh retraktarr-sync shows
Installation via Setup Wizard:
trackers.sh setup
# Choose option 5 for Traktarr
# Choose option 6 for Retraktarr
# Offers to install via pip if not found
What They Do:
- Traktarr: Automatically adds content from Trakt lists (trending, anticipated, watchlist, custom) to Radarr/Sonarr for download
- Retraktarr: Syncs your Radarr/Sonarr library back to Trakt as public/private lists
See references/traktarr-retraktarr.md for complete setup, cron scheduling, and usage patterns.
Prowlarr Indexer Management (prowlarr.sh)
Centralized indexer management across all *arr apps:
prowlarr.sh indexers # List all indexers
prowlarr.sh test [id] # Test indexer(s)
prowlarr.sh stats # Indexer & app sync statistics
prowlarr.sh search <query> [type] # Search across all indexers (type: movie|tv|audio|book)
prowlarr.sh apps # List sync targets (Sonarr/Radarr/etc)
prowlarr.sh add-app <type> <url> <key> # Add app sync target
prowlarr.sh sync # Trigger sync to all apps
prowlarr.sh status # Health check
prowlarr.sh logs [count] # Recent logs
Recyclarr Quality Profiles (recyclarr.sh)
Sync TRaSH Guides quality profiles to Sonarr/Radarr:
recyclarr.sh status # Check status & config
recyclarr.sh sync [instance] # Sync profiles (all or specific)
recyclarr.sh diff [instance] # Preview changes without applying
recyclarr.sh profiles # List available TRaSH profiles
recyclarr.sh qualities [app] # List quality definitions
recyclarr.sh config # Show current config
recyclarr.sh create-config # Generate config template
recyclarr.sh logs [count] # View recent logs
Maintainerr Library Cleanup (maintainerr.sh)
Automated library cleanup based on rules:
maintainerr.sh status # Check status
maintainerr.sh rules # List cleanup rules
maintainerr.sh collections # List managed collections
maintainerr.sh run [rule_id] # Trigger rules (all or specific)
maintainerr.sh media <rule_id> # Show media matched by a rule
maintainerr.sh exclude <media_id> <rule_id> # Exclude media from rule
maintainerr.sh logs # View activity log
Notifiarr Notifications (notifiarr.sh)
Unified notification management across *arr services:
notifiarr.sh status # Check status & integrations
notifiarr.sh triggers # List notification triggers
notifiarr.sh services # Show connected services
notifiarr.sh test [channel] # Send test notification
notifiarr.sh config # Configuration summary
notifiarr.sh logs # Recent notification log
Kometa Collection Manager (kometa.sh)
Plex collection, overlay, and metadata automation:
kometa.sh status # Check container status
kometa.sh run [library] # Run Kometa (all or specific library)
kometa.sh collections # Show Plex collections
kometa.sh overlays # Check overlay config
kometa.sh config # Show Kometa config
kometa.sh templates # List available default collections/overlays
kometa.sh logs [count] # View recent logs
Unpackerr Archive Extraction (unpackerr.sh)
Automatic archive extraction for download clients:
unpackerr.sh status # Check status & config
unpackerr.sh activity # Recent extraction activity
unpackerr.sh errors # Recent errors/warnings
unpackerr.sh config # Show configuration
unpackerr.sh logs [count] # View recent logs
unpackerr.sh restart # Restart container
Legacy Scripts
queue.sh— View download queues (usemanage.sh wantedordownloads.sh activefor more detail)search.sh— Search content (usemanage.sh add-*for full workflow)
Configuration
Environment Variables
Core Services:
export CLAWARR_HOST=192.168.1.100
export SONARR_KEY=abc123...
export RADARR_KEY=def456...
export LIDARR_KEY=ghi789...
export READARR_KEY=jkl012...
export PROWLARR_KEY=mno345...
export BAZARR_KEY=pqr678...
export OVERSEERR_KEY=stu901...
export PLEX_TOKEN=vwx234...
export TAUTULLI_KEY=yz567...
export SABNZBD_KEY=abc890...
export NOTIFIARR_KEY=xyz123...
# Companion services (auto-detected, keys optional)
export PROWLARR_KEY=abc123... # Required for prowlarr.sh
# Docker-based services (SSH access for remote management)
export RECYCLARR_SSH=mynas # SSH host for recyclarr container
export KOMETA_SSH=mynas # SSH host for kometa container
export UNPACKERR_SSH=mynas # SSH host for unpackerr container
export DOCKER_CONFIG_BASE=/opt/docker # Docker config root (default: /volume1/docker for Synology)
Media Trackers (optional):
# Trakt.tv (register app at https://trakt.tv/oauth/applications/new)
export TRAKT_CLIENT_ID=your_client_id
export TRAKT_CLIENT_SECRET=your_client_secret
# Simkl (register at https://simkl.com/settings/developer)
export SIMKL_CLIENT_ID=your_client_id
export SIMKL_CLIENT_SECRET=your_client_secret
# Letterboxd (requires API approval)
export LETTERBOXD_API_KEY=your_api_key # Optional, uses CSV export if not set
Token Storage:
- Tokens are automatically saved to
~/.config/clawarr/ - Files:
trakt_tokens.json,simkl_tokens.json - Permissions: 600 (user read/write only)
Store in .env file and source before running scripts.
Standard Ports
- Sonarr: 8989
- Radarr: 7878
- Lidarr: 8686
- Readarr: 8787
- Prowlarr: 9696
- Bazarr: 6767
- Overseerr: 5055
- Plex: 32400
- Tautulli: 8181
- SABnzbd: 38080
- Notifiarr: 5454
- Maintainerr: 6246
- FlareSolverr: 8191
- Homarr: 7575
API Key Discovery
Method 1: /initialize.json (Easiest)
Most *arr apps expose API key at public endpoint:
curl -s http://HOST:7878/initialize.json | jq -r '.apiKey'
For older versions (v3):
curl -s http://HOST:7878/initialize.js | grep -o "apiKey: '[^']*'" | cut -d"'" -f2
Method 2: Config Files
Docker/Unraid/Synology: /config/config.xml (inside container)
grep '<ApiKey>' /path/to/config.xml | sed 's/.*<ApiKey>\(.*\)<\/ApiKey>.*/\1/'
Method 3: Web UI
Settings → General → Security → API Key
Plex Token
From Plex Web UI:
- Open any media item
- "Get Info" → "View XML"
- URL contains
X-Plex-Token=...
Or use:
curl -u "username:password" -X POST \
'https://plex.tv/users/sign_in.json' \
-H "X-Plex-Client-Identifier: <unique-id>"
Tautulli API Key
Settings → Web Interface → API → API Key
SABnzbd API Key
Config → General → Security → API Key
Common Workflows
Library Analysis
# Get complete library overview
scripts/library.sh stats all
# Find quality upgrade candidates
scripts/library.sh quality radarr
# Show missing content
scripts/library.sh missing all
# Check disk usage
scripts/library.sh disk all
Viewing Analytics
# Current activity
scripts/analytics.sh activity
# Most watched this month
scripts/analytics.sh most-watched month
# User statistics
scripts/analytics.sh user-stats
# Peak hours
scripts/analytics.sh peak-hours
Request Management
# Show pending requests
scripts/requests.sh list pending
# Approve request
scripts/requests.sh approve 123
# Request statistics
scripts/requests.sh stats
Content Management
# Add movie
scripts/manage.sh add-movie "Dune Part Two"
# Show calendar
scripts/manage.sh calendar all 7
# View history
scripts/manage.sh history radarr 30
# Show wanted/missing
scripts/manage.sh wanted all
Indexer Management (Prowlarr)
# List and test all indexers
scripts/prowlarr.sh indexers
scripts/prowlarr.sh test
# Search across all indexers
scripts/prowlarr.sh search "Dune" movie
# Add Sonarr/Radarr as sync targets
scripts/prowlarr.sh add-app sonarr http://host:8989 <sonarr_key>
scripts/prowlarr.sh add-app radarr http://host:7878 <radarr_key>
# Trigger indexer sync to all apps
scripts/prowlarr.sh sync
Quality Profiles (Recyclarr)
# Preview changes
scripts/recyclarr.sh diff
# Sync TRaSH Guides profiles
scripts/recyclarr.sh sync
# Check status
scripts/recyclarr.sh status
Library Cleanup (Maintainerr)
# View rules and matched media
scripts/maintainerr.sh rules
scripts/maintainerr.sh media 1
# Run cleanup
scripts/maintainerr.sh run
# Exclude something from cleanup
scripts/maintainerr.sh exclude 12345 1
Collections & Overlays (Kometa)
# Run collection/overlay generation
scripts/kometa.sh run
# View existing collections
scripts/kometa.sh collections
# See available templates
scripts/kometa.sh templates
Dashboard
# Generate dashboard
scripts/dashboard.sh my-dashboard.html
# Open in browser
open my-dashboard.html
Media Tracking Workflows
Initial Setup:
# Set up Trakt.tv
scripts/trackers.sh setup
# Select option 1 (Trakt.tv)
# Follow device auth flow
# Check status
scripts/trackers.sh status
Sync Plex to Trakt:
# One-time sync of watch history
scripts/trakt.sh sync-plex
# Or use unified interface
scripts/trackers.sh sync plex trakt
Export for Letterboxd:
# Generate Letterboxd-compatible CSV
scripts/letterboxd.sh export
# Upload at letterboxd.com/import/
Cross-Tracker Sync:
# Export from Trakt, convert for Letterboxd
scripts/trackers.sh sync trakt letterboxd
# Compare two services
scripts/trackers.sh compare trakt simkl
Discovery & Recommendations:
# Get personalized recommendations
scripts/trakt.sh recommendations movies
# See what's trending
scripts/trakt.sh trending shows
# Check upcoming releases
scripts/trakt.sh calendar all 7
Track Viewing:
# See what you're currently watching
scripts/trakt.sh watching
# View watch history
scripts/trakt.sh history movies 50
# Rate something you watched
scripts/trakt.sh rate movie "Inception" 10
Automation with Traktarr/Retraktarr:
# Set up Traktarr (Trakt → Arr)
scripts/trackers.sh setup # Option 5
# Add trending movies to Radarr
scripts/trakt.sh traktarr-add movies trending 10
# Add anticipated shows to Sonarr
scripts/trakt.sh traktarr-add shows anticipated 5
# Set up Retraktarr (Arr → Trakt)
scripts/trackers.sh setup # Option 6
# Sync library to Trakt lists
scripts/trakt.sh retraktarr-sync all
# Schedule automation (cron):
# Traktarr every 6 hours: 0 */6 * * * traktarr run
# Retraktarr daily at 3am: 0 3 * * * retraktarr sync
Troubleshooting
No Files Eligible for Import
Diagnosis:
scripts/diagnose.sh
Common causes:
- Stale Docker mounts — Container restarted but host didn't
- Path mapping — Download client and *arr app see different paths
- Permissions — *arr app can't read download directory
- Category mismatch — Download in wrong category
Solutions:
# Restart containers (fixes stale mounts)
docker restart radarr sonarr
# Check path mappings
# Settings → Download Clients → Remote Path Mappings
Queue Stuck
Check download client:
scripts/downloads.sh active
scripts/downloads.sh speed
*Check arr queues:
scripts/manage.sh wanted all
Check indexers:
scripts/indexers.sh test
scripts/indexers.sh stats
Missing Subtitles
scripts/subtitles.sh wanted
scripts/subtitles.sh search series <id>
Reference Documentation
references/api-endpoints.md— Complete API reference for all servicesreferences/tracker-apis.md— Media tracker API documentation (Trakt, Simkl, Letterboxd)references/traktarr-retraktarr.md— Complete guide to Traktarr & Retraktarr automationreferences/companion-services.md— Prowlarr, Recyclarr, FlareSolverr, Unpackerr, Notifiarr, Maintainerr, Kometa referencereferences/common-issues.md— Troubleshooting guide with solutionsreferences/setup-guide.md— Platform-specific installationreferences/prompts.md— Suggested natural-language prompts for agentsreferences/dashboard-templates.md— HTML/CSS templates for dashboards
Example Agent Prompts
See references/prompts.md for complete list. Examples:
Library & Downloads:
- "Show me what's downloading right now"
- "What movies were added this week?"
- "Generate a dashboard of my media library"
- "What are the most watched shows this month?"
- "Find all 720p movies that could be upgraded to 4K"
- "Show missing episodes for all monitored shows"
- "What's coming out this week?"
- "Approve all pending Overseerr requests"
- "How much disk space am I using per library?"
- "Show my Plex viewing stats for the last 30 days"
- "What subtitles are missing?"
- "Test all my indexers"
Media Tracking:
- "Set up Trakt tracking for my Plex library"
- "Sync my Plex watch history to Trakt"
- "What am I currently watching on Trakt?"
- "Show my Trakt watch history from this month"
- "Get movie recommendations based on my Trakt ratings"
- "What's trending on Trakt right now?"
- "Export my library for Letterboxd"
- "Compare my Trakt and Simkl watch histories"
- "Show me upcoming movie releases I'm tracking"
- "Rate Inception 10/10 on Trakt"
- "Add Dune Part Two to my Trakt watchlist"
- "Show my Letterboxd profile stats"
- "What are my top-rated movies on Trakt?"
Prowlarr & Indexers:
- "Show all my indexers and test them"
- "Search across all indexers for Breaking Bad"
- "Sync Prowlarr indexers to Sonarr and Radarr"
- "Add Sonarr as a sync target in Prowlarr"
Quality Profiles (Recyclarr):
- "Sync TRaSH Guides quality profiles"
- "Preview what Recyclarr would change"
- "Show available quality profiles for Radarr"
- "What quality definitions does Sonarr have?"
Library Cleanup (Maintainerr):
- "Show my library cleanup rules"
- "What movies are flagged for deletion?"
- "Run all cleanup rules now"
- "Exclude this movie from the cleanup rule"
Collections & Overlays (Kometa):
- "Run Kometa to update collections"
- "Show all my Plex collections"
- "What overlay templates are available?"
- "Add IMDb Top 250 collection to my movie library"
Notifications (Notifiarr):
- "Check Notifiarr status and integrations"
- "Send a test notification"
- "Show recent notifications"
Archive Extraction (Unpackerr):
- "Check Unpackerr status"
- "Show recent extraction activity"
- "Any extraction errors?"
Traktarr/Retraktarr Automation:
- "Set up Traktarr to auto-add trending movies"
- "Add the top 10 anticipated movies from Trakt to Radarr"
- "Configure Traktarr to monitor my Trakt watchlist"
- "Sync my Radarr library to a public Trakt list"
- "Show Traktarr status and configuration"
- "Add trending shows to Sonarr via Traktarr"
- "Set up automatic syncing between Trakt and my *arr apps"
- "What's Retraktarr doing? Is it synced?"
Technical Notes
Bash 3.2 Compatibility
All scripts are compatible with macOS bash 3.2:
- No associative arrays (
declare -A) - No uppercase parameter expansion (
${var^^}) - Use
$(echo "$var" | tr '[:lower:]' '[:upper:]')for case conversion - No
|&(pipe stderr), use2>&1instead
Dependencies
- curl — HTTP requests
- jq — JSON parsing
- bc — Math calculations (for percentages, GB conversions)
- sed — Text processing
All standard on macOS/Linux.
Security
- Never log API keys
- Confirm destructive actions (delete, remove)
- Rate limiting for bulk operations
- Use HTTPS for remote access
Performance
- Scripts cache API responses where possible
- Dashboard generation pulls data once per run
- Bulk operations use batch APIs when available
Version Compatibility
Tested with:
- Sonarr v4.x (API v3)
- Radarr v5.x (API v3)
- Lidarr v2.x (API v1)
- Readarr v0.3.x (API v1)
- Prowlarr v1.x (API v1)
- Bazarr v1.4.x
- Overseerr v1.33.x (API v1)
- Plex Media Server (all recent versions)
- Tautulli v2.x (API v2)
- SABnzbd v4.x
- Recyclarr v7.x
- Unpackerr v0.14.x
- Notifiarr v0.8.x
- Maintainerr v2.x
- Kometa v2.x (Plex Meta Manager successor)
- FlareSolverr v3.x
Contributing
Report issues or suggest features via GitHub. Include:
- Script name and command run
- Error output (sanitize API keys!)
- Service versions
- Platform (Docker/Unraid/Synology/etc)
License
MIT License - See repository for details.