yt-dlp integration¶
VDL standalone and developer builds use the immutable nightly source pinned in
tool.uv.sources and uv.lock. The current baseline is 2026.10.10.233141.
The published Python package retains a normal PyPI dependency; its environment
is managed by pip/uv rather than the standalone updater.
Download behavior¶
- Use yt-dlp's default clients and native format ranking for
best. - Require exact 2160p, 1440p, 1080p, 720p, or 480p when requested.
--fallbackpermits lower resolutions, never higher ones.4kand2knormalize to 2160p and 1440p in every interface.- Merge/remux video to MP4 without re-encoding. Audio-only output remains MP3.
- Only use explicitly configured cookies, proxies, and extractor arguments.
- Leave network/fragment retries to yt-dlp; do not repeat failed requests with forced legacy clients or an unconfigured authentication path.
Dependencies and packaging¶
EJS contains challenge-solving scripts, not an executable JavaScript runtime.
Deno is preferred; Node.js 22+ is also supported. An explicit js_runtime_path
is passed to yt-dlp. vdl doctor reports the runtime and EJS independently.
FFmpeg/ffprobe are needed for merging and media verification.
scripts/build-binaries.py packages the CLI and MCP entrypoints with the same
yt-dlp assets, EJS scripts, and distribution metadata. It is shared by the
macOS, Linux, and Windows build recipes. No PO-token service is installed.
Updates and verification¶
vdl update replaces standalone VDL and its bundled dependencies through a
SHA256-verified VDL release. Test a new nightly before changing the immutable
source reference, regenerate the lockfile, run the suite, rebuild both binaries,
and verify actual downloads. Package installations use their package manager.
Run sh tests/smoke/test_install.sh for installer checks. For real frozen Linux
installer/updater tests, start Docker and run:
docker build --platform linux/amd64 -f tests/docker/Dockerfile -t vdl-update-test:local .
docker run --rm --platform linux/amd64 vdl-update-test:local
The container tests stage releases locally and never publish to GitLab or replace host installations.