Open source · Written in Rust

Home media, rewritten.

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.

Free and MIT-licensed macOS, Windows, Linux and Docker

Lenses

One library. Every way to see it.

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

All it takes is a free Tailscale account.

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.

fluxthe computer with your films
media.your-tailnet.ts.net
Your phoneon 5G
Owner
Your laptopon hotel Wi-Fi
Owner
Living-room TVat home
Viewer
Mum’s iPad300 km away
Viewer
Forward a router port
Open to the whole internet
Dynamic DNS
Reverse proxy
Certificates to renew
Yet another password

Six things to set up, keep updated and keep secure, and your server is on the open internet.

  1. 01

    Get Tailscale

    Install it on the computer with your films and on your devices. The Personal plan is free, for up to six people.

  2. 02

    Switch on remote access

    One switch in flux’s settings, or --tailnet system. flux uses this computer’s Tailscale and answers on your tailnet, never the open internet.

  3. 03

    Open it anywhere

    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.

Your tailnet is the guest list.

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

Built in Rust. Measured, not promised.

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

flux
3.24 s
Jellyfin 12.2
17 min 35 s

326× sooner. When flux was done, Jellyfin had seventeen and a half minutes to go.

Restart, back to browsing

20.7 ms

Jellyfin: 5.02 s

243× faster

Seek deep into a two-hour film

1.3 ms

Jellyfin: 624 ms

480× faster

Rescan when nothing changed

142 ms

Jellyfin: 19.7 s · flux opened 0 files and wrote nothing

138× faster

Time to the first video segment

2.8–17.9 ms

Jellyfin: 176–617 ms, remuxing the same six files

25–67× faster

Memory at rest, after the scans

22 MiB

Jellyfin: 353 MiB, as Activity Monitor counts it

16× less

Everything you install

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 skips work

It reads container indexes instead of decoding, and a rescan that finds nothing new opens no files and writes nothing.

No ffmpeg in the hot path

Headers are probed and video is remuxed inside flux. ffmpeg starts only when something must be transcoded.

Every segment stands alone

A video segment is a pure function of the file, the recipe and its number, so a seek anywhere is one plain request.

One small binary

A single Rust program: memory-safe, no runtime to install, no garbage collector pausing your film.

The app keeps up, too.

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.

03.6 ms8.3 ms · 120 Hz
How we measured, and what it doesn’t say
  • One M1 Max (64 GB) on macOS, with both servers at the same low priority, network metadata off, background jobs and folder watching off. Timed over HTTP on loopback.
  • A synthetic library: 7 short seed clips cloned into 14,760 media files under messy names, plus 1,911 sidecar files. Playback used real encodes.
  • The servers do different work by design: Jellyfin runs ffprobe on every file and reads NFOs and artwork; flux probes headers in-process and reads neither.
  • Small samples: 3 full-library runs for flux and 2 for Jellyfin, and Jellyfin’s cold scan has taken 900–1,063 s across sessions on this machine.
  • Not every result is a big win: a TrueHD 7.1 file that needs an audio transcode starts 3.5× sooner, and the first play of a long MPEG-TS only 1.5× sooner.
  • Nothing here was measured on Linux, a NAS or a spinning disk, and Plex wasn’t measured at all.
Read the full benchmark report

Agent-native

Your agent knows more than any database.

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

claude-code · just now · 9 changes to 1 title

Sources: en.wikipedia.org wikidata.org

Apply Turn down Undo
Waiting for you

title Castle in the Sky

original 天空の城ラピュタ

directed by Hayao Miyazaki

released 2 August 1986

CLI

A command line that ships with the server

Every command is one operation and prints JSON, for you or your agent.

flux gaps

MCP

The same operations over MCP

Over HTTP at /mcp, or over stdio with flux mcp for agents that start servers.

claude mcp add --transport http flux http://localhost:8096/mcp

Skills

Skills that teach agents the jobs

Identifying films, finding artwork, organising files and designing new lenses.

flux skills install

Download

Take it home.

One program that serves its own web app. Free and open source, under the MIT license.

v0.1.0-alpha.3 Released 22 Oct 2026 Pre-release

flux for your computer

Pick your system below.

Your films deserve a better home.