No description
Find a file
KhooLy c9fdda4274 Unify mobile and TV player chrome through shared tokens
Scrim heights and alphas, seekbar track height, and the buffer/track
colors now come from FluxaDimensions.PlayerChrome and FluxaColors, so both
players render the same chrome: 160dp/0.72 top scrim, 230dp/0.86 bottom
scrim, 4dp track (TV was 3dp).
2026-07-02 00:52:14 +03:00
app Unify mobile and TV player chrome through shared tokens 2026-07-02 00:52:14 +03:00
bench Initial commit 2026-06-05 14:43:08 +03:00
build-logic Make cards skippable and stop focus-driven card rebuilds 2026-07-02 00:44:22 +03:00
gradle Make cards skippable and stop focus-driven card rebuilds 2026-07-02 00:44:22 +03:00
.gitignore Initial commit 2026-06-05 14:43:08 +03:00
build.gradle.kts Initial commit 2026-06-05 14:43:08 +03:00
gradle.properties Initial commit 2026-06-05 14:43:08 +03:00
gradlew Initial commit 2026-06-05 14:43:08 +03:00
gradlew.bat Initial commit 2026-06-05 14:43:08 +03:00
README.md Initial commit 2026-06-05 14:43:08 +03:00
settings.gradle.kts Initial commit 2026-06-05 14:43:08 +03:00

Fluxa

Contributors Forks Stars Issues License

A native Android media hub powered by a platform-agnostic Rust core.
Stremio addon ecosystem · Mobile & Android TV


What is Fluxa?

Fluxa is a content discovery and playback app for Android. It connects to the Stremio addon ecosystem, letting you browse catalogs, track your watch history, and play media from any source those addons expose.

The Android shell handles all platform I/O — HTTP, Room, ExoPlayer, audio, notifications — but the actual decision-making lives in fluxa-core, a headless Rust library that runs the same logic across Android and desktop targets. Rust never touches the network directly; it emits typed effects that the Kotlin layer fulfills.

Requires Android 8.0+ (API 26). Android TV / Google TV supported.


Installation

Download the latest release from GitHub Releases.

Two APK variants are available:

Variant Package Target
mobile com.fluxa.app.mobile Phone & tablet
tv com.fluxa.app.tv Android TV / Google TV

Each variant ships per-ABI splits: arm64-v8a, armeabi-v7a, x86_64, x86.


Architecture

Fluxa is split into two native Rust libraries and an Android Kotlin shell:

┌─────────────────────────────────────────────────────────┐
│                  Android (Kotlin + Compose)              │
│   UI · ViewModel · Repository · OkHttp · Room · Player  │
├───────────────────────────┬─────────────────────────────┤
│      fluxa_core           │    fluxa_streaming_engine    │
│  Headless brain: state,   │  Video proxy, Dolby Vision   │
│  policy, stream planning  │  rewrite, torrent engine     │
└───────────────────────────┴─────────────────────────────┘

The Effect Loop

Rust never calls the network. Instead it emits typed effects that Kotlin executes:

Kotlin  →  dispatch(action)
        ←  { state, effects: [{ id, type, payload }] }
Kotlin  →  executes each effect (OkHttp / Room / audio / ...)
        →  completeEffect({ effectId, result })
        ←  { state, effects: [...] }

This keeps fluxa_core fully portable — the same crate compiles for Android (JNI), desktop (native Rust), and future targets (WASM) without any platform-specific code inside Rust.


Project Structure

Fluxa/
├── app/          ← Android application module
├── core/         ← Shared Kotlin modules
├── player/       ← Player module
└── build-logic/  ← Convention plugins

Development

git clone https://github.com/KhooLy/Fluxa.git
cd Fluxa
./gradlew :app:assembleMobileDebug
# or for TV
./gradlew :app:assembleTvDebug

The Rust libraries ship as prebuilt .so files bundled with the project. Rebuilding fluxa_core or fluxa_streaming_engine from source requires a Rust toolchain with the Android NDK targets installed.


Built With


Fluxa is a client-side interface that connects to user-installed Stremio addons. It does not host, serve, or distribute any media content. All streams are sourced from third-party addons chosen by the user.

Fluxa is not affiliated with any addon developer, repository, or content provider. Users are responsible for ensuring they have the right to access any content they stream or download.