Your *arr Stack Has Gaps
You’ve got Sonarr humming along, Radarr pulling movies, Prowlarr wiring everything together, and Bazarr handling subtitles like a champ. The living room setup is chef’s kiss.
Then you open your comics folder. It’s a disaster. Invincible Issue 47 (2024) [Gekko-DCP] sits next to invincible_047_fixed_v2.cbz and two copies of something that might be issue 48 but you’re not sure. Kavita can’t figure out what series any of it belongs to and honestly, neither can you.
And then there’s that other library. You know the one. The one you manually sort every few months and hope nothing overlaps.
That’s where Mylar3 and Whisparr come in. They’re not officially part of the Servarr family — more like distant cousins who showed up at the reunion and turned out to be extremely competent. Let’s talk about both.
Mylar3: The *arr for Comics
Mylar3 is the mature, daily-driver solution for automating your comic book collection. It connects to Prowlarr (or direct indexers), pulls issues from torrent or Usenet, and organizes everything into a clean library structure that Komga and Kavita actually understand.
The “3” is because it’s a community fork of the original Mylar, which went stale. Mylar3 has been actively maintained for years and is genuinely production-quality at this point.
What Mylar3 Does
- Monitors ongoing series and grabs new issues as they release
- Backfills entire series with a single series add
- Integrates with ComicVine for metadata (issue numbers, story arcs, cover art)
- Renames and organizes into
Publisher/Series (Year)/Series #001 (Year).cbz - Sends to a download client (qBittorrent, NZBGet, SABnzbd)
- Notifies Komga/Kavita to rescan after new issues land
The ComicVine API Key — Don’t Skip This
Mylar3 uses the ComicVine API for all its metadata lookups. Without an API key, it’s basically blind. The good news: it’s free.
- Create an account at comicvine.gamespot.com
- Go to My Account → API
- Generate a key and paste it into Mylar3’s config under Settings → Advanced → ComicVine API Key
No key = no series matching = a folder of CBZ files with no idea where they belong. Don’t learn this the hard way.
Docker Compose for Mylar3
services: mylar3: image: lscr.io/linuxserver/mylar3:latest container_name: mylar3 environment: - PUID=1000 - PGID=1000 - TZ=America/New_York volumes: - ./config/mylar3:/config - /mnt/media/comics:/comics - /mnt/downloads:/downloads ports: - "8090:8090" restart: unless-stopped
komga: image: gotson/komga:latest container_name: komga environment: - TZ=America/New_York volumes: - ./config/komga:/config - /mnt/media/comics:/comics:ro ports: - "25600:25600" restart: unless-stoppedPoint Mylar3’s library path to /comics. Point Komga’s library at the same path read-only. When Mylar3 drops a new issue, Komga rescans and it shows up in your reader within minutes.
Prowlarr Integration
In Mylar3: Settings → Indexers → Add → Newznab or Torznab — point it at your Prowlarr instance.
URL: http://prowlarr:9696API Key: [your prowlarr key]Prowlarr handles the indexer management. Mylar3 just queries it. Same pattern as every other *arr app.
Naming Convention That Won’t Break Your Reader
Mylar3’s default naming is solid but worth reviewing. In Settings → Formatting:
Folder Format: $Publisher/$Series ($Year)File Format: $Series #$Issue ($Year)This produces paths like:
/comics/Marvel/Invincible Iron Man (2022)/Invincible Iron Man #001 (2022).cbzKomga parses this correctly. Kavita does too. Don’t use custom separators or emoji in folder names unless you enjoy debugging character encoding at 1 AM.
Common Pitfalls
Duplicate detection: Mylar3 tracks what it has by database record, not by filename scanning. If you manually drop files into the library folder without importing them through Mylar3 first, it’ll try to grab them again. Use the Manual Import or Wanted → Backfill workflow.
Story arc confusion: ComicVine has separate entries for “Amazing Spider-Man (1963)” and “Amazing Spider-Man (1999)” and “Amazing Spider-Man (2018)”. Make sure you’re adding the right run. Check the publication year when searching.
Download client path mapping: If Mylar3 and your download client run in separate containers, the /downloads path inside each container must resolve to the same physical directory. Map the same host path into both.
Whisparr: The One You Don’t Bring Up at Dinner
Whisparr is an *arr-style automation tool for adult video content. It’s a fork of Radarr v3/v4 that’s been adapted for adult film — handling metadata from StashDB/TPDB, scene matching, and performer/studio tagging.
Let’s be matter-of-fact here: if you’re running a home media server, this is a legitimate use case, and you deserve the same quality automation tooling as everything else in your stack. Whisparr provides that.
What Whisparr Does
- Monitors releases from indexers (via Prowlarr) with adult-content filtering
- Matches releases to scene/title metadata from supported databases
- Renames files with consistent naming (performer, studio, title, date)
- Sends to download clients like everything else
- Integrates with Stash for scene organization, gallery management, and browsing
Current Development State (2025–2026)
Whisparr v3 is the current stable branch. Development is active but slower than the main *arr apps — it’s a smaller contributor pool. Expect rougher edges: some metadata sources require manual configuration, UI quirks exist, and not every Radarr feature has been ported.
If you’re evaluating it: it works for daily use, but you’ll need to be comfortable digging into logs when things mismatch. It’s not a “set it and forget it” app on week one. By week three, once your indexers are tuned, it gets much calmer.
Docker Compose for Whisparr
services: whisparr: image: ghcr.io/hotio/whisparr:v3 container_name: whisparr environment: - PUID=1000 - PGID=1000 - TZ=America/New_York - UMASK=002 volumes: - ./config/whisparr:/config - /mnt/media/adult:/movies - /mnt/downloads:/downloads ports: - "6969:6969" restart: unless-stopped
stash: image: stashapp/stash:latest container_name: stash environment: - STASH_STASH=/data/ - STASH_GENERATED=/generated/ - STASH_METADATA=/metadata/ - STASH_CACHE=/cache/ volumes: - ./config/stash:/root/.stash - /mnt/media/adult:/data:ro - ./stash/generated:/generated - ./stash/metadata:/metadata - ./stash/cache:/cache ports: - "9999:9999" restart: unless-stoppedUse hotio/whisparr — it tracks v3 and is consistently updated. The v3 tag is more stable than latest right now.
Prowlarr Integration for Adult Indexers
Same setup as everything else — add Whisparr as an application in Prowlarr:
Prowlarr → Settings → Apps → Add Application → Whisparr
Prowlarr Server: http://prowlarr:9696Whisparr Server: http://whisparr:6969API Key: [your whisparr key]The adult-content indexer landscape is… different from the mainstream *arr world. Some indexers that work fine for Radarr won’t have dedicated Whisparr categories, and you’ll need to manually configure category codes. Prowlarr handles this at the indexer level — check the indexer’s capabilities tab and map the right category numbers.
Stash Integration
Stash is the companion app — think Plex/Jellyfin, but built specifically for this content type. It handles:
- Scene scraping and matching from StashDB
- Performer metadata and galleries
- Tagging and filtering
- A clean web UI for browsing
Point Stash at the same /data path that Whisparr writes to (read-only in the Stash container is fine — it doesn’t move files). Run a library scan in Stash after Whisparr grabs something, or set up a scan trigger via Whisparr’s Connect → Custom Script setting.
#!/bin/bash# Trigger Stash library rescan via GraphQLcurl -s -X POST \ -H "Content-Type: application/json" \ -H "ApiKey: YOUR_STASH_API_KEY" \ -d '{"query":"mutation { metadataScan(input:{useFileMetadata:false}) }"}' \ http://stash:9999/graphqlDrop this script somewhere accessible, make it executable, and configure Whisparr’s On Import connection to call it.
File Matching and Hashing
This is where Whisparr gets tricky. Adult content releases don’t have a centralized database like TMDB to pull clean metadata from. Whisparr uses a combination of title fuzzy-matching and scene hashes (via StashDB’s fingerprint database) to identify what it’s actually downloading.
Hash matching is significantly more accurate than title matching. To use it:
- Install Stash alongside Whisparr
- Enable StashDB fingerprint lookups in Stash: Settings → Metadata Providers → StashDB
- After import, Stash can submit/verify fingerprints — this improves matching for everyone over time
If you’re seeing mismatches (wrong metadata applied to a file), the title-based match probably picked the wrong scene. Check Whisparr’s Activity → History and use Manual Match to correct it.
Naming Convention
In Settings → Media Management → Standard Movie Format:
{Movie CleanTitle} ({Release Year}) {Quality Full} {MediaInfo VideoCodec}For this content type you probably want something like:
{Movie CleanTitle} ({Release Year})Performer and studio metadata shows up in Stash’s tags, not the filename. Keep filenames sane — your filesystem will thank you.
Why These Aren’t in the Official *arr Family
The Servarr team maintains Sonarr, Radarr, Lidarr, Readarr, and Prowlarr under one umbrella. Mylar3 and Whisparr are separate for straightforward reasons:
Mylar3: Comics have a completely different metadata structure than movies and TV. ComicVine’s API, issue numbering, story arcs, variant covers — none of this maps cleanly to TMDB/TVDB. Maintaining it inside the Servarr codebase would be a massive scope expansion for a niche use case. A separate community fork is the right call.
Whisparr: Content sensitivity. The Servarr team made an explicit decision not to support adult content indexers or metadata sources in their official apps. Whisparr is a maintained community fork that lives outside that umbrella by design. This is fine — it means Whisparr can be more aggressively tailored to its use case without political compromises.
Neither app is worse for being independent. Mylar3 in particular is legitimately polished. Whisparr is rougher but functional.
Backup Strategy for Both
These apps store their metadata and library mappings in SQLite databases inside their config directories. Backing up the config is the whole ballgame.
backup: image: lscr.io/linuxserver/duplicati:latest container_name: backup volumes: - ./config:/source/config:ro - /mnt/backup/mylar-whisparr:/backups environment: - PUID=1000 - PGID=1000Back up:
./config/mylar3/— database, config.ini, cache./config/whisparr/— database, config.xml
Do not just back up the media files and assume you can rebuild the DB from scratch. You’ll lose all your series monitoring, custom scoring profiles, and download history. The config directory is the important bit.
The Bottom Line
If your home server has a comics collection, Mylar3 is a no-brainer. It’s mature, well-documented, and integrates cleanly with Komga and Kavita. Get your ComicVine API key first, map your paths correctly, and it’ll run quietly in the background forever. Your comics folder will go from “chaotic pile” to “organized library” within a few hours of backfilling.
Whisparr is more of a project. It works, the Stash integration is genuinely good, but expect to spend some time tuning indexers and correcting early mismatches. By week two it settles down. If you’re running that kind of library, it’s far better than manual management — it’s just not as plug-and-play as Radarr.
Neither app makes it into most homelab blog posts, which is a shame, because they solve real problems for real people. Now you know they exist, what they do, and how to run them. The rest is up to you.