A self-hosted dashboard for monitoring Twitch streams. Track categories and channels, filter by language and viewers, get alerts via email, Discord or webhooks.
Twitch lets you follow categories, but it won't notify you when a new stream goes live in one. There's no way to say "tell me when someone starts streaming this game in English with more than 50 viewers." You're left refreshing the category page manually and scrolling through hundreds of streams.
StreamRadar watches the categories and channels you pick, checks for new streams automatically, and alerts you via email, Discord, or any webhook when something matches your conditions — language, viewer count, keywords, you name it. Self-hosted, private, no account needed.
- Track categories — follow Twitch game categories (e.g. "Just Chatting", "Fortnite")
- Track channels — follow specific Twitch channels regardless of what they stream
- Live dashboard — see all live streams in one place with sorting, grouping, and filtering
- Alerts — get notified when streams go live via email, Discord, Telegram, or generic webhook
- Blacklist — block channels, keywords, or tags from appearing in results
- Dark / Light mode — system-aware theme with manual toggle
- Pin streams — pin your favorites to the top
- Export / Import — backup and restore all your settings
- Self-hosted — your data stays on your machine, SQLite database, no external services required
streamradar-presentation.mp4
You only need Docker Desktop installed. The install script does everything else.
Windows — open PowerShell or Command Prompt and paste:
curl -fsSL https://raw.githubusercontent.com/stmn/StreamRadar/main/install.bat -o install.bat && install.bat
Or download install.bat and double-click it.
Mac / Linux — open Terminal and paste:
curl -fsSL https://raw.githubusercontent.com/stmn/StreamRadar/main/install.sh | bashThat's it. Open http://localhost:8080 in your browser.
If you prefer to do it yourself:
git clone https://github.com/stmn/StreamRadar.git
cd streamradar
docker compose up -dEverything is automatic — database, encryption keys, and migrations are set up on first launch.
Change the port (e.g. to 3000): add APP_PORT=3000 to .env file, then run docker compose up -d
Stop: docker compose stop
Update: git pull && docker compose up -d --build
Requirements: PHP 8.3+, Composer, Node.js 20+, npm
git clone https://github.com/stmn/StreamRadar.git
cd streamradar
# Install dependencies
composer install
npm install
# Build the frontend
npm run build
# Set up the app
cp .env.example .env
php artisan key:generate
php artisan app:setup
# Start the server
php artisan serveOpen http://localhost:8000 in your browser.
For automatic syncing, run this in a separate terminal:
php artisan schedule:workStreamRadar needs a Twitch API key to fetch stream data. Don't worry — it only reads public data, no Twitch login is needed.
- Go to the Twitch Developer Console
- Log in with your Twitch account
- Click Register Your Application
- Fill in:
- Name: anything (e.g. "StreamRadar")
- OAuth Redirect URLs:
http://localhost(required but not used) - Category: Analytics Tool
- Click Create
- Click Manage on your new app
- Copy the Client ID
- Click New Secret and copy the Client Secret
- In StreamRadar, go to Settings → paste both values → click Save
- Click Test Connection to verify it works
- Go to the Tracking tab
- Type a category name (e.g. "Just Chatting")
- Select from the dropdown and click Track
- StreamRadar will immediately fetch live streams for that category
- In the Tracking tab, switch to Channels
- Type a channel login (e.g. "shroud") and click Track
- Their stream will appear on the dashboard whenever they're live
- Go to the Alerts tab
- Click New Alert
- Configure what you want to be notified about
- Choose notification channels: Email, Discord, Telegram, and/or Webhook
Configure each channel in Settings first (SMTP for Email, webhook URL for Discord, bot token for Telegram, endpoint URL for Webhook).
StreamRadar can send alerts through multiple channels:
| Method | Setup |
|---|---|
| Settings → Email/SMTP. Works with any SMTP server, Gmail, Mailgun, etc. | |
| Discord | Settings → Discord. Paste a webhook URL from your server. |
| Telegram | Settings → Telegram. Create a bot via @BotFather, copy the bot token, send /start to the bot, then enter the bot token and your chat ID. To find your chat ID, message @userinfobot. |
| Webhook | Settings → Webhook. POST JSON to any URL — works with ntfy.sh, Zapier, Make, or your own endpoint. |
StreamRadar automatically refreshes stream data. The sync frequency is configurable in Settings (default: every 5 minutes).
Docker: Automatic syncing is built-in, no extra setup needed.
Manual installation: Keep php artisan schedule:work running in a separate terminal, or add a cron job:
* * * * * cd /path/to/streamradar && php artisan schedule:run >> /dev/null 2>&1
You can also manually sync anytime by clicking the Sync button in the top bar.
By default, StreamRadar has no login — it's designed for personal use on your local network.
To add password protection:
- Go to Settings → Access Control
- Set a username and password
- Click Save
Login will be required in all new browser sessions. To disable it, click Disable Access Control or run:
php artisan auth:resetTo keep StreamRadar running continuously (including after system restarts):
Docker (recommended): The docker-compose.yml already includes restart: unless-stopped, so the container will automatically restart after a system reboot — as long as Docker itself starts on boot.
- Windows: Docker Desktop starts with Windows by default. Check Docker Desktop → Settings → General → "Start Docker Desktop when you sign in".
- Mac: Docker Desktop starts automatically. Check Docker Desktop → Settings → General → "Start Docker Desktop when you log in".
- Linux: Enable the Docker service:
sudo systemctl enable docker
Manual installation (without Docker): Use a process manager or system service:
-
Linux (systemd):
# Create /etc/systemd/system/streamradar.service [Unit] Description=StreamRadar After=network.target [Service] Type=simple User=www-data WorkingDirectory=/path/to/streamradar ExecStart=/usr/bin/php artisan serve --host=0.0.0.0 --port=8080 Restart=always [Install] WantedBy=multi-user.targetThen:
sudo systemctl enable --now streamradar -
Mac (launchd): Use
launchctlor a tool like pm2:npm install -g pm2 pm2 start "php artisan serve --port=8080" --name streamradar pm2 startup # generates auto-start config pm2 save
- Backend: Laravel 13, PHP 8.4, SQLite
- Frontend: Vue 3, Inertia.js 3, Tailwind CSS v4, TypeScript
- Icons: Lucide
- Deployment: Docker (nginx + PHP-FPM + scheduler in one container)
| Command | Description |
|---|---|
php artisan streams:sync |
Manually sync all streams |
php artisan app:setup |
Initial setup (migrations + defaults) |
php artisan auth:reset |
Remove password protection |
php artisan schedule:work |
Start the scheduler (auto-sync) |
MIT — do whatever you want with it.
