A web-based application for analyzing video files to determine their compatibility based on media properties. Built in the Servarr family style with integration support for Sonarr, Radarr, and Jellyfin.
This software is in early development stage. Use it at your own risk. The developers are not responsible for any data loss, system damage, or other issues that may arise from using this software. Always backup your data before installation and use.
- Video Analysis: Analyze video files based on media properties (codecs, containers, bit depth, HDR, etc.)
- Compatibility Rating: 0-100 rating scale with configurable thresholds and impact weights
- Library Management: Scan and manage multiple video libraries with background processing
- Servarr Integration: Sonarr, Radarr, and Jellyfin integration for automated analysis and redownloads
- Tdarr Webhook: Automatic rescan after transcoding
- Modern Web UI: Servarr-style dark theme interface
Docker Hub Image: bridgemill/optimarr:latest
- Clone this repository
- Edit
docker-compose.ymlto configure volumes - Start the container:
docker-compose up -d
- Open
http://localhost:5000
docker pull bridgemill/optimarr:latest
docker run -d \
--name optimarr \
-p 5000:8080 \
-v $(pwd)/config:/app/config \
-v $(pwd)/data:/app/data \
-v $(pwd)/logs:/app/logs \
-v $(pwd)/videos:/videos:ro \
--restart unless-stopped \
bridgemill/optimarr:latest- Product Requirement Document - Product specifications and requirements
- System Architecture - Technical architecture and design
- Developer Guide - Development workflows and patterns
- Changelog - Version history
Base API path: /api
| Method | Path | Description | Example |
|---|---|---|---|
POST |
/api/analysis/analyze |
Analyze a single video file path and return compatibility report data. | Request body: { "videoPath": "/videos/Movie.mkv", "subtitlePath": null } |
POST |
/api/library/scan |
Start a background scan for a library path. | Request body: { "path": "/videos/movies", "name": "Movies", "category": "Movies" } |
GET |
/api/servarr/status |
Return Sonarr/Radarr enabled/connected/version status used by the settings UI. | Response includes sonarr and radarr status objects |
GET |
/api/playback/history |
Return paged playback history with filters (device, user, play method, library path). | Example: /api/playback/history?page=1&pageSize=50&isTranscode=true |
GET |
/api/system/health |
Liveness endpoint used by Docker/container health checks. | Response: { "status": "healthy", "version": "x.x.x", "timestamp": "..." } |
For the full endpoint set and schemas, run the app in development and open Swagger UI at /swagger.
For issues and questions, please open an issue on the project repository.
License: MIT License


