Skip to main content

The documentation here is for an unreleased version of Recyclarr.

Visit the documentation site for the Current Version instead.

Client and Server

Recyclarr has two programs:

  • The server (recyclarr-server) does the work. It reads your configuration, talks to Sonarr and Radarr, runs syncs, and sends notifications.
  • The CLI (recyclarr) is a client. Each command sends a request to a server and shows the result. Other programs can send the same requests through the HTTP API.

The server reads your YAML configuration and settings.yml once, when it starts. If either is not valid, the server does not start. Restart the server after you change them.

Persistent Server​

A persistent server keeps running until you stop it. The Docker image runs one, and recyclarr serve starts one on your own machine.

A persistent server:

For CLI commands to use a persistent server, set server.base_url in cli.yml or set the RECYCLARR_SERVER_URL environment variable. The Docker image sets the variable for you.

Temporary Server​

If no server address is set, each CLI command starts its own temporary server. The temporary server listens only on the local machine, handles that one command, and stops when the command ends. It does not run the built-in schedule, and it does not keep its jobs after it stops. It still writes log files to logs/server/ and sends notifications.

This is the default when you run recyclarr outside Docker without any extra setup.

Sync Jobs​

Every sync runs as a job, whether the schedule, the CLI, or the API started it. The server runs one job at a time, oldest first. Other jobs wait in a queue.

Each job has one of these statuses:

StatusMeaning
pendingWaiting in the queue
runningSyncing now
succeededThe sync finished without errors
partialThe sync finished, but some changes failed
failedThe sync failed
interruptedThe server stopped while the job was pending or running
skippedA scheduled sync was not started because another job was already active

A persistent server keeps the 50 most recent finished jobs and their results, including across restarts. When the server starts, it marks jobs that were active at shutdown as interrupted. It does not run them again.