Skip to main content
Back to projects
activeFeb 20, 2026

Sortarr

Automated media organization daemon that watches torrent directories, matches against TMDB/TVDB/AniList, and organizes into Jellyfin-compatible libraries.

rustreacttypescriptaxumsqlitemediajellyfindaemon

Overview

Sortarr is a Rust daemon paired with a React web UI that automates the tedious process of organizing downloaded media. It monitors torrent client directories, identifies movies, TV episodes, and anime by matching against TMDB, TVDB, and AniList metadata APIs, then hardlinks files into a clean Jellyfin-compatible library structure with proper NFO metadata.

Key Features

  • Directory Watching: Monitors torrent download directories for new completions with configurable polling and filesystem events.
  • Multi-Source Metadata Matching: Queries TMDB, TVDB, and AniList APIs to identify media, with confidence scoring and manual override for ambiguous matches.
  • Hardlink Organization: Uses hardlinks to organize files into Jellyfin's expected folder structure without duplicating disk usage.
  • NFO Metadata Generation: Creates Jellyfin-compatible NFO files with rich metadata for each organized item.
  • Web Dashboard: React-based UI showing queue status, match results, library statistics, and manual intervention controls.
  • WebSocket Real-Time Updates: Live progress streaming from daemon to web UI via WebSocket connections.
  • Prometheus Metrics: Built-in metrics endpoint for monitoring throughput, match rates, and error counts.

Technical Architecture

The daemon is the core process handling file monitoring, metadata resolution, and organization logic. The web UI connects via REST API and WebSocket for real-time status updates. SQLite with WAL mode stores match history, library state, and configuration.

Core components:

  • File Watcher: Monitors configured directories for new media files with deduplication.
  • Metadata Resolver: Multi-provider matching pipeline with confidence scoring and caching.
  • Organizer: Hardlink-based file placement with rollback support.
  • API Server: Axum-based REST + WebSocket server for the web dashboard.

Technology Stack

  • Backend: Rust 2021, Axum 0.8+, Tokio, reqwest, SQLite (rusqlite with WAL)
  • Frontend: React 18+, TypeScript, Vite, Tailwind CSS
  • Integration: TMDB API, TVDB API, AniList GraphQL, Jellyfin NFO format
  • Monitoring: Prometheus metrics endpoint, structured logging

Current Status

Active development with core daemon architecture, database schema, and API design complete. File watching, metadata matching, and hardlink organization pipeline functional. Web UI in progress with real-time WebSocket updates.

Have questions about Sortarr?

Try asking the AI assistant! Here are some ideas:

Related Projects