# TapeDeck

Canonical URL: https://encode.wiki/tools/utilities/tapedeck/
Content version: ca42e61ede0a24f789d7287a0001244ad22f4abf
Status: current
License: CC BY-SA 4.0
Checksum (SHA-256): 837066df0a81d847956bf0a75cd9650a3fc0759c4c963e1de29e84f9ecd7b61b

> **Repository:** [Sapphire/Mixtape/TapeDeck](https://gitgud.io/Sapphire/Mixtape/TapeDeck). Golang master-slave distributed encoding system with a Web UI and API for personal or backend service use. Latest tag: [v0.1.0](https://gitgud.io/Sapphire/Mixtape/TapeDeck/-/tags/v0.1.0), Oct 2, 2026. Last commit: Oct 2, 2026. License: MIT. Stars: 0.

TapeDeck is a distributed encoding system written in Go, developed as part of the Mixtape project. A master server holds a queue of projects (a film, a series, an album, an image gallery) and hands encoding tasks to worker nodes, which register themselves and advertise what they can do. You manage everything through a web UI or a REST API. It is meant for people who encode whole libraries on several machines and want a queue and dashboard rather than shell scripts.

It is new: `v0.1.0` (October 2026) is the first stable release. It is MIT-licensed; source and issues are on [GitGud](https://gitgud.io/Sapphire/Mixtape/TapeDeck).

## What it handles

| Area       | Tools used                                                                                              |
| ---------- | ------------------------------------------------------------------------------------------------------- |
| Video      | SVT-AV1 (stock or the [SVT-AV1-HDR](/tools/software-encoders/svt-av1-hdr/) fork), x265, x264, and VP9 (through [Av1an](/tools/utilities/av1an/) for chunked encoding) |
| Audio      | Opus (FFmpeg piped to opusenc), FLAC, AAC                                                               |
| Images     | AVIF (avifenc), WebP (cwebp or FFmpeg)                                                                  |
| Muxing     | mkvmerge, with FFmpeg as fallback; MKV, MP4 and WebM output                                             |
| HDR        | Detects HDR10, HDR10+ and Dolby Vision profiles 5, 7, 8 and 10; Dolby Vision can be stripped (default), kept, or converted to profile 8 using [dovi_tool](/tools/utilities/dovi_tool/) and [hdr10plus_tool](/tools/utilities/hdr10plus_tool/) |
| Metrics    | SSIMULACRA2, Butteraugli and CVVDP through [Vship](/tools/utilities/vship/) on workers with a GPU       |

Keeping Dolby Vision or HDR10+ metadata in AV1 needs the SVT-AV1-HDR fork on the worker; with stock SVT-AV1 those modes fail with an error instead of silently dropping the metadata.

## Run it

The README's quick start runs a master and one worker with Docker Compose on a single host, using the published `tapedeck-master` and `tapedeck-slave` images and a set of generated API and enrollment keys; the web UI is then on port 7700. Workers on other machines use the remote-worker Compose file, each with its own credentials and TLS certificate, and need the source media mounted. An install script sets up a bare-metal worker on Arch Linux or CachyOS. For production, the repository includes a PostgreSQL-backed Compose stack with TLS between master and workers.

Follow the [README](https://gitgud.io/Sapphire/Mixtape/TapeDeck/-/blob/v0.1.0/README.md) for the exact environment variables and Compose files, which change between versions.
