A self-hosted personal media server with an AI-powered butler assistant. Stream your local library from any browser, control downloads, and talk to Alfred — your personal media AI — by voice or text.
- Scans local directories recursively for movies and TV shows
- Smart filename parser — extracts title, year, season/episode automatically
- Organized browsing by category, genre, and recently added
- TMDB poster integration (optional, free API key)
- Auto-generates video thumbnails
- Full-text search across title, genre, and year
- Subtitle support (SRT, VTT, ASS)
- Custom poster/thumbnail upload per item
- Playlist queuing with repeat modes
- In-browser video player with HTTP range-request support (seek works)
- Keyboard shortcuts:
/to search,Escto close - Previous/next episode navigation
- Caption/subtitle toggle
- Transcoded stream endpoint for compatibility
Alfred is your omniscient media assistant powered by Claude (Anthropic). He speaks like Batman's trusted butler and can do anything on the platform:
- Download on command — "Download Jackass" → Alfred searches, picks the best torrent, starts it immediately. No confirmation prompts.
- Monitor downloads — "What's downloading?" → live progress, speed, ETA
- Control torrents — pause, resume, remove by voice or text
- Browse library — "Do we have any Nolan films?" → searches local collection
- Show episodes — "List all One Piece seasons" → full episode guide
- Manage server — rescan library, view/update configuration, switch torrent clients
- Voice input — 🎙 mic button; Alfred speaks replies back in a British butler voice
- Global floating widget — mini pixel-art butler in the bottom-right, accessible from every page
- Download notifications — Alfred announces when something finishes and offers to play it
- Supports qBittorrent (recommended for Windows) and Transmission
- Search The Pirate Bay from the Torrents tab or via Alfred
- Results sorted by seeders — dead torrents filtered automatically
- HTTP tracker fallback for restricted networks (WSL2, NAT, etc.)
D3FLIX ships a native Windows application built with C# WPF + WebView2. No browser, no terminal — just install and launch.
- Download
D3FLIX-Setup.exefrom Releases - Run the installer — no admin required
- D3FLIX installs to
%LOCALAPPDATA%\Programs\D3FLIX - A desktop shortcut and Start Menu entry are created automatically
- D3FLIX launches after install
- Appears as a system tray icon (red = running, grey = starting)
- Starts the Node.js server automatically in the background
- Opens D3FLIX in its own native window (not a browser tab)
- Double-click the tray icon to open the window anytime
- Right-click the tray icon: Open / Server Log / Restart Server / Quit
Requirements: .NET 8 SDK, Node.js, Inno Setup 6
git clone https://github.com/d3f4ultt/d3flix.git
cd d3flix
npm install
cd d3flix-win
.\build.ps1The build script generates icons, downloads a portable Node.js 20 runtime, compiles the C# app, and produces d3flix-win\installer\output\D3FLIX-Setup.exe.
git clone https://github.com/d3f4ultt/d3flix.git
cd d3flix
npm install
node server.jsOpen http://localhost:3000 — then go to Settings to add your media directories and API keys.
- Node.js v18+ (bundled in the Windows installer — not required separately)
- qBittorrent (Windows) or Transmission with Web UI enabled
- Anthropic API key for Alfred — console.anthropic.com (free tier available)
- TMDB API key (optional, for official posters) — themoviedb.org/settings/api
config.json is created automatically. You can edit it directly or use the Settings UI:
{
"mediaDirs": [
"C:\\Users\\YourName\\Videos\\movies",
"D:\\Media"
],
"tmdbApiKey": "your_tmdb_key",
"alfredApiKey": "sk-ant-...",
"torrentClient": "qbittorrent",
"qbittorrentHost": "localhost",
"qbittorrentPort": 8080,
"qbittorrentUser": "admin",
"qbittorrentPass": "adminadmin"
}Alfred requires the qBittorrent Web UI to manage downloads:
- Open qBittorrent → Tools → Options → Web UI
- Check "Web User Interface (Remote control)"
- Port:
8080· Username:admin· Password:adminadmin - Click OK
Uses the browser's built-in Web Speech API — no external service needed.
- 🎙 button — click to start, auto-sends when you stop speaking
- 🔊 toggle — mute/unmute Alfred's voice replies
- Global widget — the mini butler (bottom-right) works from any page
- Best in Chrome or Edge
Alfred prefers a British male voice (Daniel, Google UK English Male, Microsoft George).
D3FLIX uses folder names as categories. Organize like this:
Videos/
├── Movies/
│ ├── Inception.2010.1080p.mkv
│ └── The.Matrix.1999.mp4
├── TV Shows/
│ ├── Breaking Bad/
│ │ ├── Breaking.Bad.S01E01.mp4
│ │ └── Breaking.Bad.S01E02.mp4
│ └── Westworld/
│ └── Westworld.S01E01.mkv
└── Anime/
└── Cowboy.Bebop.S01E01.mkv
| Endpoint | Description |
|---|---|
GET /api/library |
Library stats and media dir info |
GET /api/browse |
All items grouped by category |
GET /api/recent?limit=20 |
Recently added |
GET /api/search?q=query |
Search library |
GET /api/media/:id |
Single item with episode list |
GET /api/stream/:id |
Stream video (range requests) |
GET /api/shows |
TV shows with full episode listings |
POST /api/rescan |
Rescan media directories |
GET /api/downloads/status |
Torrent client status |
GET /api/downloads/list |
Active/queued torrents |
POST /api/downloads/add |
Add magnet link |
POST /api/downloads/action |
Pause/resume/verify |
DELETE /api/downloads/remove/:id |
Remove torrent |
GET /api/tpb/search?q=query |
Search The Pirate Bay |
POST /api/alfred |
Alfred AI chat endpoint |
POST /api/profile/event |
Record play/download events |
GET /api/config |
Get configuration |
POST /api/config |
Update configuration |
Alfred has full server access through these tools:
| Tool | What it does |
|---|---|
search_torrents |
Search The Pirate Bay |
add_torrent |
Add to download queue (auto-picks best) |
list_downloads |
Live download progress and status |
control_torrent |
Pause / resume / remove by ID |
search_library |
Search local media |
browse_library |
Browse by category |
get_show_episodes |
All seasons and episodes for a show |
get_recent |
Recently added files |
rescan_library |
Trigger directory rescan |
get_config |
View server config |
update_config |
Change media dirs, client settings |
Video: .mp4 .mkv .avi .mov .wmv .flv .webm .m4v .mpg .mpeg .ts .vob
Subtitles: .srt .vtt .ass .ssa .sub
- Backend: Node.js + Express (zero dependencies beyond npm packages)
- Frontend: Vanilla HTML/CSS/JS — no build step, no framework
- Windows App: C# WPF + WebView2 + WinForms NotifyIcon (.NET 8, self-contained)
- AI: Anthropic Claude (Haiku) via API
- No database — filesystem is the source of truth
MIT
