Restart, back to browsing
20.7 ms
Jellyfin: 5.02 s
243× faster
flux is a media server for the films and shows you own. It scans a whole library in seconds, plays the moment you press play, reaches all your devices through your own Tailscale network, and works hand in hand with the AI agent you already use.
Lenses
Every lens is drawn on the GPU, so even thirteen thousand titles glide. Pick the one that suits the evening, or have your agent make a new one.
Every title at a glance, from whole decades down to one poster.
Titles and artwork here are generated examples.
Anywhere
No port forwarding, no reverse proxy, no certificates to renew and no new passwords. flux joins your private tailnet, and the Tailscale login you already have is how you sign in, from the sofa, a hotel room or a train.
Six things to set up, keep updated and keep secure, and your server is on the open internet.
Install it on the computer with your films and on your devices. The Personal plan is free, for up to six people.
One switch in flux’s settings, or --tailnet system. flux uses this computer’s Tailscale and answers on your tailnet, never the open internet.
At https://machine.tailnet.ts.net. Switch on HTTPS and flux uses your tailnet’s own certificate, so even the GPU lenses work on your phone.
Family and friends sign in with their own Tailscale accounts, never a flux password. Your login is the Owner. Everyone else can watch, and the people you trust with the library get Admin, with one grant in your tailnet policy.
"grants": [{
"src": ["partner@example.com"],
"dst": ["*"],
"app": {
"vibecook.dev/cap/flux": [{ "role": "admin" }]
}
}]
Speed
We ran flux and Jellyfin 12.2 through the same benchmark harness, on the same Mac, against the same 14,760-file library. These are the medians.
Cold scan of a 14,760-file library, until every title is browsable
Real time
326× sooner. When flux was done, Jellyfin had seventeen and a half minutes to go.
20.7 ms
Jellyfin: 5.02 s
243× faster
1.3 ms
Jellyfin: 624 ms
480× faster
142 ms
Jellyfin: 19.7 s · flux opened 0 files and wrote nothing
138× faster
2.8–17.9 ms
Jellyfin: 176–617 ms, remuxing the same six files
25–67× faster
22 MiB
Jellyfin: 353 MiB, as Activity Monitor counts it
16× less
24.9 MiB
Jellyfin: 238 MiB with its .NET runtime and web app
9.6× smaller
6.5 s vs 21 min
of CPU time for that cold scan. Jellyfin starts an ffprobe for every file; flux reads the headers itself.
127 MiB vs 16.4 GiB
written to disk by the same scan. Your SSD will notice.
It reads container indexes instead of decoding, and a rescan that finds nothing new opens no files and writes nothing.
Headers are probed and video is remuxed inside flux. ffmpeg starts only when something must be transcoded.
A video segment is a pure function of the file, the recipe and its number, so a seek anywhere is one plain request.
A single Rust program: memory-safe, no runtime to install, no garbage collector pausing your film.
Your library is drawn on the GPU with WebGPU. Zooming through 10,000 posters on the Wall takes 3.6 ms of main-thread time a frame, well inside the 8.3 ms a 120 Hz display allows, and drops no frames. The first load is 110 kB, compressed.
Agent-native
flux has no AI of its own. It opens one contract to the agent you already use, Claude Code, Codex or anything that speaks MCP, so it can identify rare films, write descriptions, find posters and tidy your files from what it finds on the open web. Every change names its sources, and you can undo any of it.
Waiting for you · 1
Identified Castle in the Sky (1986) from its file and Wikipedia
Sources: en.wikipedia.org wikidata.org
title Castle in the Sky
original 天空の城ラピュタ
directed by Hayao Miyazaki
released 2 August 1986
CLI
Every command is one operation and prints JSON, for you or your agent.
flux gapsMCP
Over HTTP at /mcp, or over stdio with flux mcp for agents that start servers.
claude mcp add --transport http flux http://localhost:8096/mcpSkills
Identifying films, finding artwork, organising files and designing new lenses.
flux skills installDownload
One program that serves its own web app. Free and open source, under the MIT license.
Pick your system below.
ffmpeg and ffprobe for transcodes and frame posters (brew install ffmpeg on a Mac). The Docker image brings its own.SHA256SUMS and has a build-provenance attestation from the release workflow.