When something goes wrong, Riven gives you several tools to diagnose the problem: a live log endpoint, a one-click log uploader, a full debug bundle generator, and health/service check endpoints. This guide walks through each tool, then covers the most common issues you’re likely to encounter and how to fix them.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/rivenmedia/riven/llms.txt
Use this file to discover all available pages before exploring further.
For real-time help, join the Riven Discord. When reporting a bug, always attach the output of
POST /api/v1/debug — it includes logs, a database snapshot, and system information in one step.Section 1: Getting Logs
View logs in the browser or via API
GET /api/v1/logs returns the current log file as an array of strings (one entry per line). This is useful for quick inspection or piping into jq:
Upload logs to a paste service
POST /api/v1/upload_logs reads the active log file and uploads it to paste.c-net.org, then returns a shareable URL. Limits: 50 MB file size, 180-day retention.
Generate a full debug bundle
POST /api/v1/debug does everything in one request: uploads the log file, creates a database backup snapshot, and returns system information. Use this when filing a bug report.
| Field | Type | Description |
|---|---|---|
success | bool | true if both log upload and DB backup succeeded |
log_url | string | null | URL of the uploaded log file on paste.c-net.org |
db_backup_filename | string | null | Filename of the database snapshot saved locally |
system_info | object | Platform, Python version, CPU count, load avg, memory, swap, disk |
errors | list[string] | Any non-fatal errors encountered during bundle generation |
Adjusting log verbosity
The log level is controlled bylog_level in the root AppModel. Valid values are TRACE, DEBUG, INFO, WARNING, ERROR, and CRITICAL (default: INFO). Set it to DEBUG for detailed service output, or TRACE for maximum verbosity:
enable_network_tracing:
Section 2: Common Issues
Items are stuck in the Scraped state
Items are stuck in the Scraped state
Items enter
Scraped when Riven has found a matching torrent and is waiting for the debrid provider to add it. If they never advance to Downloading or Completed:-
Check your debrid API key. Go to
GET /api/v1/settings/get/downloadersand verify the API key is set and correct. Test it directly against the debrid provider’s API. -
Verify your account is premium. Real-Debrid and AllDebrid free accounts cannot add torrents for instant download. Use
GET /api/v1/downloader_user_infoto check your premium status:Look for"premium_status": "premium"in the response. If you see"free", upgrade your debrid account. -
Enable
DEBUGlogging and restart Riven to see the exact error returned by the debrid API.
Plex shows an empty /mount after Riven restarts
Plex shows an empty /mount after Riven restarts
This is a mount propagation issue, not a Riven bug. The FUSE filesystem needs to be visible inside the Plex container.Quick checklist:
- Host directory has
sharedorrsharedpropagation (findmnt -T /path/to/riven/mount -o PROPAGATION). - Plex’s Docker volume uses
:rslave,z(not:rsharedor no flag at all). filesystem.mount_pathin Riven settings is the container path/mount, not the host path.
Services are not initializing
Services are not initializing
Use Example response:Any service showing
GET /api/v1/services to see which services started successfully:false failed to initialize. Common causes:- Missing or invalid API key / URL for that service — check its settings key.
- Network unreachable — verify Riven can reach the service from inside the container (
docker exec riven curl http://plex:32400). - Service not enabled — confirm
enabled: trueis set for the service.
DEBUG logging and restart Riven to see the initialization error in the logs.Items never leave the Requested state
Items never leave the Requested state
Items stay
Requested when no scraper finds a matching result:-
Confirm at least one scraper is enabled. Check
GET /api/v1/services— at least one scraper (e.g.torrentio,comet) must showtrue. -
Check scraper results manually. Enable
DEBUGlogging, then re-request the item and watch the logs for lines likeTorrentio returned 0 results. Zero results from all scrapers means no torrent was found. -
Verify scraper connectivity. Some scrapers require an API key (Orionoid, Jackett, Prowlarr). Use
enable_network_tracingto inspect the raw HTTP calls and responses. - Check ranking filters. If scrapers return results but items still don’t advance, your RTN ranking settings may be filtering out all candidates. Temporarily lower minimum rank thresholds to verify.
High memory usage
High memory usage
RivenVFS caches file chunks in memory and on disk. Two settings control this:
filesystem.cache_max_size_mb— maximum on-disk cache size in MB. Reduce this if disk usage is too high.- Eviction policy — defaults to
LRU(least-recently-used). If you prefer time-based eviction, switch toTTLand configurettl_seconds.
filesystem.fetch_ahead_chunks (default 4, each chunk is chunk_size_mb, default 32 MB). Setting it to 1 or 2 reduces prefetch while still enabling smooth playback for most streams.Database connection errors at startup
Database connection errors at startup
Riven requires PostgreSQL to be healthy before it starts. In
docker-compose.yml, the riven service has a depends_on with condition: service_healthy pointing to riven_postgres.If you see connection errors:- Check the PostgreSQL container is running:
docker ps | grep riven-db. - Verify the
RIVEN_DATABASE_HOSTenvironment variable matches the compose service name and credentials: - Check PostgreSQL logs:
docker logs riven-db. - Ensure the
pgdatavolume path on the host is writable by thePUID/PGIDuser.
Section 3: Health Checks
Use these endpoints to quickly assess Riven’s state without reading the full log.Check if Riven has finished initializing
Check which services are running
true / false). Services with false either failed to initialize or are disabled in settings.
Get library statistics
| Field | Description |
|---|---|
total_items | Total media items tracked in the database |
total_movies | Count of movie items |
total_shows | Count of show items |
total_episodes | Count of episode items |
total_symlinks | Number of items with active filesystem entries |
incomplete_items | Count of items not yet in the Completed state |
states | Breakdown of item counts by state |
activity | Daily counts of items requested (ISO date → count) |
states map is especially useful: if you see a large number of items stuck in Scraping or Requested, cross-reference with the common issues above.