February 1Feb 1 Prunerr is an automated media library management tool that helps you reclaim disk space by identifying and removing unwanted content from your Plex, Sonarr, and Radarrlibraries. Set rules based on watch history, file size, age, and more — then let Prunerr handle the cleanup.Features- Rule-Based Cleanup — Create custom rules to automatically identify media for removal based on watch status, age, file size, and more- Plex Integration — Syncs with your Plex library and Tautulli watch history- Sonarr & Radarr Support — Removes content directly from your *arr apps with configurable deletion options- Overseerr Integration — Optionally reset requests when content is removed- Grace Period — Items are queued for deletion with a configurable grace period before permanent removal- Protection System — Mark items as protected to prevent accidental deletion- Unraid Storage Monitoring — View array disk usage directly in the dashboard- Activity Logging — Full audit trail of all actions and deletions- Smart Suggestions — AI-powered rule suggestions based on your library analysis- Mobile-Friendly UI — Responsive design works on any deviceRequirements- Unraid 6.x or 7.x- Plex Media Server- Tautulli (for watch history)- Sonarr and/or Radarr (optional, for deletion)- Overseerr (optional, for request management)---InstallationFrom Community Apps (Coming Soon)1. Search for Prunerr in Community Applications2. Set your data path (default: /mnt/user/appdata/prunerr)3. Click Apply4. Access the Web UI at: http://YOUR-IP:3000Before CA ApprovalSSH into your Unraid server and run:curl -o /boot/config/plugins/dockerMan/templates-user/my-prunerr.xml https://raw.githubusercontent.com/helliott20/unraid-templates/main/my-prunerr.xmlThen refresh your browser, go to Docker → Add Container → Select Prunerr from the Template dropdown.---Configuration1. Open Prunerr at http://YOUR-IP:30002. Go to Settings and configure your services:- Plex: URL and token- Tautulli: URL and API key- Sonarr/Radarr: URL and API key (optional)3. Click Save and test each connection4. Go to Library and click Sync to import your media5. Create rules in the Rules page or use the smart suggestions---Links- GitHub: https://github.com/helliott20/prunerr- Docker Hub: https://hub.docker.com/r/helliott20/prunerr- Documentation: https://github.com/helliott20/prunerr#readme---Post any questions or issues below! Edited February 1Feb 1 by helliott20
April 8Apr 8 Author v1.3.0Big update — collections support, a completely rebuilt rules engine, API key security, and a bunch of performance and UX improvements.CollectionsYou can now sync movie collections from Radarr (things like "Harry Potter Collection", "Marvel Cinematic Universe"). Protect entire collections to stop any of their items from being cleaned up, or queue a whole collection for deletion in one go.Collections sync automatically after every library scan, and there's a dedicated Collections page to browse, search, and manage them.Rules Engine v2The rules engine has been completely rebuilt. You now get:Three ways to build rules — Templates (personalised suggestions from your library), Easy Setup (plain English sentence builder), and a full Custom Builder with nested AND/OR/NOT condition groups28 condition fields across quality, ratings, watch history, collections, and metadataLive preview that shows matching items, reclaimable storage, and poster art as you buildSearchable dropdowns for fields and users — just start typingPriority system so higher-priority rules win when items match multiple rulesExisting v1 rules auto-upgrade to v2 format, so nothing breaks.API Key AuthenticationThe API now requires authentication for external access. A key is auto-generated on first startup — find it in Settings. The web UI is exempt (same-origin), so nothing changes for normal use.Pass the key in an X-Api-Key header for scripts, automation, or adding Prunerr to nzb360.You can also set it via the PRUNERR_API_KEY environment variable.Data ImprovementsTags now sync from Radarr/Sonarr (previously empty — only Plex labels were pulled)Plex users sync automatically after scans (needed for per-user watch rules)Expanded metadata — genres, studio, ratings (IMDb/TMDB/RT), codecs, HDR, runtime, language, and more are all pulled during scansPerformanceMemoized card components to reduce re-renders when scrolling large librariesRemoved staggered animations that were causing jank on pages with lots of itemsLazy image loading with async decoding across all pagesReduced dashboard polling frequencyBatch database queries for collection protection checks (eliminated N+1 queries)UX PolishPolished search input with smooth loading animationsRich loading skeletons that match the actual card layoutSmooth transitions between loading, content, and empty statesActivity timeline shows human-readable labels instead of raw action codesStorage values over 1000 GB display as TBProtected items in the library link directly to their protecting collectionCollections count on the dashboardSecurityAPI key auth on all external endpointsDepth limit on rule condition trees (prevents malicious payloads)API key excluded from settings export/importCollection protection enforced across all deletion endpointsDocsFull documentation is now in the wiki — installation, configuration, rules, collections, API reference, mobile setup (nzb360), and troubleshooting.
April 21Apr 21 Author v1.5.1 — 2026-04-21 Bug Fixes Fixed: Rule-triggered deletions now properly tracked (issue #20). Scheduled scans were marking items for deletion without the queue metadata needed for them to actually get processed. This meant automatic deletions never fired, nothing was logged to Deletion History, and no Discord notifications were sent. The History UI was also displaying rule-triggered deletions as "Manual" due to a separate API contract issue. After this fix, scheduled rule deletions will appear in your Queue page with the rule name attached, actually get deleted when the grace period expires, show up in Deletion History tagged with the matching rule, fire Discord notifications on deletion completion, and appear in the Activity Log when filtered by "Rule" actor. v1.5.0 — 2026-04-21 Maintenance Major dependency updates across the entire stack: TypeScript 5.9 to 6.0, React 18 to 19, Vite 7 to 8, Tailwind CSS 3 to 4, ESLint 9 to 10, lucide-react 0.x to 1.x, and Node.js minimum bumped to 22 (Docker image updated). Also bumped axios, fast-xml-parser, @typescript-eslint, @tanstack/react-query, postcss, and others. Zero npm audit vulnerabilities. All tests passing. Docker: helliott20/prunerr:v1.5.1 (or :latest) If you were relying on rules to delete content automatically, please update — prior versions were silently failing to follow through on scheduled rule actions.
May 18May 18 Hi, awesome tool, very fast & live preview is awesome.Only one things keep me from switching from maintainerr: can't rule "requested by "username" on seer".It's me, or it's not implemented yet ?Thanks
May 18May 18 Author 6 hours ago, Jayrayme said:Hi, awesome tool, very fast & live preview is awesome.Only one things keep me from switching from maintainerr: can't rule "requested by "username" on seer".It's me, or it's not implemented yet ?ThanksYou are right! It wasn't implemented, but it is now v1.4.14 released.Let me know how you get on? Any other feedback, please let me know!
May 19May 19 Hi helliott20,What a fast response !i think you broke something with specials char :And in fact, the rule that i want to implement is like (Don't find how to rule it like that) :Thanks for your work & sorry for my english i'm french.
May 23May 23 Author On 5/19/2026 at 1:18 PM, Jayrayme said:Hi helliott20,What a fast response !i think you broke something with specials char :And in fact, the rule that i want to implement is like (Don't find how to rule it like that) :Thanks for your work & sorry for my english i'm french.Give the latest release a try I've added watched by as an option in the rules. Special characters should be fixed too.
May 30May 30 Author Requesting New Features for PrunerrHey everyone — thanks for using Prunerr!I'm always looking for ways to make Prunerr better at cleaning up your Plex/Sonarr/Radarr libraries, and the bestideas come from people actually running it. If there's something you'd love to see added or changed, I'd really liketo hear it.Where to request featuresThe best place to log a request is the Ideas board:https://github.com/helliott20/prunerr/discussions/categories/ideasPosting there (instead of burying it in this thread) means:💬 Others can comment, refine, and build on your idea👍 People can upvote requests they want too, which helps me prioritize✅ Nothing gets lost in the thread scrollWhat to includeWhen you post an idea, it helps if you include:The problem — what are you trying to do that Prunerr can't do today?Your ideal solution — what would it look like?Any workarounds you're currently usingFound a bug instead?Prefer GitHub Issues, or hit an actual bug? Use the forms here:https://github.com/helliott20/prunerr/issues/new/chooseYou're welcome to keep posting here on the Unraid forums, too — I read every reply — but GitHub is where I trackeverything, so requests there are far less likely to slip through the cracks. 🚀Thanks again, and keep the ideas coming!
May 31May 31 Author Update: Disk-Pressure Mode + Webhooks / Home Assistant🪣 Disk-Pressure Mode — instead of only cleaning up on the nightly schedule, Prunerr now keeps an eye on your realfree space and reclaims the lowest-value stuff only when you dip below a target you set (e.g. "keep 1TB free").Reads space straight off your media paths, so it's not Unraid-specific. Starts in observe-only mode, so it'll showyou what it'd remove before touching anything — and it respects all your existing protections and exclusions.🔌 Webhooks + Home Assistant — events aren't Discord-only anymore. Prunerr can now fire signed JSON webhooks atanything (HA, n8n, your own scripts). With Home Assistant, you can get a phone push before content gets reclaimed, pull live disk stats, or kick off a scan from an automation. Docs included.Both are off by default — flip them on in Settings. Let me know what you think 🙂
June 2Jun 2 Author 🌍 Prunerr now speaks 7 languagesThe big addition in 1.5.9 is full internationalisation. The entire app — not just bits of it — is now translated:English, Spanish, French, German, Italian, Portuguese, and DutchCovers the whole UI and notifications (Discord / plain-text)Dates and relative times localise too (e.g. "2 hours ago" → "hace 2 horas")How to switch:App language: Settings → Display Preferences → Language. The UI relabels instantly and your choice sticks across reloads.Notification language: there's a separate setting in the Notifications section, so you can run the UI in one language and send Discord alerts inanother if you like.On first launch, Prunerr tries to match your browser's language automatically, and anything not yet translated quietly falls back to English — sonothing breaks.To update: pull the new image — helliott20/prunerr:1.5.9 (or latest). No config changes or migrations needed; your settings carry over.A note on the translations: if you're a native speaker and something reads awkwardly, I'd genuinely love the correction — drop a reply here orOpen an issue on GitHub, and I'll get it fixed.Adding more languages is easy now that the groundwork is in place, so if there's one you'd like to see, just ask. 🙏
September 13Sep 13 Author Prunerr 1.6.2 — Jellyfin/Emby, TrueNAS + Portainer installs, and a UI polish passNew in this release:Jellyfin and Emby support — pick your media server in Settings, or set MEDIA_SERVER_TYPE. Rules, scanning and deletion all work the same whichever you use. (On Jellyfin, install the Playback Reporting plugin for full watch history — without it Jellyfin only keeps the most recent play per item.)Per-library rule targeting — rules can now be scoped to specific libraries, from discussion #51.Full database backup and restore, not just settings.Rebuilt Settings page — six categories with search, and a mobile layout that actually fits the screen.Animated sidebar icons, because I couldn't help myself.Now also installable on TrueNAS (Apps → Install via YAML) and Portainer (app template), alongside Unraid CA and CasaOS.Upgrade is the usual: pull helliott20/prunerr:latest. Existing databases migrate on startup.Two things I'd genuinely like to hear about:What rules do you actually run? I've got 28 condition fields in there and no real idea which ones people use. If you've written something clever, I'd like to see it.Anyone running this against Jellyfin or Emby yet? That's the newest code and it's had the least real-world exposure.
September 16Sep 16 Author Prunerr 1.7.0 — Per-episode deletion, a tabbed show page, and a Beta branchNew in this release:Sonarr detail on the TV show page — open a show and you get it as Sonarr sees it: every season, every episode, with state (downloaded, downloading, missing, unaired, unmonitored), file size, quality, release group and resolution. Plus the totals — episodes on disk, size, missing, below quality cutoff, completion.Delete episodes and seasons individually — now, or queued with your normal grace period. Queued episodes show in the deletion queue, cancel like anything else, and land in history. Deleting a season can unmonitor it in Sonarr at the same time, so it doesn't just come straight back down.Select across seasons — tick episodes anywhere in the tree and act on them together. Shift-click takes a range, and the range highlights as you move so you can see what you're about to grab.Sonarr downloads in the activity timeline — grabs, imports and upgrades now appear on the item's timeline, grouped when a batch lands ("6 episodes downloaded", expandable), so a season import is one line instead of forty.A Beta branch, picked from the template — edit the container, set Branch to Stable or Beta, Apply. Beta is helliott20/prunerr:beta, rebuilt automatically whenever something lands on the beta branch; :latest is only ever published for tagged releases, so switching back to Stable is just flipping the dropdown.Tabbed detail page — Details / Activity / Episodes instead of one long scroll, and the page picks up a subtle tint from the cover art. Also: pages fade in on every navigation now, the sidebar stops shifting when you change page, and nothing jumps sideways when a scrollbar appears.Upgrade is the usual: force update from the template, or pull helliott20/prunerr:latest. The new table is created on startup.Two things I'd genuinely like to hear about:Does the episode view match what Sonarr shows you? Specials, multi-season shows and anime with absolute numbering are where I'd expect it to disagree first.Anyone want to run Beta? That's where the next lot goes before it's tagged, and it's the same CI as everything else — just ahead of stable.
October 17Oct 17 On 5/18/2026 at 3:45 PM, helliott20 said:You are right! It wasn't implemented, but it is now v1.4.14 released.Let me know how you get on? Any other feedback, please let me know!This part, when attempting to create a rule based on requester, says "No requester data yet — run a library sync with Seerr connected" and no list of users pops up. However when I do a classification of "Watched by user" it is able to pop up the entire list of users. To me this shows a break...somewhere...Ideas on what I can do? Edited October 17Oct 17 by TherisValayrin
October 28Oct 28 Author Prunerr v1.9.0 – ForecastNew: ForecastSee what your current rules will make eligible for deletion over the next 7 days to 2 years, or any custom date range. It’s a read-only look ahead: nothing is deleted or changed.One headline with the total space your rules free by the end of the period, split into already queued, predictable, and “only if nobody watches it first”.Space freed per day, week or month as bars. Hover a bar for its items, size, running total and free space by then; click it to list the items behind it.Calendar and list views showing every item’s expected date, the rule that catches it, and the values that matched.Predictable vs conditional: predictable items depend only on age or the file; conditional ones move if someone watches them.Filters for rule, library, movies/TV, watched state, size and certainty.Rule what-if: while editing a rule you see what it reaches in the next 3 and 12 months, and how your change compares with the saved rule.New downloads aren’t counted, so treat it as a plan rather than a promise: if someone watches something, its date moves.Thanks to NolleMania for the idea (Discussion #79).Update: pull helliott20/prunerr:latest or use Check for Updates on the Docker tab.
October 28Oct 28 Author On 10/17/2026 at 5:22 AM, TherisValayrin said:This part, when attempting to create a rule based on requester, says "No requester data yet — run a library sync with Seerr connected" and no list of users pops up. However when I do a classification of "Watched by user" it is able to pop up the entire list of users. To me this shows a break...somewhere...Ideas on what I can do?Looking into this now for you! Apologies, I missed it.
October 28Oct 28 Author On 10/17/2026 at 5:22 AM, TherisValayrin said:This part, when attempting to create a rule based on requester, says "No requester data yet — run a library sync with Seerr connected" and no list of users pops up. However when I do a classification of "Watched by user" it is able to pop up the entire list of users. To me this shows a break...somewhere...Ideas on what I can do?Hey @TherisValayrin, found it. If your Plex libraries are on the older Plex agents, Prunerr couldn't match anything to Seerr, so the requester list stayed empty. That's fixed in v1.9.1. Update, run a library sync and the requesters should show up in the rule builder. Let me know how you get on!I may a bit more detail and some logs if this is not what it is!
October 29Oct 29 To be clear for my benefit: That will be coming on 1.9.1, or just came out with 1.9.0? (I guess I'm asking if there was a typo )
October 29Oct 29 Author 20 hours ago, TherisValayrin said:To be clear for my benefit: That will be coming on 1.9.1, or just came out with 1.9.0? (I guess I'm asking if there was a typo )It is going to be released in v1.9.1, which I am doing shortly Sorry! I should have been clearer
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.