{
  "schemaVersion": 1,
  "contentVersion": "ca42e61ede0a24f789d7287a0001244ad22f4abf",
  "id": "docs/tools/utilities/tapedeck",
  "collection": "docs",
  "title": "TapeDeck",
  "description": "TapeDeck is a self-hosted master/worker system that distributes video, audio and image encoding jobs across machines, with a web UI and REST API.",
  "canonicalUrl": "https://encode.wiki/tools/utilities/tapedeck/",
  "apiUrl": "https://encode.wiki/api/v1/documents/docs/tools/utilities/tapedeck.json",
  "markdownUrl": "https://encode.wiki/api/v1/markdown/docs/tools/utilities/tapedeck.md",
  "status": "current",
  "tags": [
    "distributed-encoding",
    "orchestration",
    "web-ui",
    "api"
  ],
  "license": "CC BY-SA 4.0",
  "dates": {
    "lastVerified": "2026-10-08T00:00:00.000Z"
  },
  "authors": [],
  "sources": [
    {
      "title": "TapeDeck repository",
      "url": "https://gitgud.io/Sapphire/Mixtape/TapeDeck",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "TapeDeck v0.1.0 README",
      "url": "https://gitgud.io/Sapphire/Mixtape/TapeDeck/-/blob/v0.1.0/README.md",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "TapeDeck Dolby Vision guide",
      "url": "https://gitgud.io/Sapphire/Mixtape/TapeDeck/-/blob/v0.1.0/docs/DOLBY_VISION.md",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    }
  ],
  "headings": [
    {
      "depth": 2,
      "text": "What it handles",
      "anchor": "what-it-handles"
    },
    {
      "depth": 2,
      "text": "Run it",
      "anchor": "run-it"
    }
  ],
  "sections": [
    {
      "id": "_preamble",
      "title": "Page introduction",
      "depth": 0,
      "canonicalUrl": "https://encode.wiki/tools/utilities/tapedeck/",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/utilities/tapedeck/_preamble.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/utilities/tapedeck/_preamble.md",
      "checksum": "e170fe5ba745b8af761f5a6a212cdc2302538320b2583edb137878a9409ea3e6",
      "bytes": 979
    },
    {
      "id": "what-it-handles",
      "title": "What it handles",
      "depth": 2,
      "anchor": "what-it-handles",
      "canonicalUrl": "https://encode.wiki/tools/utilities/tapedeck/#what-it-handles",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/utilities/tapedeck/what-it-handles.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/utilities/tapedeck/what-it-handles.md",
      "checksum": "aeca31a4b7493dda84a439d32f510cee3059dc808a94c007e9d56ff7631417ac",
      "bytes": 1367
    },
    {
      "id": "run-it",
      "title": "Run it",
      "depth": 2,
      "anchor": "run-it",
      "canonicalUrl": "https://encode.wiki/tools/utilities/tapedeck/#run-it",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/utilities/tapedeck/run-it.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/utilities/tapedeck/run-it.md",
      "checksum": "51542b501869ab09f63d508b67c48a291fde2167e0cb66d5384a088c436204c4",
      "bytes": 757
    }
  ],
  "outboundReferences": [
    "/tools/software-encoders/svt-av1-hdr/",
    "/tools/utilities/av1an/",
    "/tools/utilities/dovi_tool/",
    "/tools/utilities/hdr10plus_tool/",
    "/tools/utilities/vship/",
    "https://gitgud.io/Sapphire/Mixtape/TapeDeck",
    "https://gitgud.io/Sapphire/Mixtape/TapeDeck/-/blob/v0.1.0/README.md",
    "https://gitgud.io/Sapphire/Mixtape/TapeDeck/-/tags/v0.1.0"
  ],
  "checksum": "837066df0a81d847956bf0a75cd9650a3fc0759c4c963e1de29e84f9ecd7b61b",
  "contentFormat": "markdown",
  "markdown": "> **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.\n\nTapeDeck 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.\n\nIt 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).\n\n## What it handles\n\n| Area       | Tools used                                                                                              |\n| ---------- | ------------------------------------------------------------------------------------------------------- |\n| 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) |\n| Audio      | Opus (FFmpeg piped to opusenc), FLAC, AAC                                                               |\n| Images     | AVIF (avifenc), WebP (cwebp or FFmpeg)                                                                  |\n| Muxing     | mkvmerge, with FFmpeg as fallback; MKV, MP4 and WebM output                                             |\n| 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/) |\n| Metrics    | SSIMULACRA2, Butteraugli and CVVDP through [Vship](/tools/utilities/vship/) on workers with a GPU       |\n\nKeeping 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.\n\n## Run it\n\nThe 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.\n\nFollow 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.\n"
}
