No results
2
Home
xpltd_admin edited this page 2026-04-04 02:05:29 -06:00
Tubearr
| Meta | Value |
|---|---|
| Repo | xpltdco/tubearr |
| Page | Home |
| Audience | developers, agents, newcomers |
| Last Updated | 2026-04-04 |
| Status | current |
What is Tubearr?
Tubearr is a self-hosted content archival and monitoring application in the *arr family style (Sonarr, Radarr, Lidarr). It automatically monitors YouTube channels and SoundCloud artists for new content, downloads media using configurable quality profiles, and organizes files into a structured library. Think of it as an automated media librarian that watches your favorite creators and grabs their content before it disappears.
Current Status
Actively developed. Through M004 — feature parity with competing tools (Youtarr, TubeSync, Pinchflat, Tube Archivist). Core monitoring, downloading, queue management, media server integration, and library management features are production-ready.
Key URLs
| Resource | URL |
|---|---|
| Application | https://tubearr.xpltd.co |
| Repository | https://git.xpltd.co/xpltdco/tubearr |
| Health Check | https://tubearr.xpltd.co/ping |
| RSS Feed | https://tubearr.xpltd.co/api/v1/feed/rss |
Core Features
- Channel Monitoring — Add YouTube channels or SoundCloud artists; Tubearr periodically scans for new content
- Smart Queue — Concurrent download queue with retry logic, priority ordering, rate limiting, pause/resume per item
- Format Profiles — Configurable quality presets (resolution, codec, bitrate, subtitles, SponsorBlock) with output path templates
- Multi-Platform — YouTube, SoundCloud, and any URL supported by yt-dlp (1000+ sites)
- Ad-hoc URL Downloads — Paste any URL, preview metadata (title, thumbnail, duration), confirm to download
- Keyword Filtering — Per-channel include/exclude patterns (plain text, glob, regex) to skip unwanted content
- Media Server Integration — Plex and Jellyfin auto-scan on download completion with connection testing
- NFO Metadata — Kodi-compatible episodedetails XML sidecars with content ratings (item → channel → global cascade)
- Missing File Detection — Scans for removed media files, shows 'missing' badge, one-click re-download
- Content Type Tabs — Filter channel content by type (Videos, Shorts, Streams) with count badges
- Real-Time Progress — WebSocket-based live download progress in the browser UI
- Notifications — Discord, email, Pushover, and Telegram alerts on grab/download/failure events
- Back-Catalog Import — Bulk import existing media files into the library
- Output Path Templates — Configurable
{platform}/{channel}/{year}/{title}.{ext}variable syntax with live preview - Timezone & Theme — User-selectable timezone for all timestamps, dark/light theme with flash-free switching
- RSS Feed — Podcast-compatible RSS 2.0 feed for downloaded audio content
- REST API — Full API with key-based authentication for external integrations
Tech Stack
| Component | Technology |
|---|---|
| Backend | Node.js 22, TypeScript, Fastify 5 |
| Frontend | React 19, React Router 7, TanStack Query |
| Database | SQLite (LibSQL) with Drizzle ORM |
| Downloader | yt-dlp + ffmpeg |
| Build Tool | Vite |
| Testing | Vitest (830+ tests) |
| Deployment | Docker (multi-stage build) |
Wiki Pages
| Page | Description |
|---|---|
| Architecture | System design, tech stack, directory structure, design decisions |
| Getting Started | Local dev setup, prerequisites, first run |
| Data Model | Database schema, tables, relationships, migrations |
| API Reference | Complete HTTP endpoint inventory with examples |
| Deployment | Docker setup, volumes, nginx config, health checks |
| Configuration | All environment variables and config knobs |
| Development Guide | Code patterns, testing, CI/CD, contribution workflow |
| Agent Context | Structured metadata for LLM agents working on this codebase |
Glossary
| Term | Definition |
|---|---|
| Channel | A monitored content source — a YouTube channel, SoundCloud artist, or generic URL |
| Content Item | A single piece of downloadable media (video, audio, or livestream) |
| Format Profile | A reusable quality preset defining resolution, codec, subtitles, output path template, and post-processing options |
| Queue Item | A content item that has been enqueued for download, with status tracking, retry logic, and pause/resume |
| Monitoring Mode | Controls what content Tubearr grabs: all, future (new only), existing (backlog only), or none |
| Platform Source | An adapter for a specific content platform (YouTube, SoundCloud, Generic) |
| yt-dlp | The command-line tool that handles actual media downloading from 1000+ platforms |
| SponsorBlock | Community-sourced sponsor segment data; Tubearr can auto-remove sponsor segments during download |
| Media Server | A configured Plex or Jellyfin instance that receives automatic library scan triggers after downloads |
| NFO Sidecar | A Kodi-compatible XML metadata file generated alongside downloaded media |
| Content Rating | A per-item or per-channel rating (TV-Y through NC-17) written into NFO files for media server library categorization |
| Keyword Filter | Per-channel include/exclude patterns (plain text, glob, regex) applied during scheduled scans |
| *arr family | A category of self-hosted media management apps (Sonarr for TV, Radarr for movies, Lidarr for music) |
Infrastructure Context
For newcomers to the xpltd infrastructure:
- ub01 (10.0.0.10) — The primary server where all Docker services run
- nginx01 (10.0.0.9) — Reverse proxy handling TLS termination for all
*.xpltd.cosubdomains - AdGuard Home — Internal DNS with rewrite rules pointing
*.xpltd.coto nginx01 - Cloudflare — External DNS with CNAME to dyndns.xpltd.co for public access