A professional-grade web interface for managing IPTV configurations with Dispatcharr. Built with React + TypeScript and Python FastAPI.
ECM gives you full control over your IPTV setup: manage M3U accounts and EPG sources, create and organize channels with drag-and-drop, automate channel creation with a powerful rules engine, probe stream health, build FFmpeg commands visually, and monitor live streaming stats — all from a single interface.
services:
ecm:
image: ghcr.io/motwakorb/enhancedchannelmanager:latest
ports:
- "6100:6100" # HTTP (configurable via ECM_PORT)
- "6143:6143" # HTTPS (configurable via ECM_HTTPS_PORT)
volumes:
- ./config:/config
environment:
- PUID=1000
- PGID=1000
- ECM_PORT=6100
- ECM_HTTPS_PORT=6143That's it. Open http://localhost:6100 and the setup wizard will guide you through creating an admin account and connecting to Dispatcharr.
User / Group Identifiers:
- PUID (default: 1000) — User ID the application runs as
- PGID (default: 1000) — Group ID the application runs as
Set these to match the owner of your bind-mounted volumes to avoid permission issues. Find your IDs with id your_user.
Port Configuration:
- ECM_PORT (default: 6100) — HTTP interface (always available as fallback)
- ECM_HTTPS_PORT (default: 6143) — HTTPS interface (when TLS is configured in Settings)
Volumes:
/config— Persistent storage for database, settings, logos, TLS certificates, and backups
ECM supports full backup and restore of all configuration. You can create backups from Settings, or restore from a backup during the first-run setup wizard.
# Frontend
cd frontend && npm install && npm run dev
# Backend
cd backend && pip install -r requirements.txt && uvicorn main:app --reloadFull CRUD for channels and groups with a split-pane layout. Drag-and-drop streams onto channels, reorder streams by priority, bulk-create channels from stream groups with smart name normalization (quality variants, country prefixes, timezone handling), and organize everything into numbered channel groups. Staged edit mode lets you queue changes locally and commit or discard them as a batch.
Manage Standard M3U, XtreamCodes, and HD Homerun accounts. Link related accounts so group enable/disable changes cascade automatically. Track changes detected across M3U refreshes with filtering, search, and optional email digest notifications.
Configure multiple XMLTV and Schedules Direct EPG sources with drag-and-drop priority ordering. Create dummy EPG entries for channels without guide data. Bulk EPG assignment uses country-aware matching, call sign scoring, and HD preference to automatically map EPG data to channels.
EPG grid view with now-playing highlights, date/time navigation, channel profile filtering, and click-to-edit channel metadata.
A rules-based automation engine for channel creation, stream merging, and lifecycle management. Build complex conditions (stream name, group, quality, codec, normalized matching, etc.) with AND/OR logic, then define actions (create channel/group, merge streams, assign metadata, set variables, name transforms). Supports dry-run preview, execution rollback, YAML import/export, and orphan reconciliation.
Visual interface for constructing FFmpeg commands with Simple (three-step IPTV wizard) and Advanced modes. Includes 8 built-in IPTV presets, hardware acceleration support (CUDA, QSV, VAAPI), annotated command preview with tooltips, saved profiles, and direct push to Dispatcharr as stream profiles.
Automated stream probing with configurable schedules, batch sizes, retry logic, and rate limit detection. Profile-aware probing distributes connections across M3U profiles. Results drive smart stream sorting by resolution, bitrate, framerate, and M3U priority. Black screen detection identifies streams showing dark/blank content, and low FPS detection flags streams below a configurable threshold (5/10/15/20 FPS). Both are deprioritized in Smart Sort. A strikeout system tracks consecutive failures for bulk cleanup.
Browse, search, upload, and assign logos to channels. Supports URL import and file upload to Dispatcharr with usage tracking and pagination.
Live dashboard showing active channels, M3U connection counts, per-channel FFmpeg metrics (speed, FPS, bitrate), and bandwidth charts. Enhanced analytics include unique viewer tracking, per-channel bandwidth, popularity scoring with trend analysis, and watch history.
Activity log tracking all changes to channels, EPG, and M3U accounts with filtering by category, action type, and time range.
Comprehensive configuration including Dispatcharr connection, channel defaults, stream name normalization (tag-based and rule-based engines), stream probing, scheduled tasks (EPG/M3U refresh, probing, cleanup), alert methods (Discord, Telegram, email), authentication (local + Dispatcharr SSO), user management, TLS certificates, VLC integration, appearance themes, and backup/restore.
First-run setup wizard, local auth with bcrypt hashing, Dispatcharr SSO, account linking, email-based password reset, and CLI password reset for lockout recovery. JWT-based sessions with automatic token refresh.
In-app notification bell with history, active task pinning, and external alert methods (Discord webhooks, Telegram bots, SMTP email) with digest batching and source filtering.
# Interactive mode (lists users, prompts for password)
docker exec -it enhancedchannelmanager python /app/reset_password.py
# Non-interactive
docker exec enhancedchannelmanager python /app/reset_password.py -u admin -p 'NewPass123'
# Skip password strength validation
docker exec enhancedchannelmanager python /app/reset_password.py -u admin -p 'simple' --force./scripts/search-stream.sh http://dispatcharr:9191 admin password "ESPN"| Layer | Technology |
|---|---|
| Frontend | React 18, TypeScript, Vite, @dnd-kit |
| Backend | Python, FastAPI, 20+ modular API routers |
| Deployment | Docker, single container, static frontend |
Interactive API docs are available at /api/docs (Swagger UI) and /api/redoc. See docs/api.md for the full endpoint reference.
Text transforms, conditionals, lookup tables, per-source inline lookups, and enhanced live preview for dummy EPG templates.
Migrate heavy client-side computation (EPG matching, stream normalization, print guide generation, edit mode consolidation) to backend APIs.
Generate M3U playlists and XMLTV EPG from managed channels. Playlist profiles, cloud adapters (S3, Google Drive, OneDrive, Dropbox), scheduled publish pipeline, and full management UI.