Features

What Vora actually does

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.

Library

Scanning and metadata

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.

Folder watching

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.

Editions and versions

Multiple files for the same title become per-part editions with a version picker in the player, not duplicate entries in the grid.

Media Trash

A missing video is soft-deleted and hidden rather than dropped, with per-profile ratings and watch state preserved across a re-add.

Field locks

Anything you edit by hand can be locked so the next metadata refresh leaves it alone — including manually authored chapter markers.

Poster overlays

Native overlay badges render resolution, video range, and audio format onto posters on a schedule, resolved from the best part across versions.

Playback

Streaming that adapts

Vora decides per session whether to direct play, remux, or transcode, then serves HLS from a signed, prefix-namespaced session directory.

  • Hardware acceleration — NVENC and NVDEC encode and decode plus CUDA HDR-to-SDR tone mapping, with the driver capabilities baked into the image.
  • Subtitles done properly — image subtitles burn in, text subtitles extract to a content-keyed sidecar cache warmed after a scan, never on the play path.
  • External subtitles — sidecar files beside the video are reconciled by path, separately from embedded tracks.
  • Scrub previews — FFmpeg sprite sheets and WebVTT give the scrub bar real thumbnails.
  • Skip intro and credits — silence and black-frame analysis clustered across a season, with per-profile auto-skip.
  • Resume that resets — watched state is derived from the playback ping, so a re-watch clears it instead of sticking.
vora.home.lan/media
Vora media detail and player
Live TV

IPTV, EPG, and DVR

Playlists and EPG sources are independent, so one guide can cover several providers and one provider can feed several playlists.

  • Real guide grid — channel and programme data cached and matched, rendered as a grid on the web and on television.
  • Timeshift — pause and rewind live television.
  • Scheduled recording — record an episode or a whole series from the in-player guide.
  • Commercial detection — Comskip ships in the container for DVR recordings.
  • One tuner budget — live, timeshift, and DVR all draw from the same concurrent-stream limit, so nothing silently steals a tuner.
vora.home.lan/live
Vora live TV guide
Audio

A music service, not an afterthought

Artists, albums, tracks

A proper music domain with genres, top tracks, liked songs, and a year recap.

Daily mixes and stations

A recommendation engine builds mixes and radio stations from what you actually listen to.

Lyrics and scrobbling

Genius and LRClib lyrics, plus Last.fm scrobbling when you want your history off-server too.

Podcasts

iTunes-backed discovery, subscriptions, new-episode feeds, and per-episode resume.

Live radio

Audio-only IPTV streams played as a queue, with favorites that sync between the phone and the car.

Quality controls

Crossfade, an equalizer with five presets, a sleep timer, and configurable audio quality.

Personalization

Discovery, collections, and themes

Discovery and For You

Multi-provider discovery feeds, actor pages, a watchlist, and a release calendar in month, week, or day view.

Smart collections

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.

Smart playlists

A rule-tree evaluator with a fields-per-type matrix, alongside ordinary manual playlists.

Scheduled templates

Seven bundled visual templates, selectable per profile and schedulable by date range — a Thanksgiving look that arrives and leaves on its own.

Profiles and permissions

Per-profile library access, watch state, and navigation order, with permissions refreshed live rather than read from a stale token.

Requests

Radarr and Sonarr request servers, so a household can ask for something and have it appear.

Plugins

Bring your own providers

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.

CategoryBundled providers
MetadataTMDB, TVDB, OMDb / IMDb ratings, local NFO and image assets
ArtworkTMDB, TVDB, Fanart.tv, MediUX, TheAudioDB, MusicBrainz, MyAnimeList, local assets
DiscoveryTMDB Discovery, MyAnimeList Discovery, iTunes podcasts
Lists & chronologyTrakt.tv, MDbList, IMDb public lists, AI franchise ordering
MusicLast.fm scrobbling, Genius and LRClib lyrics
RequestsRadarr and Sonarr requesters plus release calendars
SubtitlesOpenSubtitles search with API-key or account authentication
ExtrasSerpApi Google showtimes, OpenAI smart recommendations, native poster overlays
Operations

Run it like a grown-up service

Backups and restore

Scheduled zip backups with retention, restored atomically through a transaction factory so a failed restore leaves nothing half-applied.

Live logs

An in-memory ring buffer plus a file sink, runtime log-level overrides, and a live tail in the admin UI over SignalR.

Task queue

Background work runs through a queue with per-task cancellation and progress, not fire-and-forget threads.

Email

SMTP with admin-overridable templates, a dispatch worker, a delivery log, and the password encrypted through data protection.

Device management

Every client identifies itself, and authorized devices can be reviewed and revoked.

Auto-migrating upgrades

A new image applies pending schema migrations on startup and refuses to serve traffic if one fails.