unshackle¶
unshackle is a modular archival tool for movies, TV, and music. It fetches media from streaming manifests, handles the DRM, and muxes everything into clean, well-tagged files, all driven from a single command-line tool, or served over a REST API for automation.
It is a fork of Devine with first-class DASH, HLS, and Smooth Streaming (ISM) parsing, both Widevine and PlayReady DRM support, and a built-in HTTP server.
Use responsibly
unshackle is licensed under GPL-3.0. Do not use it for content you do not have the rights to. Keep the core free and open, keep service code private, and be kind.
What it does¶
Point unshackle at a title on a streaming service and it will:
- Fetch the title metadata (movies, full series, seasons, episodes, albums, tracks).
- Parse the streaming manifest: DASH, HLS, or Smooth Streaming (ISM).
- Select the tracks you asked for by resolution, codec, bitrate, range, language, and channel layout.
- Acquire decryption keys via a Widevine or PlayReady CDM, with optional key vaults so keys are reused instead of re-licensed.
- Decrypt, extract closed captions, repack, and mux the result into a Matroska
(
.mkv) file with correct language, forced, and default flags. - Tag and name the output using configurable filename templates.
Feature highlights¶
| Area | What you get |
|---|---|
| Media types | Movies, TV series/seasons/episodes, and music albums/tracks |
| Manifests | DASH, HLS, and Smooth Streaming (ISM) |
| DRM | Widevine and PlayReady, with ClearKey support |
| Video | AVC, HEVC, VC-1, VP8, VP9, AV1; SDR, HLG, HDR10, HDR10+, Dolby Vision, and Dolby Vision hybrid merging |
| Audio | AAC, AC-3, E-AC-3, AC-4, Opus, Vorbis, DTS, ALAC, FLAC; Dolby Atmos handling; per-channel-layout selection |
| Subtitles | SRT, WebVTT, ASS/SSA, TTML and more, with optional SDH stripping and format conversion |
| Key vaults | SQLite, MySQL, and HTTP/API vaults to store and share content keys |
| Proxies | Basic proxies plus NordVPN, ProtonVPN, Surfshark, Windscribe, ExpressVPN, Gluetun, and Hola providers |
| Services | Pluggable service modules, loadable from local folders or git repositories |
| Automation | A REST API with a job queue, live progress, history, and remote-download sessions |
Installation at a glance¶
External tools
unshackle shells out to FFmpeg, MKVToolNix, shaka-packager, Bento4, and
dovi_tool for decryption, repacking, muxing, and Dolby Vision work. See
Installation for the full list and recommended versions.
A first download¶
Every download is three parts: the dl command, a service tag, and the
service's title argument (a URL, ID, or slug).
The dl command carries all the quality, language, and output flags; the service
tag (EXAMPLE above) selects which streaming service to talk to, and the value after it
is passed to that service. See the Quickstart to go from a fresh
install to your first file.
Where to go next¶
- Installation. Install unshackle and the external tools it depends on.
- Quickstart. Configure
unshackle.yamland run your first download. - Downloading. The full
dlcommand guide: quality, codecs, languages, track selection, and output. - Configuration. Every
unshackle.yamlkey, directories, vaults, proxies, and naming templates. - REST API. Run the
serveHTTP server and drive downloads programmatically.
Getting help
Run unshackle --help or unshackle dl --help at any time. The community
Discord is the fastest place to ask questions.