An unofficial AltStore-format source collection for Stremio iOS and tvOS, compatible with any signing app that consumes the standard AltStore source format — Feather, AltStore Classic, AltStore PAL, ESign, Scarlet, Sideloadly, and others. Stremio’s official source at dl.strem.io/apple/altstore/source.json cannot be parsed by most third-party signing apps because it uses Apple’s encrypted App Store Connect manifest format — this repo publishes standard AltStore-format JSON sources that point to Stremio’s plain IPA artifacts.
Starting in June 2026, Stremio moved iOS distribution entirely to Apple’s App Store Connect marketplace format. This format:
manifest.json metadata fileMost third-party signing apps (Feather, ESign, Scarlet, Sideloadly, etc.) cannot break this encryption, so importing the official source results in “no apps”, “invalid format”, or “failed to download” errors.
However, Stremio keeps the plain IPA files publicly available on the same CDN:
https://dl.strem.io/apple/{X.Y.Z}b{buildN}/{ios|tvos}/stremio_{Platform}.ipa
This repo discovers those IPAs and writes them into standard AltStore-format JSON sources.
📜 Related discussions:
Any signing app that consumes the standard AltStore source format can use this repo. Tested or known-compatible apps include:
If your signing app supports adding a source by URL pointing to an apps.json-style document, it will work. If you find an app that does not work, please open an issue.
No fork required. This source is already hosted and auto-updated every 6 hours. Just add it to your signing app.
Works with any signing app (Feather, AltStore Classic/PAL, ESign, Scarlet, Sideloadly…). Paste the URL into the app’s Sources / Repositories section:
| Platform | Source URL |
|---|---|
| iOS / iPadOS | https://repo.omix4.one/stremio-ios.json |
| tvOS | https://repo.omix4.one/stremio-tvos.json |
Once added, Stremio appears in the app’s source list. Pick a version and tap Get (or the equivalent) to download and sign.
sourceURL also works with raw.githubusercontent.com:
https://raw.githubusercontent.com/omix4/stremio-altstore/main/stremio-ios.json
https://raw.githubusercontent.com/omix4/stremio-altstore/main/stremio-tvos.json
Some signing apps require the Content-Type: application/json header, which the hosted source guarantees; raw URLs occasionally delay that header — prefer the repo.omix4.one URLs above.
Prefer to run your own source (own URL, own update schedule)? Fork and host it in a couple of minutes:
main / (root). After a few minutes your sources are live at https://<your-github-username>.github.io/stremio-altstore/stremio-{ios,tvos}.json.sourceURL at your fork:
python3 stremio-updater.py \
--source-url-ios "https://<your-github-username>.github.io/stremio-altstore/stremio-ios.json" \
--source-url-tvos "https://<your-github-username>.github.io/stremio-altstore/stremio-tvos.json"
stremio-ios.jsoncom.stremio.pal| Version | Build | Date | Size | Download |
|---|---|---|---|---|
| 2.0.4 | 19 | 2026-07-10 | 72 MB | IPA |
| 2.0.3 | 18 | 2026-07-09 | 72 MB | IPA |
| 2.0.2 | 17 | 2026-06-19 | 74 MB | IPA |
| 2.0.1 | 16 | 2026-06-16 | 74 MB | IPA |
| 2.0.1 | 15 | 2026-06-15 | 74 MB | IPA |
| 2.0.0 | 14 | 2026-06-05 | 74 MB | IPA |
| 2.0.0 | 13 | 2026-06-05 | 74 MB | IPA |
| 2.0.0 | 11 | 2026-05-30 | 74 MB | IPA |
com.stremio.ios| Version | Build | Date | Size | Download |
|---|---|---|---|---|
| 1.3.6 | 7 | 2026-01-31 | 75 MB | IPA |
stremio-tvos.jsoncom.stremio.pal| Version | Build | Date | Size | Download |
|---|---|---|---|---|
| 2.0.3 | 18 | 2026-07-09 | 70 MB | IPA |
| 2.0.2 | 17 | 2026-06-19 | 70 MB | IPA |
| 2.0.1 | 16 | 2026-06-16 | 70 MB | IPA |
| 2.0.1 | 15 | 2026-06-15 | 70 MB | IPA |
com.stremio.ios| Version | Build | Date | Size | Download |
|---|---|---|---|---|
| 1.3.6 | 7 | 2026-01-31 | 73 MB | IPA |
🤖 The tables above are auto-generated from the JSON sources by
scripts/render_readme.pyon every update — do not edit them by hand.
📦 Every version was verified against the IPA’s Info.plist (downloaded via HTTP Range, < 5 KB each). Bundle identifiers, version strings, and
MinimumOSVersionvalues were read directly from the IPAs.
The repo includes a GitHub Actions workflow that runs stremio-updater.py every 6 hours, discovers new Stremio versions, updates the JSON files, and auto-commits. With GitHub Pages enabled, new versions appear in your signing app within minutes.
Each run also, in the same job:
scripts/add_hashes.py computes the sha256 of a few IPAs per run (newest first, budget-limited so it never risks the job’s time limit), so every version eventually carries a hash that signing apps can verify the download against.A separate CDN health canary (scripts/check_cdn.py) runs on the same schedule. Because the updater exits successfully whether it finds new versions or finds nothing, a broken CDN (a changed URL scheme, an outage, or a pulled build) would otherwise be invisible. The canary HEAD-checks the newest known IPA for each platform and opens a GitHub issue (deduplicated — one at a time) if the source may be serving dead downloads.
To enable the workflow: Actions → Update Stremio source → Enable workflow.
To trigger manually: Actions → Update Stremio source → Run workflow.
Configuration lives in .github/workflows/update.yml.
# Clone the repo
git clone https://github.com/omix4/stremio-altstore.git
cd stremio-altstore
# Virtual environment (optional but recommended)
python3 -m venv .venv && source .venv/bin/activate
# Dry run — see what would change without writing files
python3 stremio-updater.py --dry-run --verbose
# Real update — write changes to JSON files
python3 stremio-updater.py
# Parse Info.plist for unknown IPAs to verify bundle IDs (slower)
python3 stremio-updater.py --info-plist
# Only iOS (or only tvOS)
python3 stremio-updater.py --platform ios
python3 stremio-updater.py --platform tvos
# Update sourceURL fields
python3 stremio-updater.py \
--source-url-ios "https://<your-github-username>.github.io/stremio-altstore/stremio-ios.json" \
--source-url-tvos "https://<your-github-username>.github.io/stremio-altstore/stremio-tvos.json"
# Commit and push
git add stremio-ios.json stremio-tvos.json
git commit -m "chore: update Stremio source"
git push
Shorter aliases via make:
make help # List all targets
make dry-run # Dry run
make update # Real update
make verify # Update with Info.plist verification
make set-urls # Set sourceURL fields interactively
stremio-altstore/
├── README.md ← this file
├── LICENSE ← MIT
├── CHANGELOG.md ← version history
├── CONTRIBUTING.md ← contribution guide
├── SECURITY.md ← security policy
├── Makefile ← shortcut commands
├── .gitignore ← Python / macOS / IDE
├── stremio-ios.json ← main source (iOS / iPadOS)
├── stremio-tvos.json ← main source (tvOS)
├── stremio-updater.py ← CDN scanner + JSON updater
├── ipa_plist.py ← shared HTTP-Range IPA Info.plist parser
├── assets/
│ └── stremio-icon.png ← self-hosted source and app icon
├── .github/
│ ├── workflows/
│ │ └── update.yml ← auto-update every 6 hours + CDN canary
│ └── ISSUE_TEMPLATE/
│ ├── bug_report.yml
│ ├── feature_request.yml
│ └── source_broken.yml
└── scripts/
├── verify_bundle_ids.py ← standalone IPA Info.plist verifier
├── render_readme.py ← regenerates the version tables above
├── add_hashes.py ← backfills sha256 integrity hashes (budgeted)
└── check_cdn.py ← CDN health canary (opens an issue if broken)
Stremio uses the same bundle identifier on both iOS and tvOS: com.stremio.pal. Most signing apps do not allow two apps with the same bundleIdentifier inside one source (signing/conflict reasons). That’s why:
stremio-ios.json → iPhone / iPad (com.stremio.pal and com.stremio.ios)stremio-tvos.json → Apple TV (com.stremio.pal and com.stremio.ios, in separate sources — no conflict)You can add both to your signing app; the appropriate one shows up per device type.
scan_cdn: Probes dl.strem.io/apple/{semver}b{build}/{ios|tvos}/... URLs in parallel with a ThreadPoolExecutor (16 workers). Scans the last known build + buffer range.get_main_app_info_plist: Fetches only the relevant chunks of the IPA via HTTP Range requests (ZIP EOCD + Central Directory + compressed Info.plist), parses binary or XML plist with plistlib. Typical download: < 5 KB per IPA. The function filters out framework and appex Info.plists, keeping only the main app entry.process_platform: Adds discovered versions to the JSON or refreshes metadata of existing ones. Keeps versions sorted by (version, build) descending.dl.strem.io infrastructure, this repo breaks. Run updater.py --dry-run periodically to verify.Contributions are welcome! See CONTRIBUTING.md.
Especially helpful:
For security issues please see SECURITY.md.
This repository is licensed under the MIT License.
This source is maintained by the community, with love 🍿