https://github.com/aneeshtigga/minitor
A small, self-hosted Stremio addon for streaming torrents — searches via Jackett, then streams through Stremio's own engine or a local qBittorrent cache. A hobby take on how debrid services work.
https://github.com/aneeshtigga/minitor
debrid jackett qbittorrent real-debrid self-hosted streaming stremio stremio-addon tauri torbox torrent torznab
Last synced: 2 days ago
JSON representation
A small, self-hosted Stremio addon for streaming torrents — searches via Jackett, then streams through Stremio's own engine or a local qBittorrent cache. A hobby take on how debrid services work.
- Host: GitHub
- URL: https://github.com/aneeshtigga/minitor
- Owner: aneeshtigga
- Created: 2026-06-11T00:22:47.000Z (6 days ago)
- Default Branch: master
- Last Pushed: 2026-06-11T06:15:39.000Z (6 days ago)
- Last Synced: 2026-06-11T06:24:53.374Z (6 days ago)
- Topics: debrid, jackett, qbittorrent, real-debrid, self-hosted, streaming, stremio, stremio-addon, tauri, torbox, torrent, torznab
- Language: JavaScript
- Size: 195 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

# Minitor
**A small, self-hosted [Stremio](https://www.stremio.com/) addon for streaming torrents.**
It searches via [Jackett](https://github.com/Jackett/Jackett) and either lets Stremio's
own engine stream the torrent *(like Torrentio)*, or downloads it locally with
[qBittorrent](https://www.qbittorrent.org/) and serves it back.
Mostly a learning project — a hobbyist's peek at how debrid services
*(TorBox, Real-Debrid)* and streaming addons work under the hood.
`Stremio addon` · `Jackett / Torznab` · `qBittorrent` · `self-hosted` · `beta`
**macOS · Windows · Linux**
---
## ✨ What is it?
Debrid services like TorBox and Real-Debrid download torrents to their servers and
stream them to you. Minitor is a tiny take on that same idea, running on your own
machine. It won't match a real debrid service — there's no shared datacenter cache
behind it — but it's enough to search and play torrents from within Stremio, and to
learn how the pieces fit together.
---
## 🔀 Two streaming modes
Set with `STREAM_MODE` (or the toggle in the desktop app):
| Mode | What happens | Needs |
|------|--------------|-------|
| **`direct`** *(default)* | Hands Stremio the torrent's `infoHash` — Stremio's own engine streams it. No local download. *(Torrentio-style.)* | Jackett |
| **`cache`** | Adds the torrent to qBittorrent, downloads it to disk, and range-streams the local file — a local copy you can keep, playable while it downloads. | Jackett + qBittorrent |
> The two modes use different addon ids, so you can install both in Stremio if you like.
---
## 🚀 Quick start — the desktop app
[](../../releases/latest/download/Minitor-macOS-arm64.dmg)
[](../../releases/latest/download/Minitor-Windows-x64-setup.exe)
[](../../releases/latest/download/Minitor-Linux-x86_64.AppImage)
[](../../releases)
also:
Windows .msi ·
Linux .deb ·
.rpm ·
all releases
Buttons always grab the latest release. Intel Macs: run from source.
The app is a small control panel that tries to handle the setup for you:
- Detects **Jackett** and **qBittorrent**, and installs the missing ones via your
package manager — Homebrew (macOS), winget (Windows), apt/dnf/pacman (Linux).
No package manager? It shows a **Download** button instead.
- Configures Jackett (finds its API key, adds a few popular indexers)
- **Direct / Cache** toggle + **Start / Stop**
- Shows the addon URL to paste into Stremio
- Stops the service when you quit
**First launch.** The app is unsigned (no paid signing cert), so your OS may warn
on first open:
- **macOS** — drag **Minitor → Applications**, then double-click the bundled
`unquarantine.command`, or run:
```bash
xattr -dr com.apple.quarantine /Applications/Minitor.app
codesign --force --deep --sign - /Applications/Minitor.app
```
*(Or right-click the app → Open the first time.)*
- **Windows** — SmartScreen may show "Windows protected your PC" → **More info →
Run anyway**.
- **Linux** — make the AppImage executable: `chmod +x Minitor_*.AppImage`.
> Cache mode only: enable qBittorrent's Web UI (Settings → Web UI, port 8080).
> Direct mode needs nothing extra.
---
## 🛠️ Run from source *(any OS)*
1 · Install Jackett (+ qBittorrent for cache mode)
```bash
# macOS (Homebrew)
brew install jackett && brew services start jackett # → http://127.0.0.1:9117
brew install --cask qbittorrent # only for STREAM_MODE=cache
# Windows (winget)
winget install Jackett.Jackett
winget install qBittorrent.qBittorrent
# Linux (apt example)
sudo apt-get install jackett qbittorrent
```
In the Jackett UI (`http://127.0.0.1:9117`) add a few indexers + copy the API key
(top-right). For qBittorrent, enable **Settings → Web UI** (port 8080).
2 · Configure .env
```bash
cp .env.example .env # then edit
```
| Var | Meaning |
|-----|---------|
| `STREAM_MODE` | `direct` (default) or `cache` |
| `JACKETT_URL`, `JACKETT_API_KEY` | your Jackett instance + key |
| `QBIT_URL`, `QBIT_USER`, `QBIT_PASS` | qBittorrent Web UI *(cache mode)* |
| `DOWNLOAD_DIR` | must match qBittorrent's save path *(cache mode)* |
| `PUBLIC_URL` | `http://127.0.0.1:11472` — use your LAN IP for phone/TV |
3 · Run
```bash
npm install
npm start # or: npm run dev (auto-restart)
```
4 · Install in Stremio
Stremio → **Add-ons** → paste into the search box → **Install**:
```
http://127.0.0.1:11472/manifest.json
```
Open any movie or series — Minitor searches Jackett by title (+ year) and lists
ranked streams inline.
Build the desktop app yourself
Build on the OS you're targeting (Tauri can't cross-compile). Pick the matching
sidecar script:
```bash
npm install
npm run build:sidecar:arm64 # macOS Apple Silicon (also: :x64, :win, :linux)
cd desktop && npm install
npm run tauri build # → src-tauri/target/release/bundle/
```
CI builds macOS (Apple Silicon), Windows and Linux automatically — push a `v*`
tag (see `.github/workflows/release.yml`).
---
## 🔬 How it works
```
Stremio ──/manifest.json──▶ Minitor (addon)
──/stream/….json──▶ resolve IMDb id (Cinemeta) ──▶ search Jackett
rank streams: tier ▸ seeders ▸ language
│
direct ────────────────────┤ Stremio's own engine streams via infoHash
│
cache ─── GET /play/… ─────┘ Minitor range-streams a local file (HTTP 206)
│ qBittorrent downloads it
▼ file on disk (DOWNLOAD_DIR)
```
Project map
| File / dir | Job |
|------------|-----|
| `src/addon.js` | manifest / catalog / meta / stream — the Stremio bridge |
| `src/cinemeta.js` | IMDb id → title / year |
| `src/search.js` | search, anchored title+year relevance, ranking, result cache |
| `src/jackett.js` | Jackett Torznab search |
| `src/jackett-setup.js` | discover API key + auto-add indexers |
| `src/resolve-magnet.js` | page-URL → magnet (apibay / HTML scrape) fallback |
| `src/qbittorrent.js` | qBittorrent Web API client *(cache mode)* |
| `src/cache.js` | local cache index + piece-aware status *(cache mode)* |
| `src/stream.js` | `/play/:hash` — local HTTP range/seek streaming *(cache mode)* |
| `desktop/` | Tauri macOS control panel (Rust core + webview UI) |
---
## ⚠️ Notes & limitations
It's still in beta, so expect rough edges:
- **Search quality** depends entirely on which indexers you add in Jackett.
- A single machine can't make the **first** play faster — it's gated by the same
peers/seeders. Real debrid services are fast because their cache is shared across
many users; Minitor has none of that.
- No transcoding — your player must support the codec/container (mkv/mp4 are usually fine).
- Please only use it for content you're legally allowed to download.
Built to learn how Stremio addons, BitTorrent streaming, and debrid services work.