server_cdm: true on a remote_services entry now licenses remote runs with the server CDM even when the service has its own cdm entry, which stays the local-run device and the fallback. A services.<TAG>.server_cdm replaces the server value for one service, per-service entries match the tag in any case, and the configured fallback logs at info. BREAKING CHANGE: with server_cdm: true, a per-service cdm entry no longer makes your own device license remote sessions; use dl --cdm or services.<TAG>.server_cdm: false.
unshackle
Movie, TV, and Music Archival Software
A modular archival tool for movies, TV, and music. Fork of Devine with DASH/HLS/ISM parsing, Widevine & PlayReady DRM, and a REST API.
Install
The recommended way is a git clone with the install script. The script installs uv and unshackle, then runs unshackle setup to download the external tools and write a first config.
git clone https://github.com/unshackle-dl/unshackle.git
cd unshackle
sh install.sh # Windows: .\install.bat
uv run unshackle env check
In a clone, run every command as uv run unshackle ....
Note
Advanced:
uv tool install git+https://github.com/unshackle-dl/unshackle.gitinstalls unshackle into the tool folder ofuv, not a folder that you choose.unshackle setupthen puts the tools, config, and data in your user data and config directories. See Installation for details.
Requirements
External tools. (recommended versions):
- Python - 3.11 - 3.14
- uv - ≥ 0.5
- FFmpeg - ≥ 6.0
- MKVToolNix - ≥ 80
- shaka-packager - 2.6.1, or ≥ 3.10.0
Optional:
- Bento4 - ≥ 1.6.0-639
- dovi_tool - ≥ 2.1
- SubtitleEdit - ≥ 5.0 (
SeConvCLI)
License
GPL-3.0. Do not use unshackle for content you do not have the rights to. Keep the core free and open. Keep service code private. Be kind.