# What is an *arr stack?

The Servarr library managers, indexer managers, and download clients that make up a self-hosted media stack, and where Kochab fits.

Canonical: https://kochab.io/docs/what-is-an-arr-stack/

"*arr" is the shared naming pattern behind Sonarr, Radarr, Lidarr, and the rest of the
[Servarr](https://wiki.servarr.com) project, plus community apps built to the same shape -
separate apps, each managing a single kind of media library. A **stack** is those apps plus the
indexer-manager and download-client services that support them, usually running together on one
machine.

## The pieces

| Piece | Job | Examples |
|---|---|---|
| Library manager (*arr app) | Decides what belongs in your library, tracks what is missing, picks a release, hands it to a download client | Sonarr, Radarr |
| Indexer manager | Holds your indexer credentials and searches them through one endpoint | Prowlarr, Jackett |
| Download client | Fetches the release the library manager picked | SABnzbd, qBittorrent |
| Media server | Plays what has been imported into the library | Plex, Jellyfin |
| Request layer (optional) | Lets other people ask for a title without touching Sonarr or Radarr directly | Seerr |

Each piece is a separate service with its own API, web UI, and port. See
[Add and configure a service](/docs/add-a-service/) for the full list of what Kochab connects to.

## How a title moves through the stack

1. A title gets marked wanted - by you, or by someone else through Seerr.
2. The library manager asks its configured indexer manager(s) for matching releases and picks one
   against its quality profile.
3. It sends that release to a download client.
4. When the download finishes, the library manager imports it into the library.
5. The media server serves it.

Indexer manager and download client are two different jobs done by two different services - see
[Why is an indexer separate from a download client?](/docs/why-indexer-is-separate-from-download-client/)
for why that split exists.

## Where Kochab fits

Kochab is a controller for the stack, not a part of it: it talks straight to each service's own
API rather than adding a server of its own in the middle. See
[Getting started](/docs/getting-started/) for how connecting a service works and how Kochab
blends data across everything you have configured.

[Add and configure a service](/docs/add-a-service/) and the
[Service setup guides](/docs/service-setup/) cover connecting each piece by name.