A "Who's watching?" profile picker for Stremio. Stremio has no built-in profile switching — one app, one logged-in account. STRLoader signs into a chosen account and opens Stremio already logged in. One monorepo, two apps:
Not affiliated with, endorsed by, or sponsored by Stremio. "Stremio" is used only to describe compatibility.
| App | Platform | What it drives | Tech | Status |
|---|---|---|---|---|
windows/ |
Windows desktop | the native Stremio app | Electron launcher | ✅ verified driving native Stremio 5 |
android/ |
Android phone / tablet / TV | a wrapped Stremio Web session | Kotlin WebView | ✅ in-app switcher, landscape playback, runs on Android/Google TV |
How it works in one line: you add each profile once (email + password); the loader signs in via the Stremio API, stores only a revocable login token, and on launch seeds that session into Stremio so it opens straight into your account. Your password is never stored.
The two platforms reach Stremio differently — see below — but both share the same picker UI and login logic. Full details in docs/HOW-IT-WORKS.md; the API/storage contract is in docs/STREMIO-API.md.
The "Who's watching?" picker — the same UI on Windows and Android:
|
Adding a profile, with open-source Lucide icons. Only a revocable login token is stored — never your password:
|
On Android, the chosen profile loads inside Stremio with a STRLoader top bar (active profile + switcher):
|
Grab the latest Windows installer (.exe) and Android APK from the
Releases page →
- Windows: download and run the installer. You must also have the official Stremio desktop app installed — STRLoader drives it.
- Android: download
STRLoader.apkon the device and open it (you'll be asked to allow "install unknown apps" the first time). See Sideloading. Best with debrid/HTTP addons.
Prefer to build from source? See Quick start.
Not affiliated with or endorsed by Stremio. Stores only a Stremio authKey (a revocable session token) per profile — never your password.
Windows → drives the real native app. Picking a profile (re)starts the installed stremio.exe with its embedded browser engine's remote-debugging enabled, attaches over the Chrome DevTools Protocol, seeds the chosen session into localStorage, and reloads — so your native Stremio opens signed into that account. Because it's the native app, torrent (P2P) streaming and the bundled streaming server work normally. A small Switch chip is injected at the bottom of Stremio; clicking it reopens the picker so you can change profiles without hunting for the launcher window. (Switching is a relaunch into the other account, not a live in-app swap.)
⚠️ This relies on the native shell exposing remote debugging. Builds vary, so runnpm run doctoron your machine first — it tells you whether your Stremio can be driven this way.
Android → wraps Stremio Web. Android's official Stremio app is closed-source and sandboxed, so no external launcher can change its profile without root. Instead the Android app embeds a Stremio Web session and seeds the chosen profile into it. A slim top bar shows the active profile and lets you switch profiles in place (Netflix-style selector) without leaving the app. Video plays fullscreen in landscape, and Back returns to Stremio's home (not out to the picker). Best suited to debrid / HTTP-addon setups (Real-Debrid, Premiumize, Torrentio+debrid, direct HTTP addons); plain torrent P2P needs a local streaming server that a WebView can't provide. Installs on phones, tablets, Android TV and Google TV (e.g. ONN, Chromecast, Fire TV).
stremio-profile-loader/
├── shared/
│ ├── stremio-api.js # Stremio API + profile-building logic (used by Electron)
│ └── picker/ # the profile-picker UI, shared by BOTH apps
│ ├── index.html
│ ├── styles.css
│ └── app.js # talks only to window.LoaderBridge
├── windows/ # Electron launcher that drives the native Stremio app
│ ├── src/native.js # finds Stremio, restarts it with debugging, injects via CDP
│ └── scripts/doctor.js # `npm run doctor` — checks your install is drivable
├── android/ # Kotlin WebView app (phone/tablet/TV)
└── docs/
Both apps render the same picker UI and expose the same window.LoaderBridge interface; only the platform glue (storage + launching) differs.
Requires the official Stremio desktop app installed.
cd windows
npm install
npm run doctor # FIRST: verify your Stremio install can be driven
npm start # launch the profile picker
npm run dist # build an installer (NSIS)Building the installer locally needs Windows Developer Mode on (Settings → Privacy & security → For developers) or an elevated shell, so electron-builder can extract its signing tools (they contain symlinks). CI does this automatically — see Releases.
If npm run doctor reports the DevTools port never opened, your Stremio build doesn't expose remote debugging — open an issue with your version (Settings → About) so the injection method can be adapted.
Open the android/ folder in Android Studio (Otter or newer) and Run, or from the CLI:
cd android
./gradlew assembleDebug # -> app/build/outputs/apk/debug/app-debug.apk
adb install -r app/build/outputs/apk/debug/app-debug.apkRequires Android SDK with API 36 + build-tools 36.0.0 (AGP 8.9.1 / Gradle 8.11.1, JDK 17+). Installs on phones, tablets, and Android TV.
The APK is signed with a stable, committed key (see android/keystore/), so new versions install in place over older ones — no uninstall needed. (One exception: upgrading from v0.1.0 or v0.1.1, which predate that key, needs a single uninstall.)
Phone / tablet
- Download
STRLoader.apkonto the device (from Releases) or transfer it over. - Open it in your Files / Downloads app and tap Install.
- First time, Android blocks it: tap Settings → Allow from this source for the app you opened it with, then install again.
- Play Protect may warn about an unknown app → Install anyway.
ADB
# enable Settings → About → tap "Build number" 7× → Developer options → USB debugging
adb install -r STRLoader.apk💡 The latest APK is always at this stable URL (handy for the steps below):
https://github.com/BaconWappedBitcoin/stremio-profile-loader/releases/latest/download/STRLoader.apk
ONN (Walmart) / Google TV / Android TV boxes & sticks
These have no browser or file manager, so use the Downloader app:
- Unlock Developer options: Settings → System → About → scroll to Build (or "Android TV OS build") and click it 7 times.
- Install Downloader (by AFTVnews) from the Google Play Store on the device.
- Allow it to install apps: Settings → Apps → Security & restrictions → Unknown sources → turn on Downloader. (On some ONN boxes this prompt appears the first time you install instead.)
- Open Downloader, and in the URL box enter the stable APK link above (the on-screen keyboard works, or use a URL shortener you make yourself). Press Go.
- It downloads, then shows Install → confirm. If Play Protect warns, choose Install anyway / More details → Install.
- Launch STRLoader from your apps row (it appears in the Google TV / Android TV launcher). Add a profile with the on-screen keyboard, then select it.
ADB over the network (alternative, e.g. for ONN or Fire TV):
# On the device: Settings → System → Developer options → enable "USB/Network debugging".
adb connect <TV-IP>:5555 # find the IP in Settings → Network/About
adb install -r STRLoader.apk- Launch the loader — you'll see the profile picker.
- Add profile → give it a name, enter the Stremio email + password. The loader signs in once and stores the returned token.
- Click a profile:
- Windows: any running Stremio is closed and the native app relaunches signed into that account.
- Android: Stremio Web opens signed into that account, with a top bar showing who's active.
- To switch profiles:
- Android: tap the profile chip in the top bar and pick another — it switches in place. "Manage profiles…" opens the picker to add/edit/remove.
- Windows: click the Switch chip at the bottom of Stremio (or bring the picker window back up) and pick another profile — the native app relaunches into it.
- Edit a profile's name/icon with the ✏️ on its card, or remove it with the × (removing only deletes it locally; your Stremio account is untouched).
If a stored token ever expires, the loader will tell you to remove and re-add that profile.
STRLoader bundles none of Stremio's code — it points at Stremio's live web app (web.stremio.com). So it always runs Stremio's latest web version automatically, with no rebuild when Stremio ships an update. (Stremio's native APK is irrelevant — STRLoader uses Stremio Web, not the native app.)
STRLoader's own code only needs updating if Stremio changes the contract it depends on to inject a session — the login API or the localStorage profile schema — both centralized in shared/stremio-api.js (SCHEMA_VERSION + DEFAULT_SETTINGS). The symptom of such a change is landing on Stremio's login screen instead of signed in.
Native-only features (the bundled torrent streaming server, native players) aren't part of Stremio Web, so they never appear in the Android wrapper regardless of Stremio updates — that's the inherent wrapper ceiling.
- Passwords are used exactly once (at "Add profile") and never written to disk.
- The stored authKey is a bearer token for that Stremio account — treat the profile file like a password. It lives in the OS per-user app data:
- Windows:
%APPDATA%/STRLoader/profiles.json - Android: app-private
SharedPreferences(not world-readable)
- Windows:
- You can revoke a token any time by changing the account's Stremio password.
A GitHub Actions workflow builds the Windows installer and the Android APK. To cut a release:
# bump versions in windows/package.json and android/app/build.gradle.kts, then:
git tag v0.1.0
git push origin v0.1.0The workflow builds both apps and attaches the installer + STRLoader.apk to a GitHub Release for that tag. You can also trigger it manually (Actions → Build & Release → Run workflow) to get the build artifacts without publishing a release — note those are zipped under the run page and are not the same as a Release.
MIT. Not affiliated with or endorsed by Stremio.


