A native macOS IPTV player built with Electron + React. Supports HLS streams, ClearKey DRM, pipe-format playlist URLs, and GitHub release update notifications.
Important
macOS says "StreamIPL is damaged"? This is a Gatekeeper quarantine flag — the app is fine. Open Terminal and run:
xattr -d com.apple.quarantine /Applications/StreamIPL.appThen double-click the app. Done. See Installation for details.
- HLS and DASH playback (
.m3u8,.mpd) - ClearKey DRM support
- Pipe-format URL parsing with cookie and header injection
- Playlist management (save, delete, search, load)
- 60-second catch-up buffer for smoother live viewing
-60squick replay control in player controls- In-app release update notification from GitHub Releases
- Manual Inspect/DevTools toggle from Settings
- Apple-style dark desktop UI theme
Head to the Releases page and download the build for your Mac's chip:
| File | Chip |
|---|---|
StreamIPL-x.x.x-arm64.dmg |
Apple Silicon (M1 / M2 / M3 / M4) |
StreamIPL-x.x.x-x64.dmg |
Intel |
Why separate files? Universal binaries (single DMG for both chips) that are unsigned trigger macOS Gatekeeper's "damaged app" error on modern macOS versions. Distributing architecture-specific builds avoids this completely.
- Download the
.dmgfor your chip (see table above). - Open the
.dmgand drag StreamIPL to/Applications. - Open Terminal and run the quarantine-removal command:
xattr -d com.apple.quarantine /Applications/StreamIPL.app
- Launch StreamIPL from Launchpad or Spotlight.
Note
Why is this needed? StreamIPL is open-source and unsigned. macOS quarantines every app downloaded from the internet that lacks an Apple Developer signature. The xattr command removes that quarantine flag — it does not disable any security features.
Alternatively: System Settings → Privacy & Security → scroll down → Open Anyway (appears only after a blocked launch attempt).
- Paste a valid HLS/IPTV URL (plain
.m3u8or pipe-format) in the URL bar. - Press Play or hit
Enter. - Save channels to playlist for quick access.
- Use
-60sin player controls to replay recent action.
| Format | Example |
|---|---|
| Plain HLS | https://example.com/stream.m3u8 |
| Pipe format | `https://stream.m3u8 |
| DASH + ClearKey | `https://example.com/live.mpd |
StreamIPL checks GitHub Releases on app startup using an unauthenticated request and shows an update banner when a newer version is available.
To make this work correctly, configure repository metadata:
- Preferred: set
repositoryinpackage.jsonto your GitHub repo URL - Optional override: set env var
STREAMIPL_GITHUB_REPO=sanchit339/StreamIPL
When an update is found, users can click Update now to open the release page. If update checks fail (network/rate-limit/API error), playback is not affected and users can still download manually from the Releases page.
Prerequisites:
- Node.js 18+
- npm 9+
- macOS (required for DMG packaging)
npm install
npm run devBuild renderer only:
npm run build:viteBuild packaged app (both architectures):
npm run buildBuild for a single architecture:
npm run build:arm64 # Apple Silicon only
npm run build:x64 # Intel onlyOutput DMGs are written to the release/ directory.
Please read:
Use GitHub issue templates for bugs and feature requests.
This project is licensed under the GPL-2.0 License.
