Features

What the app does

Everything below is the part you actually use — browsing, watching and listening. If you are looking for scanning, plugins and deployment, that lives on theserver page.

Library

Browse a collection that looks after itself

Each library opens on a mosaic of its own artwork with a live count of what is inside. Filter and sort the grid, jump by letter, or switch to Collections and For You. Posters carry the things you care about at a glance — 4K, Dolby Vision, HDR10, TrueHD, DTS, the TMDB score and the Rotten Tomatoes percentage.

vora.local/library
The Vora library grid with filters and badged posters
Detail

Cast, crew and every episode

Detail pages lead with the backdrop, then the cast rail with character names, then the episodes — each with its own still, air date, runtime and summary.

Vora analyses each file for silence and black frames and clusters the results across a whole season, so Skip Intro, Skip Recap andSkip Credits appear exactly when they should — and the seekbar paints the bands so you can see them coming. Each profile decides whether intros and credits skip on their own. Mid- and post-credits scenes never auto-skip; you get aSkip to Scene button instead, because skipping a stinger is not a convenience. Markers can be edited by hand and locked so the next scan leaves them alone.

vora.local/shows
A season detail page with cast rail and episode list
Streaming

How playback is decided

Most of what separates a pleasant self-hosted library from an annoying one happens in the half-second between pressing play and the picture appearing. Here is what Vora does in it.

The client measures itself first

Rather than assuming what a device can handle from its user agent, each client probes its own decoders and reports the result: which of H.264, HEVC, VP9 and AV1 actually decode; which of AAC, AC3, E-AC3, Opus, FLAC and MP3 it accepts; which containers it will open; how many audio channels are available; whether the screen can render HDR10, HLG or Dolby Vision; and whether the decoder is 10-bit or 8-bit.

Two details that matter in practice. Android only claims HEVC when both the 8-bit and 10-bit decoders exist, because a decoder that advertises HEVC and then chokes on a 10-bit file is worse than one that never claimed it. And on Android TV, Vora detects when the connected receiver can bitstream AC3, E-AC3 or DTS — so a surround track is passed through to the amp instead of being quietly downmixed to stereo.

The server scores every option it has

Vora does not look at one file and decide yes or no. It takes every copy of the title you own and every audio track inside each one, scores all of those combinations against what your device just told it, and picks the cheapest path that will genuinely play. Video and audio are decided separately, so a file with one unsupported audio track gets its video copied straight through while only the sound is re-encoded.

The scoring has opinions. A 4K source scaled down beats a native 720p copy, because the picture is better. The closest-fitting source wins over a needlessly large one. The default audio track gets a nudge — and a track with “commentary” in its name gets pushed firmly down the list, because nobody means to start a film on the director's commentary.

When it does transcode, the output is H.264 and AAC over HLS — the combination essentially everything can play. Transcoding an HDR source tone-maps it to SDR, and the player badge and history record what you were actually served rather than what the file claims, so nothing says 4K HDR while you are watching 1080p SDR.

Best case

Direct play

Container and codecs all supported. The file goes over untouched.

Next best

Remux

Codecs fine, container wrong. Repackaged into MP4, no frames re-encoded.

Last resort

Transcode

Something truly cannot play. GPU-accelerated where hardware allows.

You get a say too

Playback settings are per profile and per device, so capping your phone on mobile data does not touch the television. Set a maximum bitrate, a maximum resolution and a channel limit; a preference can only ever ask for less than the hardware can do, never more. The server can separately cap remote streams so someone watching from a hotel does not saturate your upload.

An administrator picks the house priority between three profiles —Client Preference, Direct Stream Preference, which avoids transcoding almost at any cost, and Bandwidth Optimized, which trades picture for upload headroom and caps each resolution to a bitrate ceiling.

vora.local/admin
The admin dashboard showing active streams and their playback strategy
Discover

Finding the next thing

Three different answers to “what now?” — what the world is watching, what you already own and have not started, and what is about to arrive.

Out in the world

Popular, upcoming and curated rows from TMDB and MyAnimeList, with anything already on your server flagged In library so you never chase something you own. Bookmark the rest to your watchlist, and pick which rows appear.

vora.local/discover
The Discover page with popular and upcoming rows from TMDB

Already yours

For You builds rows out of your own shelves — “Because you like Animation”, top-rated and unwatched — so a library that has grown past browsing still surfaces something worth starting.

vora.local/library
For You recommendation rows drawn from the user's library

Still to come

A release calendar in month, week or day view covers what is landing next, and the watchlist keeps everything you flagged in one place across every device.

vora.local/calendar
The release calendar in month view
Live TV

A guide built for actually watching television

Bring your own IPTV playlists and EPG sources and Vora turns them into one grid: categories with counts, region and resolution filters, channel search, favourites, and a preview window that plays the current programme while you keep browsing. Pause and rewind live TV, and schedule a recording for an episode or a whole series from inside the player.

Favourites belong to your profile rather than the device, so a channel you star on the television is already starred on your phone.

vora.local/live
The full live TV guide grid with preview and category filters
DVR

Record it and watch it later

Open a programme in the guide and you get three choices: play the channel,record this episode, or record the series. A series recording takes a retention rule — keep everything, or only the latest 5, 10 or 20 — and Vora schedules each new episode as the guide predicts it, dropping the oldest when the limit is reached. Cancel one and it asks whether you meant this episode or the whole series.

Recordings live on the DVR tab beside the guide, grouped by programme and split into Completed, Upcoming and Failed. A finished recording that is still being processed says so rather than playing you a half-written file. Where Comskip has flagged the ad breaks, a Skip commercial button appears while you are inside one — offered, never automatic.

Live television can also be paused. With timeshift permission, a channel gets a real scrub bar, skip back ten seconds and skip forward thirty — the same controls you would expect from a set-top box, on a stream that is still going out live.

Recording and timeshift are separate per-user permissions, and DVR users can be given a storage quota so one person cannot fill the disk.

Music, podcasts & radio

The whole audio side

Not a bolted-on music tab — a full audio app that keeps playing in the background, on the lock screen, and in the car.

Music

Artists, albums, genres, liked songs, top tracks and daily mixes, with a full-screen player that tints itself from the album art. Lyrics scroll in time with the track, the queue is one tap away, and crossfade, an equalizer and a sleep timer are built in.

The player and album pages show what you are actually hearing —Hi-Res · FLAC 96 kHz, Lossless or the MP3 bitrate — and artist pages carry a biography from Last.fm. With AI playlists on, every song is also described by mood and energy, so you can browse the library by mood.

vora.local/music
The music player with time-synced lyrics

Synth

In the web player, turn on the Synth and the music moves on screen as bars, waves or a ring around the cover, coloured from the album art or from your theme. It runs alongside the lyrics, and each device remembers how you left it.

vora.local/music
The music player with the Synth visualizer drawing bars tinted from the album art

Podcasts

Search the directory, subscribe, and get new episodes as they land. Position is remembered per episode and follows you between devices.

vora.local/podcasts
The podcast episode player

Internet radio

Stations browse like a library, favourites come first, and because a station list plays as a real queue, previous and next skip between stations — on the phone and on the head unit alike.

vora.local/radio
The internet radio player
Collections & playlists

Put things in order

Collections

Group a franchise or a universe, sync the contents from a Trakt, MDbList or IMDb list, and let it order itself chronologically rather than by release date.

Playlists

Hand-built playlists for video or audio, reorderable, shareable across your profiles.

Smart playlists

A rule tree — match all or any, per-type fields, live preview — so “unwatched 4K comedies over 100 minutes” stays correct as the library changes.

AI

AI, where it actually saves you an afternoon

Vora does not have a chatbot bolted to the side. It uses a model for four specific jobs that are otherwise tedious hand work — and every one of them is off until you turn it on and supply your own OpenAI key.

Name a universe, get the collection

Set a collection's list provider to AI List and type what you want in plain language — “Every movie and show for Marvel Cinematic Universe”. Vora works out what belongs, pulls in every film and season, and rechecks on the cadence you set. Tickmirror the list exactly and anything that drops off the list leaves the collection too.

This is for franchises and shared universes. For “all my kung-fu movies”, a smart collection with rules is the better tool and costs nothing.

The collection editor with AI List selected and a franchise described in plain language

Watch it in the order the story happens

Release order and story order are rarely the same thing, and working out the difference by hand is a weekend lost to forum arguments. Pick AI Chronological Order, describe how it should run, and the timeline becomes a sort option viewers can switch to — with auto-sync filing anything new into the right slot rather than onto the end.

The chronological ordering panel with AI Chronological Order selected and auto-sync enabled

Recommendations that read the whole shelf

With the recommendations plugin enabled, Vora embeds your library and uses it to build the suggestion rows. Leave it off and For You still works — it falls back to the local engine, which ranks by what you have not watched and how well it scored.

vora.local/library
For You recommendation rows

Playlists made from your own music

Switch on AI playlists and each profile gets a weekly set ofMade for you by AI playlists built around what it actually plays, plus aBridge that walks from one of its sounds to another. A Blendmeets another profile halfway. Or type what you are after — “a road trip that starts mellow and builds” — into Make me a playlist for…, and pick a length or let it choose.

Every song comes out of your own library, found by searching the library itself, so nothing invented or missing can turn up, and parental controls still apply. Describing 24,000 songs costs under a dollar, once; each request after that is a fraction of a cent.

Any profile can be opted out, and then nothing about its listening is sent to OpenAI.

Every token, itemised

Because it is your key and your bill, the server keeps a log: which feature made the call, which profile triggered it, which model answered, how many prompt and completion tokens it used, and what it is estimated to have cost. Filter by date or by feature. Nothing runs up a bill quietly in the background.

vora.local/admin
The AI usage and cost page with token counts and a per-call log
Requests

The watchlist is the request button

Most media servers make asking for something its own chore: a separate app, a separate login, a form. Vora folds it into the thing people already do. When a viewer adds a title to their watchlist and that title is not in the library, it becomes a request automatically — no second interface, no explaining to your family where the request page is.

If the server is connected to Radarr or Sonarr, approved requests go straight there. You decide per user whether they may request at all, and whether their requests need your nod or approve themselves. Two people asking for the same film join one request rather than creating two.

From the viewer's side it just reads as status on the title they wanted: Request pending, then Downloading, then Available in library — and an email when it lands, if the server sends mail.

Profiles

One server, everyone's own Vora

Each profile keeps its own watch state, ratings, recommendations, layout and theme. Parental controls pick allowed ratings separately for films, television and music, hide anything unrated, and restrict which libraries and IPTV providers a profile can even see.

vora.local/settings
Parental controls with per-rating toggles

Watching hours

Scheduled access windows decide when a profile can sign in at all — useful for school nights, and quieter than an argument.

vora.local/settings
Scheduled access times for a profile
Personalize

Your home screen, your palette

Choose which rows appear on Home and in what order, reorder the navigation itself, and swap the client to a different visual template. Templates can even be scheduled, so a seasonal look arrives and leaves on its own.

Home is not only films and shows. Your favourite channels and radio stations, new podcast episodes, the latest albums and your recent recordings each get a row of their own, and a row with nothing in it stays out of the way.

vora.local
The home screen row customizer
vora.local/settings
The client template picker
Client templates — the whole interface recolours, brand mark included
Coming soon

Being built now

Vora is moving quickly. These are the next things on the bench — no dates, because dates on a one-person project are a promise nobody should make.

Vora on Google Play

Android ships first and is on its way to the Play Store, so installing it on a phone or a television stops involving a sideload and starts updating itself.

Roku, Apple TV and Fire TV

Native clients for the three other boxes people actually own, each following its own platform's conventions. They will land as betas, behind Android.More on those.

Ebook libraries

Books as a first-class library alongside films, television and music — shelves, metadata, covers and reading position, handled the same way everything else is.

Custom client templates

Today you choose from the bundled looks. Next, build your own: pick the colours and drop in your own background images, then keep it to yourself or hand it to the household.

Proper multi-server support

The clients already hold more than one server. The goal is for several servers to feel like one library — search, watchlist and continue-watching spanning all of them instead of making you remember which box has what.