Bundle Archivo (OFL) as the brand display family with width/weight axes; displays, titles, shelf row titles, and Top Ten numerals now render in expanded Archivo. Card titles drop from Black/Bold to SemiBold with Medium metadata so shelves get visible hierarchy. |
||
|---|---|---|
| app | ||
| bench | ||
| gradle/wrapper | ||
| .gitignore | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle.kts | ||
Fluxa
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
- Kotlin + Jetpack Compose
- Rust — headless core and streaming engine
- AndroidX Media3 / ExoPlayer
- MPV — advanced format and subtitle support
- librqbit — BitTorrent engine
- UniFFI — Rust ↔ Kotlin FFI
- Hilt — dependency injection
- Room — local database
- OkHttp + Retrofit
- Coil — image loading
Legal & DMCA
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.