Skip to main content
This page lists what DeckTalk needs, what decktalk setup downloads, and which commands spend ElevenLabs credits. Read it before you set up a new machine or a CI runner, and before your first voiced build.

Software

DeckTalk needs Python 3.12 or later. It runs on Linux, macOS, and Windows.
  • DeckTalk has two Python dependencies, Playwright and static-ffmpeg. Your installer adds both.
  • Playwright includes its own browser driver, so you do not need Node.
  • decktalk setup downloads Chromium, ffmpeg, and KaTeX. You install nothing else by hand.
The quickstart installs DeckTalk with uv, pipx, or pip.

Accounts

A silent build needs no account and no API key. A voiced build needs two values from ElevenLabs. Put both values in .env in the project directory, or set them in the environment. A value that starts with <, such as <your-elevenlabs-key>, counts as unset. Part 3 of the quickstart shows where the values go.

What spends credits

Only two parts of DeckTalk call ElevenLabs. The narrate stage calls the text-to-speech endpoint, and decktalk soundscape calls the sound effects and music endpoints. A voiced section costs the characters of its whole text. An edit therefore costs every changed section in full, not only the changed sentences. A ten-minute narration is about 9,000 characters. A silent build stops when the project has voiced takes. With --force, it empties the narration cache, so the next voiced build voices every section again. A silent build and a voiced build explains the cache. To see a run before it spends credits, use --dry-run or preflight. None of these commands calls the API:
  • decktalk narrate --dry-run prints the text of each section, and which sections a voiced run would voice, with their characters.
  • decktalk preflight prints the same plan, resolves every cue, and estimates each reveal from frozen frames.
  • decktalk soundscape --dry-run prints every request.
These commands never spend credits: a silent build, setup, init, doctor, preflight, beats, record, measure, check, assemble, verify, shots, status, and runtime.

ElevenLabs plans

Every ElevenLabs plan can call the API, including the free plan. The free plan has three limits for a video you publish:
  • It has no commercial license.
  • The title of published content must include “elevenlabs.io” or “11.ai”.
  • It cannot use Voice Library voices through the API.
For a video you publish, start with the Starter plan.

What setup downloads

decktalk setup makes three downloads, one time per machine. decktalk doctor then reports on each download. To move DeckTalk’s cache, set DECKTALK_CACHE_DIR.

Linux system libraries

On Linux, setup passes --with-deps to Playwright, and Playwright installs Chromium’s system libraries with apt-get.
  1. Playwright runs apt-get through sudo.
  2. If sudo is missing, it uses su root -c.
  3. If setup runs as root, it uses neither.
If the distribution has no apt-get, this download fails. setup then stops before it downloads ffmpeg and KaTeX.

If a download is missing

  • KaTeX download failed. setup warns and continues. decktalk init then warns that KaTeX is not cached, and the new project’s pages load KaTeX from a CDN.
  • KaTeX is not cached. doctor prints warning in the katex row and exits 0, because pages load KaTeX from a CDN. With --strict, it exits 1.
  • setup never ran. static-ffmpeg downloads ffmpeg the first time DeckTalk needs it.
  • static-ffmpeg cannot give ffmpeg. DeckTalk uses the ffmpeg on your PATH.
DECKTALK_FFMPEG and DECKTALK_FFPROBE override every ffmpeg source above.

Time

Recording runs in real time, one section after another. A first silent build of the scaffold took about 276 seconds on a MacBook Pro with Apple M5 Pro and 64 GB memory. The video it made is 257.72 seconds long. A slower machine takes longer. Rebuild one section shows how to record only the sections that changed.

The ffmpeg license

The ffmpeg builds that static-ffmpeg downloads are GPL builds. DeckTalk runs ffmpeg as a separate process and does not link against it. THIRD_PARTY_NOTICES.md lists the license of each build. To use an ffmpeg build of your own, set DECKTALK_FFMPEG and DECKTALK_FFPROBE to its two executables.

Next