Desktop workbench for yt-dlp built with Tauri 2, React, TypeScript, and Rust.
yt-dlp Studio is designed as a desktop-first operator console rather than a thin wrapper around a terminal command. It provides a guided download flow, queue and history pages, dependency repair, authentication helpers, and release packaging through GitHub Actions.
- New-download workbench with simple and expert modes
- Queue and history pages with shared visual and interaction semantics
- YouTube media inspection with separate video and audio format selection
- Command preview generation with masking for sensitive arguments
- Authentication center for browser-cookie and
cookies.txtsources - Dependency detection and repair flow for
yt-dlpandffmpeg - Settings for language, default output directory, and binary path overrides
- Chinese and English UI
- Tauri packaging for Windows and Linux
- Desktop targets: Windows and Linux
- YouTube format parsing is currently implemented for YouTube URLs
- General download queueing still supports regular
yt-dlpURL input with preset modes - Runtime still depends on
yt-dlpand, for some workflows,ffmpeg - The app can guide or perform dependency installation depending on platform
The app resolves runtime tools in this order:
- User-configured binary override from Settings
- App-managed tool directory
- System
PATH
Current install behavior:
- Windows: managed in-app install for
yt-dlpandffmpeg - Linux: in-app install guidance and one-click package-manager execution when a supported package manager and
pkexecare available - Supported Linux package managers:
apt,dnf,pacman
The authentication center currently supports:
- Browser cookie source
cookies.txtfile source
By default, the app stores auth source references, not copied cookie contents:
- Browser source stores browser/profile identifiers
cookies.txtsource stores the file path
The application stores local state in the system app data directory through SQLite and platform app-data paths.
Typical local data includes:
- Settings
- Job queue and history records
- Job logs
- Auth source metadata
- Managed tool binaries installed by the app
Sensitive command preview values such as passwords and auth headers are redacted before persistence where supported by the code path.
Do not commit local runtime artifacts such as:
src-tauri/target/dist/node_modules/*.db,*.sqlite,*.sqlite3.env,.env.*cookies.txt*.log
- Tauri 2
- React 19
- TypeScript
- Vite 7
- Rust
- rusqlite
- Vitest + Testing Library
- GitHub Actions
- Node.js
22.12+ - pnpm
10+ - Rust stable toolchain
Recommended local Node version:
22.22.2(.nvmrcis included)
Linux build prerequisites used by CI:
sudo apt-get update
sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelfInstall dependencies:
pnpm installRun frontend dev server:
pnpm devRun the Tauri desktop app in development:
pnpm tauri devFrontend tests:
pnpm exec vitest runRust tests:
cargo test --manifest-path src-tauri/Cargo.tomlProduction web build:
pnpm buildLocal Tauri package build:
pnpm tauri buildThis repository is set up to use GitHub Actions as the formal packaging and release path.
Preview workflow:
- File:
.github/workflows/preview.yml - Trigger: pushes to
mainand pull requests - Output: workflow artifacts for Windows and Linux preview builds
Release workflow:
- File:
.github/workflows/release.yml - Trigger: tags matching
v*or manualworkflow_dispatch - Output: GitHub Release with packaged Windows and Linux artifacts
Local pnpm tauri build remains useful for smoke testing and verifying installer output before pushing.
.
├── .github/workflows/ CI, preview packaging, release packaging
├── src/ React frontend
│ ├── app/ app shell and routing
│ ├── features/ workbench, queue, history, auth, tools, settings
│ ├── i18n/ bilingual UI messages and status formatters
│ ├── lib/ Tauri API bridges and command-preview helpers
│ └── styles/ app styles and tokens
├── src-tauri/ Rust backend and Tauri packaging config
│ └── src/ commands, db, dependency manager, auth manager, job runner
└── docs/ design notes, specs, and implementation plans
- Keep README and workflow behavior aligned
- Prefer updating tests alongside behavior changes
- Do not commit runtime databases, cookies, or packaged binaries
- Use GitHub Actions as the normal release path instead of manual local publishing