Parallel scan and enrich
Libraries are split into scan units that scan and enrich inside one shared scope, in parallel, with per-item progress streamed live to the admin UI.
Vora is not a thin index over a folder of files. It scans, enriches, analyzes, transcodes, records, recommends, and themes — and exposes all of it through one API that every client shares.
Libraries are split into scan units that scan and enrich inside one shared scope, in parallel, with per-item progress streamed live to the admin UI.
A native OS watcher or a polling watcher ingests new files one at a time, with configurable exclude filters so sample and extras folders stay out.
Multiple files for the same title become per-part editions with a version picker in the player, not duplicate entries in the grid.
A missing video is soft-deleted and hidden rather than dropped, with per-profile ratings and watch state preserved across a re-add.
Anything you edit by hand can be locked so the next metadata refresh leaves it alone — including manually authored chapter markers.
Native overlay badges render resolution, video range, and audio format onto posters on a schedule, resolved from the best part across versions.
Vora decides per session whether to direct play, remux, or transcode, then serves HLS from a signed, prefix-namespaced session directory.
Playlists and EPG sources are independent, so one guide can cover several providers and one provider can feed several playlists.
A proper music domain with genres, top tracks, liked songs, and a year recap.
A recommendation engine builds mixes and radio stations from what you actually listen to.
Genius and LRClib lyrics, plus Last.fm scrobbling when you want your history off-server too.
iTunes-backed discovery, subscriptions, new-episode feeds, and per-episode resume.
Audio-only IPTV streams played as a queue, with favorites that sync between the phone and the car.
Crossfade, an equalizer with five presets, a sleep timer, and configurable audio quality.
Multi-provider discovery feeds, actor pages, a watchlist, and a release calendar in month, week, or day view.
Collections sync their contents from Trakt, MDbList, or IMDb lists — or are assembled by an AI provider that understands a franchise and orders it chronologically.
A rule-tree evaluator with a fields-per-type matrix, alongside ordinary manual playlists.
Seven bundled visual templates, selectable per profile and schedulable by date range — a Thanksgiving look that arrives and leaves on its own.
Per-profile library access, watch state, and navigation order, with permissions refreshed live rather than read from a stale token.
Radarr and Sonarr request servers, so a household can ask for something and have it appear.
Every external integration is a plugin with its own settings, and API keys can be seeded from environment variables so a fresh deployment comes up already configured.
| Category | Bundled providers |
|---|---|
| Metadata | TMDB, TVDB, OMDb / IMDb ratings, local NFO and image assets |
| Artwork | TMDB, TVDB, Fanart.tv, MediUX, TheAudioDB, MusicBrainz, MyAnimeList, local assets |
| Discovery | TMDB Discovery, MyAnimeList Discovery, iTunes podcasts |
| Lists & chronology | Trakt.tv, MDbList, IMDb public lists, AI franchise ordering |
| Music | Last.fm scrobbling, Genius and LRClib lyrics |
| Requests | Radarr and Sonarr requesters plus release calendars |
| Subtitles | OpenSubtitles search with API-key or account authentication |
| Extras | SerpApi Google showtimes, OpenAI smart recommendations, native poster overlays |
Scheduled zip backups with retention, restored atomically through a transaction factory so a failed restore leaves nothing half-applied.
An in-memory ring buffer plus a file sink, runtime log-level overrides, and a live tail in the admin UI over SignalR.
Background work runs through a queue with per-task cancellation and progress, not fire-and-forget threads.
SMTP with admin-overridable templates, a dispatch worker, a delivery log, and the password encrypted through data protection.
Every client identifies itself, and authorized devices can be reviewed and revoked.
A new image applies pending schema migrations on startup and refuses to serve traffic if one fails.