Local-first media client
Reflux
Pre-release · source-available, not open source
What if a film were one thing, no matter how many files it lives in?
A Kotlin Multiplatform media client in which a work is distinct from the versions and sources that provide it. Watch and resume state belong to the work, so playback continues from any copy: a local folder, a Jellyfin server or a network share.
- Role
- Personal project · proprietary, all rights reserved
- Period
- 2026 – present
- Stack
- Kotlin Multiplatform · Compose · Media3 (Android) · libmpv (desktop) · Jellyfin · TMDB
- Local folder · Jellyfin · network share
- Several file versions of the same film
- Identification
- One work: watch and resume state live here
- Best version → Media3 on Android, libmpv on desktop
Works, versions and sources
Most players treat a file as the thing you watch. Reflux treats the film or show as the thing, and files as versions of it that sources happen to provide. A 1080p copy on a laptop, a 4K copy on a Jellyfin server and an extended edition on a network share are three versions of one work.
Watch and resume state belong to the work, so you can stop on one copy and continue on another. Library state lives in the platform's data directory and never in your media folders; nothing is renamed or moved.
Identification
- Titles are read from ordinary filenames: a title ends at the first unambiguous release token, and ambiguous words are treated only as hints.
- Embedded IDs such as {tmdb-123} and IMDb IDs, and Plex {edition-…} tags, are honoured.
- A file without a year joins its title's only known year. With several known years, such as two films of the same name, it stays separate rather than being guessed into the wrong work.
- A metadata match is accepted only when it is strong and clearly ahead of the runner-up. Anything else goes to an Identify flow instead of being guessed.
Playback
One engine drives every form factor: Media3 on Android and libmpv on desktop. Reflux picks the best available version for the device, and input adapts to touch, mouse and keyboard, game controllers and TV remotes.
Status and limits
- Pre-release; nothing has been published. The engine and one experience layer run on Windows, Linux, Android phones and tablets, and Android TV / Google TV.
- Android and television builds have been verified mainly on emulators.
- Accessibility is partial: contrast and system text size are tested, while screen-reader labels on every control, focus order, reduced motion and a TalkBack / Narrator pass are not done yet.
- Reflux is proprietary. The source is public so the work can be seen, but that grants no permission to redistribute, modify or reuse it.