The documentation here is for an unreleased version of Recyclarr.
Visit the documentation site for the Current Version instead.Server
server:
port: 7982
bind_address: localhost
management:
port: 7983
metrics: true
logging:
format: json # leave out to detect from the console
files: true
schedule:
enabled: true
cron: 0 0 * * *
The server section configures the persistent Recyclarr server, which is what runs
when you start recyclarr serve or the Docker image. The server listens for HTTP requests from the
CLI and other clients, and it runs syncs on a built-in schedule.
The server reads settings.yml once at startup. Restart the server after changing these settings.
port
Optional. Default: 7982
The TCP port the server listens on. Valid values are 1 through 65535.
The Docker image ignores this setting and always listens on port 7982 inside the container. To use
a different port on the host, change the Docker port mapping instead (for example, 8000:7982).
bind_address
Optional. Default: localhost
The network address the server listens on. Use localhost to accept connections only from the same
machine, or 0.0.0.0 to accept connections on all network interfaces.
The Docker image ignores this setting and always listens on all interfaces inside the container.
management
Optional.
Controls the management port, a separate port that serves health probes and Prometheus metrics without an API key. The server never serves these endpoints on the API port. Only a persistent server opens a management port; the temporary server started by a CLI command does not. See Monitoring for the endpoints and how to use them.
port
Optional. Default: 7983
The TCP port for health probes and metrics. Valid values are 1 through 65535. The management
port listens on the same address as the API (bind_address).
This port does not change when you change port. It must differ from the API port; if both
are the same, the server does not start.
The Docker image ignores this setting and always uses port 7983 inside the container. To use a
different port on the host, change the Docker port mapping instead (for example, 8001:7983).
metrics
Optional. Default: true
Serves Prometheus metrics at /metrics on the management port. Set to false to turn metrics off;
/metrics then responds 404 Not Found. Health probes keep working either way.
logging
Optional.
Controls where and how the server writes its log.
format
Optional. Default: Detected from the console
The format of the persistent server's console output (standard output). When you leave it out, the server writes text when its output goes to a terminal, and JSON when its output is redirected, as it is under Docker, Kubernetes, systemd, a Windows service, or a Homebrew service. Set a value to use that format everywhere:
json: one JSON object per line, for log collectors such as the container runtime or journald. Each object starts withtimestamp(UTC),level(trace,debug,info,warn,error, orfatal),message, andmessage_template. Events inside a trace addtrace_idandspan_id, and events with an error addexception.type,exception.message, andexception.stacktrace. The event's own properties follow as more keys.text: human-readable lines.
The temporary server started by a CLI command ignores this setting. It writes only errors to its console and the rest to log files.
files
Optional. Default: true
Writes log files to logs/server/ in the data directory. Every server writes them by
default, however you run it. These files hold the debug logs you attach to a
bug report. Log Janitor limits how many files the server keeps.
Set to false when something else already collects the console output and you do not want the
files, for example in Kubernetes.
schedule
Optional.
Controls the built-in sync schedule. Each scheduled sync covers every configured Sonarr and Radarr instance. The schedule does nothing when the CLI starts its own temporary server.
Only one sync runs at a time. If a sync is already queued or running when a scheduled time arrives, the server skips that scheduled sync and records it as skipped. The server does not run syncs it missed while it was stopped; it waits for the next scheduled time.
enabled
Optional. Default: true
Set to false to turn off the built-in schedule. Use this when an external scheduler, such as a
cron job on the host, starts syncs through the API instead.
cron
Optional. Default: 0 0 * * * (every day at midnight)
A standard 5-field cron expression (minute, hour, day of month, month, day of week). A seconds field
is not supported. Macros such as @daily, @hourly, and @weekly are also accepted.
Times use the system time zone. In a container, set the TZ environment variable; without it, the
container uses UTC.
If the expression is not valid and the schedule is enabled, the server does not start.