Jellyseerr is a media request and discovery front end that lets your users browse TMDB, ask for a film or series, and have the request handed to Sonarr or Radarr automatically. As of February 2026 it merged with Overseerr and continues under the name Seerr, which is what you now install.
Our verdict on Jellyseerr#
The lineage matters more than the features right now. Overseerr was Plex-only; fallenbagel forked it in 2022 as Jellyseerr to add Jellyfin and Emby support, then Overseerr stalled while the fork kept moving. On 10 February 2026 the two teams merged into a single project called Seerr, released as v3.0.0, and both Jellyseerr and Overseerr are deprecated. fallenbagel/jellyseerr now redirects to github.com/seerr-team/seerr, the image is ghcr.io/seerr-team/seerr, and migration is automatic on first start: it reads your existing config and does not delete the old data, so a careless cutover leaves two instances running against the same library. The container also now runs as the non-root node user (UID 1000) and wants --init, so a straight image swap without chowning /app/config fails to start. If you are still on a jellyseerr tag, you are on a frozen codebase.
Who Jellyseerr is for#
Choose it if
- You run Jellyfin or Emby and want the Overseerr experience, which was Plex-only before this fork existed.
- You share a library with people who currently text you titles and you want that in a queue with approvals.
- You want requests to land in Sonarr or Radarr with the right quality profile and root folder chosen per user.
- You are on Overseerr and need a maintained path forward now that it is deprecated.
Look elsewhere if
- You are the only user of your library, in which case adding series directly in Sonarr and Radarr is fewer moving parts.
- You need OIDC login today: it is still a preview branch, not a stable feature.
- You are not running Sonarr or Radarr, since without them requests are just a list nobody acts on.
What running it actually looks like#
One container on port 5055 with a single /app/config volume. Before it is useful, four things must already exist and be reachable: your media server with an admin token, Sonarr and Radarr with API keys, and the exact root folder paths those apps use. Setup is a wizard: sign in with your Jellyfin, Emby or Plex admin account, import users from that server, then connect each *arr instance and map quality profiles and root folders per request type. Getting the root folder wrong is the classic failure, because requests are accepted and then never import. On the Seerr image, add init: true to compose and make sure /app/config is owned by UID 1000, since the container dropped root. Upgrades are a tag pull with automatic schema migration; there is no supported downgrade after a migration runs.
Resource profile#
- Memory
- 220 MB idle, around 450 MB in ordinary use. A Next.js server plus a SQLite connection; it grows with the size of the media cache it builds from your library and TMDB lookups, not with request volume.
- CPU and acceleration
- Effectively idle between requests. The one sustained load is the periodic full sync against your media server's library, which on a large Plex or Jellyfin instance walks every item and can run for many minutes.
- Storage growth
- A few hundred MB at most: the SQLite database plus cached artwork references. It stores no media and downloads nothing itself.
- Operational load
- 2 of 5, Light. One container and one SQLite file, but it is coupled to four other services (media server, Sonarr, Radarr, TMDB) and breaks when any of their API keys, URLs or root folder paths change. The 2026 rename to Seerr also means an image and repository migration you have to actually perform.
Figures describe a small single-household install and are the working assumptions behind our stack planner. Your numbers will differ with library size, user count and hardware. See methodology.
Data and backup surface#
Everything is in /app/config: db/db.sqlite3 holds users, requests, approvals, issue reports and notification agents, and settings.json holds your media server and *arr connections including API keys. That JSON file contains credentials, so treat the backup as a secret. Stop the container or use SQLite .backup rather than copying the database live. The cache/ subdirectory is regenerable image and API caching and can be excluded. Nothing here is reconstructible from your media server: request history and who asked for what exist only in this database. If you are migrating from a jellyseerr or overseerr config directory, copy it rather than moving it, since the automatic migration leaves the original intact and you may want to fall back.
Derived backup shape
SQLite backup. sqlite3 <db> ".backup out.db" while running, or stop the container and copy. A live cp of a WAL-mode SQLite file can restore corrupt.
Traps and surprises#
Jellyseerr is now Seerr, and the old tags are frozen
The Overseerr and Jellyseerr teams merged on 10 February 2026 into Seerr v3.0.0, and both predecessors are deprecated. The repository redirects to seerr-team/seerr and the image is ghcr.io/seerr-team/seerr. LinuxServer deprecated their Overseerr image over it. Staying on a jellyseerr tag means no fixes, including security ones. The migration is automatic on first start with the new image.
The Seerr container runs as non-root and needs init
Seerr dropped to the node user, UID 1000, and expects PID 1 signal handling. A straight image swap from jellyseerr without chowning the config directory to 1000:1000 produces permission errors on the SQLite database at startup. Add init: true to compose (or --init on the CLI) and fix ownership before the first start, not after it has half-migrated.
Migration copies rather than moves, so both can run
On first start Seerr migrates your Overseerr or Jellyseerr config but does not remove the old data. If you leave the old container running you end up with two request front ends pointed at the same Sonarr and Radarr, duplicating requests and approvals. Stop and disable the old instance as part of the cutover, and keep its config directory as your rollback.
Root folder and profile mapping is where requests die
Seerr passes a root folder path and quality profile to Sonarr or Radarr when a request is approved. If the path does not exist exactly as that app sees it, the request is accepted in the UI and silently never becomes a download. Copy the root folder string from the *arr app itself rather than typing your host path, and test with one request before importing all your users.
OIDC is still a preview branch
Despite long-running pull requests, OpenID Connect login is not in the stable image as of the Seerr 3.x line. Existing users also hit a UNIQUE constraint failed on user.email when account linking is attempted, because automatic linking is not implemented. If you need SSO now, put Authelia or Authentik forward auth in front of port 5055 and keep media-server login as the identity source.
Specifications#
- Category
- Media servers and libraries
- Licence
- MIT (Permissive)
- Written in
- TypeScript / Node.js
- First release
- 2022
- Maturity
- Stable
- Datastore
- SQLite
- Default ports
5055- Ships as
- docker, node from source
- arm64 builds
- Yes
- Identity
- Auth proxy only. Login delegates to your media server's accounts (Jellyfin, Emby or Plex) plus local users; native OpenID Connect is still only in a preview branch rather than a stable release, so IdP integration means forward auth in front.
- Replaces
- Overseerr, Ombi, Plex request forms
- Project site
- docs.seerr.dev
- Source
- github.com/seerr-team/seerr
- Documentation
- docs.seerr.dev
Alternatives to Jellyseerr#
Everything else in media servers and libraries, closest in operational weight first.
| Tool | Ops load | Idle RAM | Licence |
|---|---|---|---|
| Audiobookshelf | 2, Light | 200 MB | GPL-3.0 |
| Calibre-Web | 2, Light | 120 MB | GPL-3.0 |
| Emby | 2, Light | 350 MB | Proprietary |
| Jellyfin | 2, Light | 280 MB | GPL-2.0-only |
| Kavita | 2, Light | 250 MB | GPL-3.0 |
| Plex Media Server | 2, Light | 400 MB | Proprietary |
Where Jellyseerr comes up elsewhere#
Head to head
Migration guides
Sources#
Facts on this page were checked against the project's own material. Where a number is our own estimate rather than a published figure, the text says so.
Published . Last reviewed . Found something out of date? Tell us and we will fix it and log the change.