For servers already running in containers. One volume holds everything Kustos learns; point it somewhere you back up and the container becomes disposable.
docker pull ghcr.io/kustos-wiki/kustos:latest
If your media is on a NAS, install Sonarr and Radarr yourself and point Kustos at them — it cannot guess which share your library lives on, and a container it launches would come up with an empty root folder rather than an error. The has the compose file and the choice laid out.
Kustos runs on your own machine and is never published to the internet. It needs a Plex server it can reach; Sonarr, Radarr and the rest are optional and can be added later.
What’s new
1.0.7
7 October 2026Latest
Latest Windows installer. Runs Kustos as a service on port 8787. Upgrading from 1.0.6 or earlier: run this installer over the top. There’s no uninstall and no re-claim, and your database, connected apps and artwork all stay.
Downloads that sort themselves out. Auto-import places a file by the episode it was grabbed for when the app can’t match it by name, but only if it’s an upgrade on the file you have. Downloads that can never import are removed: a new setting, remove ones that can never import after N hours (default 48, 0 = never), removes and blocklists a finished download with nothing importable, so the app searches for another. A download paused for approval is withdrawn once a copy at least as good has been imported. Arr Rules never search a title or episode that’s already in the download queue. The Downloads panel labels its controls, and a release worse than your copy now says so instead of “Waiting to import”.
The Usenet completed folder. The completed-folder panel is now called Usenet completed folder: it’s SABnzbd’s complete folder, and torrents aren’t in it. An entry is removable when it’s already imported, or when it can’t be imported once it’s older than the same “can never import” hours. A title the app knows you’re missing is never removed. Movies already in your library now show as removable. Every entry is listed by default, removable ones first. A new switch removes them automatically every 6 hours, off by default.
Artwork you don’t need stops being “missing”. A “Not needed” tick on an empty Background or Logo slot in Choose Artwork takes that slot off the Needs artwork list and out of the Missing folders, for that one title or collection. Settings › Artwork sets the default (collections that already have a poster don’t need a background or logo), and the tick overrides it either way. A collection’s Saved poster now shows the poster that’s applied and where it came from.
People and watch history. Watch history rows always have a name. No Plex Pass needed: People & History no longer shows a “403 Forbidden” error for an account without one, and the scrobbling check isn’t blocked by it. A merged account shows each service once on Watchlists.
New “Suggested for you” rows start with AI off. Each AI row spends your Suggestions AI key on every build; turn it on per row.
The rail shows a library’s Collections, Overlays and Library options even when you have only one Plex library.
Cleanup: a completed Seerr request now counts as approved, so “approved more than N days ago” rules match fulfilled requests.
Arr Rules: the “Example: missing movies” preset now requires the movie to be monitored, so it no longer re-downloads films a cleanup had unmonitored. “No conditions = the whole library” only shows when a rule really has none.
Plex connection errors only blame the token when Plex actually refuses it.
The External URL placeholder says kustos.example.com.
1.0.6
7 October 2026
Latest Windows installer. Runs Kustos as a service on port 8787. Upgrading from 1.0.5 or earlier: run this installer over the top. There’s no uninstall and no re-claim, and your database, connected apps and artwork all stay.
Artwork runs replace the Quick runs. TV Quick — Titlecards, TV Quick — Posters and Movie Quick are gone. Artwork — All, Artwork — TV and Artwork — Movies replace them. Each is the artwork half of a library run: scrape, folder assets, then posters, backgrounds and title cards. They cover every slot the Quick runs did, from more sources, and they never redraw overlays. They ship off, with no schedule, so they don’t start a whole-library pass you didn’t ask for. Press one to run it, or give it a window to schedule it. The Activity tab that holds them is now called Tasks.
A poster reaches every copy of a title. If you keep a 4K copy in its own Plex library, or 4K and HD copies unstacked in one library, a poster, background or season poster set on the title now reaches all of them. Before, only the library fed by the title’s own Sonarr/Radarr got it. You dress a title once.
Asset folders are named the way your arr names them. Kustos used to build its own Title (Year) folder names, keeping apostrophes and ampersands, so many asset folders differed from Sonarr/Radarr’s by punctuation. New asset folders now take the folder name your arr actually uses. A title no arr holds gets the arr’s naming format applied, and if that isn’t available, Title (Year). Asset folder names (Activity → Tasks → Maintenance) brings existing folders into line, with Preview before anything moves. It never merges, and it leaves collections and titles no arr holds alone.
Auto network can prefer streaming. On a TV template the network logo now has two automatic modes: Auto network, else streaming (what auto did before) and Auto streaming, else network (new: Hulu or Netflix ahead of ABC). Poster Studio’s preview now resolves the logo exactly the way the run does, so what it shows is what you get.
Merged accounts become one person in Suggestions. Absorbing an old Plex account into a new one now moves its suggestion history too, so the person has one list instead of two. Where a title was suggested to both, the person’s own answer (accepted, rejected or dismissed) wins. A title they had already said no to stays rejected and doesn’t come back, and one that is now answered no comes off their Trakt list on the next push.
A grab the arr rejects as not an upgrade now clears from the queue, as its own rule always said it should.
An import the arr forgot no longer waits forever, and the completed downloads folder now reports what is sitting in it.
A switch to turn franchise collections off. Use franchise collections: off removes the existing franchise collections behind one confirm and stops offering new ones. On brings the offer back; nothing is re-added until you press Add.
Collections that already have a poster are no longer listed as missing a background or logo. It’s a switch in Settings → Artwork, on by default.
A franchise collection’s background choices now come from every film in it, not just the first, labelled with the film each is from and limited to your language. Its member logos follow your language too.
Restore defaults also restores the completed-downloads sweep task.
Activity no longer crashes when there is nothing to rename.
The Seerr settings section is labelled Seerr.
The + Plex token tooltip says who actually needs one: only users outside your Plex Home.
The wiki was checked against the app throughout and corrected where it had drifted. Most importantly, a new cleanup rule starts with Dry run only off and Delete file from disk on. The guide now says to turn dry run on before you save.
1.0.5
6 October 2026
Latest Windows installer. Runs Kustos as a service on port 8787. Upgrading from 1.0.4 or earlier: run this installer over the top — no uninstall, no re-claim, and your database, connected apps and artwork all stay. Also available as a Docker image for the first time: ghcr.io/kustos-wiki/kustos:1.0.5. See the wiki for the compose file.
Requests arrive with the settings you meant. Approving a request by hand used to go around everything Kustos knew. The advanced approve panel now starts from what Kustos would have done on its own: The requester’s identity tag is pre-ticked, alongside any tag already on the request. Overseerr’s update replaces the tag set, so this is the difference between keeping your tags and quietly destroying them. A matching arr rule’s quality profile and root folder are pre-selected, with the rule named above the boxes — so a hand-approve and a rule-approve land in the same place. Rules that could not be judged are listed by name, with the conditions that stopped them, instead of silently appearing not to match.
Genre and keyword rules can now be judged at request time at all. The metadata cache is filled from your library, and a requested title is by definition not in it yet — so every rule keyed on genre was being judged against an empty list. “genre contains Animation” was false for every cached title and “genre doesn’t contain Anime” was true for every cached title. Requested titles are now fetched on demand, before the rule indexes are built.
Every overlay setting explains itself. All 214 settings across the overlay presets now carry a tooltip — hover any label. The same sentences are published on the wiki as a complete reference, generated from the app’s own catalogue so the two cannot drift. Two-column rows line up again: a label that wrapped used to push its own control down a line while its neighbour stayed put.
Poster logos can follow your text colour. In Poster Studio’s logo zone, Match text colour draws the title logo in whatever colour your text is set to — and keeps following it, so changing the text carries the logo with it. A colour box beside it overrides that when you want something else. The frame keeps its own colour either way.
Logo and brand boxes work on any design. “My template boxes” used to be a template, so choosing it replaced the design you were on. It is now a setting that sits on top of gradient, blank, horizon, top plate and full bleed — which makes the commonest layout in this community possible: a gradient, a brand mark, and the title under it.
Cleanup badges stop outliving the problem. A cleanup rule that reads the request list badges itself when that read fails, and the badge only cleared on the rule’s next evaluation — every six hours. A two-minute Overseerr restart therefore put error badges on screen for the rest of the night. They now clear as soon as the service answers again, and only for rules waiting on exactly that service.
Artwork reaches every copy. A poster applied to a title now reaches every Plex copy of it, not just the first one found — the case that matters if you hold a film at two qualities or across two libraries. Backgrounds share the same way, and every apply path mirrors through one mechanism rather than each having its own. Seasons mirror with their posters, and a season’s copies are no longer confused with its show’s.
Media Library’s toolbar is one row again. The three view toggles — show all titles, hide duplicates, show all copies — are now a single Showing control that states what you are looking at rather than what clicking would do: “Showing: everything · Showing: active only, one row per title”. Nothing is hidden by the collapse: every non-default is named on the button, so a narrowed library can never look like the whole one. Needs an ID moved inside it and appears only when something actually needs one.
Suggestions stops showing a merged account as a second person. An account merged into another still had its own suggestions, and the people chips were built straight from those rows — so a merged-away account appeared as a second person under the same name. Its suggestions are left exactly as they are; it is simply no longer offered as somebody to suggest for.
A poster reaches every Plex copy of its title, not just the first one found.
The download page reads its own version and checksum from the published release instead of being told them by hand — they had gone stale three releases running, and a stale checksum reads as a tampered installer.
Four new wiki pages for the problems people arrive with: coming from Kometa, a cleanup that deleted a show someone was watching, title cards without making thousands by hand, and feeding a 4K Sonarr alongside your main one. Plus one on multi-user Trakt sync.
1.0.4
5 October 2026
Latest Windows installer. Runs Kustos as a service on port 8787. Upgrading from 1.0.3 or earlier: run this installer over the top — no uninstall, no re-claim, and your database, connected apps and artwork all stay. Four things that were quietly reporting the wrong answer, and one that could never report a right one.
A Plex token that stops working now says so. Kustos checked that Plex was reachable and called that “connected” — but it was asking /identity, Plex’s discovery endpoint, which answers anyone with no token at all. Measured against a real server with a deliberately wrong token: /identity returns 200 while /library/sections, /:/prefs and /myplex/account all return 401. So a revoked or expired token passed both the Test button and the scheduled health check for ever, while artwork, watch data and collections quietly stopped working. And a refused credential now says it is a sign-in problem rather than an outage, because waiting will never fix a 401.
The cleanup preview says which rule it is about. The preview is computed from the rule as saved; the editor above it is what you are typing. Change anything and the two describe different rules — so a protection toggle you had just switched off kept producing an error about protection being on. An unsaved edit now gets a banner, and the timestamp reads “Saved rule, updated …”. It is still computed from what will actually run, deliberately: it is what you check before trusting a rule that deletes files.
The “protect these users” picker can no longer be empty while Kustos knows the answer. The chips came from plex.tv, falling back to Tautulli, then giving up — so on an install where neither answered, a cleanup rule with multi-user protection switched on could not be satisfied at all. Kustos’s own record of those accounts is now the last resort.
TMDb chart collections can prune again. Popular, Top Rated, Trending, Airing Today and On The Air are ranked feeds with no end, and reading them stopped at a 5-page safety cap — reported as a truncated read, which marked the build degraded, which downgrades a syncing collection to add-only. On every build, on every install, for ever. The result: those collections could only grow. They now carry a visible limit of 100, the same number the cap was already delivering, and existing ones are given it on upgrade.
The checksum on this page matches the file again. It was left at 1.0.3’s value when 1.0.4 shipped, so anyone verifying the download got a mismatch — which reads as a tampered installer rather than a stale page. Same mistake as 1.0.2, and this time the version number beside it was stale too.
1.0.3
4 October 2026
Latest Windows installer. Runs Kustos as a service on port 8787. Upgrading from 1.0.2 or earlier: run this installer over the top — no uninstall, no re-claim, and your database, connected apps and artwork all stay. Mostly Poster Studio: the twelve canvas designs gained the controls they were missing, the ones that did nothing are gone, and every control now appears only on the templates it can actually change.
Logos can be filtered by language. TMDB and Fanart both label every logo with its language and Kustos was discarding it, so the English wordmark, the Japanese one and the textless one arrived as three identical-looking tiles. Every logo now carries its language, with a one-click filter and live counts — which is what makes a whole set match. It labels and offers rather than deciding: the Japanese wordmark is the right pick on an anime title.
The template picker is grouped by family and ordered so similar designs sit together, rather than by when each was added. “My template boxes” became a switch rather than a template, and custom boxes and uploaded frames no longer appear on designs that cannot use them.
Colour controls, sorted out. The accent picker appears wherever something can actually use it, and Auto means auto on the canvas designs too. The gradient and the scrim each got their own colour instead of borrowing one. Bottom band, Bezel and Notched take a colour for their band. Text Color stopped reaching inside the year box, and the year box, network plate and rules each got their own.
The network mark got its own type, weight, plate colour, outline and an off switch, and those controls moved to where you would look for them. The art window outline got a real thickness and a real Off. Ornate is now a solid mount you choose the colour of, rather than a black border painted over the artwork.
Year size and weight work on all twelve designs — four of them drew the year by a path that ignored the weight setting entirely. Font weights are font choices now: the separate weight sliders are gone and IBM Plex Mono’s Medium, SemiBold and Bold sit in the font list with the rest of your fonts.
A long collection name wraps instead of shrinking. Drawing the name meant the font size depended on how long the name happened to be, so two collections came out at different sizes and looked like two different designs on the same shelf.
Season posters say what you type. A template can set its own season wording and specials label instead of a hardcoded “S1”, and the cover keeps its year. Title cards show the episode code format you picked, not a hardcoded one.
A title with no file stops claiming it is downloaded. Kustos starts every series at “complete” and only moves it when the arr says otherwise — and Sonarr’s missing list cannot name a show whose episodes have not aired, so such a show kept the default and showed a green “Downloaded” with nothing on disk. On the library this was measured against, 156 shows and 111 movies, and the library header’s “N downloaded” was overstated by exactly that many. They now read “Not downloaded”.
A cleanup rule you switch off can lose its error badge. The nightly pass is what clears those badges and it skips disabled rules, so an error earned in the minutes a rule was enabled became permanent — deleting the rule was the only way out.
Kustos says why an arr it installed cannot see a NAS. Kustos runs as a Windows service under the SYSTEM account and the arrs it installs run as its child processes, so they inherit it — and SYSTEM cannot sign in to a network share. The root folder came back empty rather than as an error, with nothing to explain it. If your media is on a NAS, install the arrs yourself and set their service to log on as your own account.
Removing a font folder now stops its fonts loading, not just their previews. And the checksum on this page matches the file again — it was left at 1.0.1’s value when 1.0.2 shipped, so anyone verifying the download got a mismatch.
1.0.2
4 October 2026
Windows installer. Runs Kustos as a service on port 8787. Upgrading from 1.0.1 or 1.0.0: run this installer over the top — no uninstall, no re-claim, and your database, connected apps and artwork all stay.
Artwork can draw a wordmark for a title that has none. A template’s “No logo found” setting gains “Draw the title with AI”, which draws a wordmark matched to that title’s own poster typography and colour instead of writing the name in plain type. It uses your own AI key — the same one textless detection needs — so there is nothing to buy from us and nothing runs if you have not added one. One call per title the first time, saved into the title’s folder and reused for ever after. Any failure falls back to drawing the title as type, never to skipping the poster.
A collection can borrow a member film’s wordmark and have the missing word composed underneath it, for collections whose own logo does not exist.
Cleanup has a deletion history. A third tab beside Rules and Queue: what was deleted in the last 24 hours and 7 days with the space freed, then one line per deletion naming the title or episode, the rule that did it, and why.
Kustos can install and configure qBittorrent and Tautulli for you on Windows, natively, with a Task Scheduler logon task — previously only possible by hand. It generates qBittorrent’s credentials, switches Tautulli’s API on, and links the new Tautulli to your Plex server.
Reset Plex images is its own screen under Settings → Media management. It changes only the picture Plex shows and touches no Kustos record and no file on disk.
Media Library has a “Needs an ID” filter with a live count, for titles whose TMDB or TVDB id is missing or broken — an unmatched title reads as an empty catalogue in the artwork panels, and this is how you find it.
Activity → Downloads gained a Completed folder panel that reconciles the completed-downloads folder against your library, so you can see what finished and was never imported, with the reclaimable space totalled.
Per-person MDBList keys, per-person catch-up days, a public Trakt profile as an alternative to linking an account, and a prompt for what to date a watch that arrives with no date.
A cleanup rule’s own cap no longer refuses the run. It queues everything with their countdowns and deletes up to the cap per pass, leaving the rest for the next one. The across-all-rules ceiling for a single pass still refuses outright.
An arr rule over its max-changes cap now throttles instead of refusing — it applies the first N and continues next run.
Protected titles are no longer listed in the cleanup preview: the preview is what the run would delete, and protection is reported as a count above it.
“Run & delete now” honours your delete caps, re-runs the rule first, and deletes only what is still eligible.
An un-mark made in the Plex app now reaches Trakt and Simkl. Only un-marks made inside Kustos propagated before.
A collection build no longer stops at the first title an *arr refuses. It carries on, and each failure is reported by name with its reason, so you can see which title to exclude.
The Add button on a collection’s missing member reported success and added nothing when Radarr had no match for the title.
The owner’s own account is recognised after an account merge — People and Watchlists showed the retired account as the admin and your live one as an ordinary user.
An unreachable *arr no longer reads as “this arr has no tags”. The tag picker answered the same way for an outage as for an empty instance, and the collection builder judged your saved tags against that empty list.
“Forget title cards” forgot nothing — it matched an exact kind that no row has ever used. “Forget posters” left every season poster owned.
A leaving-soon countdown that changes now repaints instead of being skipped, so a badge comes off when the item stops leaving rather than waiting for the next full run.
The deletion history records what the files weighed rather than the whole series, so “space freed” is the real number.
Watch history loads a page at a time instead of the entire history on every open, and short plays can be kept by percentage as well as by seconds.
Plus a large number of smaller artwork, collection, watch-sync and interface fixes.
1.0.1
27 September 2026
Windows installer. Runs Kustos as a service on port 8787. Upgrading from 1.0.0: run this installer over the top — no uninstall, no re-claim, and your database, connected apps and artwork all stay.
Upgrading in place now works. 1.0.0’s installer could not replace the program file while the service was running: it reported success and left the old version in place. This build stops the service first, and refuses rather than installing over a running one.
A broken IPv6 path no longer looks like a licence outage. On a network where the v6 route is dead, the licence check could fail forever while every other site worked. It now retries over IPv4.
A complimentary or active subscription no longer reads “Unknown” with purchase buttons under it.
Titles added to Plex while Kustos is running are picked up by the artwork job instead of being silently skipped until a restart.
Artwork stops redrawing what it already drew. Candidate ordering was non-deterministic, so each nightly run could pick a different image and write again.
Settings → Artwork is a new page, and the asset folders are set there.
Kustos knows its own version, under Settings → Updates, with a check for newer releases.