Kometa is a Python script that takes control of a Plex library and rewrites the parts Plex leaves to you: artwork, titles, summaries, collections and overlays. It reads YAML files that describe what you want — “make a collection of every film in the IMDb Top 250”, “put a 4K badge on anything that is 2160p”, “rename this show the way I like it” — and then applies those rules to the library through the Plex API, on a schedule you set.
It is the project formerly known as Plex Meta Manager, now maintained by the Kometa-Team and released under the MIT licence. Third-party metadata comes from services such as TMDb and IMDb, and the project ships pre-made “defaults” files, so most libraries can get curated collections and overlay sets without writing the YAML from scratch. It is not a Plex replacement and not a media server: it is the automation layer that keeps an existing Plex library tidy, themed and consistent.
config.yml plus optional collection, overlay, metadata and playlist files, all checkable without touching the library using the built-in config validation mode.kometateam/kometa image is the documented way to run it, with native Python 3.11+ as the alternative.Plex will organise what you own, but it will not curate it. Collections that track a chart, poster badges that show which films are 4K, consistent artwork across a library — all of that is manual work, and it rots the moment new media arrives. Kometa turns those wishes into files that are re-applied on a schedule, so the library keeps the shape you gave it. The YAML is versionable and the defaults make the first win cheap: enable one collection file, run it once, and the library changes.
The documented route is Docker: pull kometateam/kometa, mount a config directory, and put a config.yml in it with the Plex URL and token plus one entry per library. Point the library at a collection or overlay file — the project’s defaults are the fastest start — and run it once by hand to see the result before putting it on a schedule. The --validate-config mode checks the YAML and everything it includes without writing to Plex, which is the safe way to iterate on rules. Native installs need Python 3.11 or newer and the dependencies in the repository.