Riven is configured entirely through environment variables. Every core setting is prefixed withDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/rivenmedia/riven-ts/llms.txt
Use this file to discover all available pages before exploring further.
RIVEN_SETTING__ followed by the camelCase setting name. Plugin-specific settings use a separate RIVEN_PLUGIN_SETTING__ prefix. All variables are typically collected in a .env file passed to Docker via env_file.
Riven validates every setting at startup using Zod schemas. If a required variable is missing or a value fails validation, the process exits immediately with a clear error message. Set
RIVEN_SETTING__printConfigurationOnStartup=true to log the fully-parsed configuration on boot — useful for debugging.Database
PostgreSQL connection URL. The host must be the Docker service name (e.g.
riven-db), not localhost — localhost inside the container refers to the Riven container itself.Redis connection URL. Like the database, use the Docker service name as the host.
Enable verbose SQL query logging from the ORM. Useful when diagnosing slow queries or migration issues. Generates significant log volume — keep disabled in production.
File path to the SSL root certificate for the database connection. The file is read at startup and its contents used to establish a TLS connection. Required when connecting to managed PostgreSQL services that enforce SSL (e.g. RDS, Neon, Supabase).
File path to the SSL client certificate for mutual TLS authentication.
File path to the SSL private key for mutual TLS authentication.
Virtual File System (VFS)
The path inside the container where Riven mounts its FUSE virtual file system. This must match the container-side path of your Docker volume mount — not the host path.
When
true, Riven attempts to unmount the mount point before remounting on startup. This ensures a clean state if the previous run exited uncleanly. Disable only if you manage the mount lifecycle manually.Enable verbose logging for VFS operations. Useful for diagnosing mount or file-visibility issues. Generates very high log volume.
GraphQL API
The interface the GraphQL HTTP server binds to. The default
localhost means the server is only reachable from within the container. Set to 0.0.0.0 to bind to all interfaces so the API is reachable from the Docker host and through a reverse proxy.The port the GraphQL server listens on. If you change this, update your
ports mapping in docker-compose.yml to match.Logging
Minimum severity level for log output. Messages below this level are suppressed.Accepted values (most to least verbose):
silly · debug · verbose · http · info · warn · errorDirectory where log files are written when the
file transport is enabled. The container default is /app/logs, which is bind-mounted to ./logs on the host in the reference compose file.Master switch for all logging. Setting this to
false silences all output regardless of logLevel.Which log transports are active. Accepts a JSON array containing
"console", "file", or both.Whether to include full stack traces when unexpected errors occur. Disable to reduce log noise if errors are known and benign.
Plugins
A JSON array of plugin names to activate. Only plugins listed here are loaded at startup.Available plugin names:
comet · jellyfin · listrr · mdblist · notifications · plex · seerr · stremthru · subdl · tmdb · torrentio · tvdbRanking
Path inside the container to the JSON file that controls how Riven scores and ranks scraped torrents. The file is auto-generated with defaults on first startup if it does not exist. The default resolves to
/app/riven-ranking-config.json inside the container.Scraping
Maximum number of scrape attempts before Riven gives up on an item. Set to
0 to allow unlimited attempts (not recommended — items that can never be scraped will consume queue resources indefinitely). Must be between 0 and 10.Cooldown periods in hours applied after consecutive failed scrape attempts. Format:
[after >2 failures, after >5 failures, after >10 failures].When
true, Riven prefers to download complete season packs over individual episode files when both are available.When
true, Riven attempts to download torrents whose file contents cannot be verified without downloading first. Enabling this improves coverage for hard-to-find items but degrades overall performance by increasing failed download attempts.When
true, Riven only scrapes dubbed versions of anime titles.Minimum average bitrate (in kbps) required for movie downloads. Torrents below this threshold are skipped. Optional — no minimum is enforced by default.
Minimum average bitrate (in kbps) required for episode downloads. Optional — no minimum is enforced by default.
Scheduling
How many minutes to wait after an item’s scheduled air date before attempting to re-index it. A 30-minute buffer accounts for encoder/uploader delays.
When an episode has no known air date, Riven adds this many days to the current date to estimate a future release date for scheduling purposes.
Shutdown
How long Riven waits for in-flight jobs to complete during a graceful shutdown before forcefully terminating. Increase this if you have long-running plugin operations.
Debugging
When
true, the fully-parsed and validated configuration object is printed to the log at startup. Useful for verifying that environment variables are being read correctly. Disable in production as it may log sensitive values such as API keys.Danger Zone
When
true, all Redis data is flushed on every application startup. This cancels all in-flight jobs. Safe only during development when you want a clean queue state.When
true, the database is dropped and recreated on every application startup. This deletes your entire library. Use only in development.Plugin Settings
Plugin-specific settings follow a separate naming convention:<PLUGIN_NAME> is the uppercase plugin name and <settingKey> is the camelCase setting key defined by that plugin.
Examples
.env.riven
Plugin names are case-sensitive in the environment variable name.
REPO_PLUGIN_TMDB is correct; REPO_PLUGIN_tmdb will not be recognized.Minimal Production .env
A trimmed.env file covering the most common single-server deployment:
.env.riven