Troubleshooting
Find what you see, then tell your agent the line under Say. Each answer says what showtime does today and the
command your agent runs. You can run the commands yourself in a terminal too: showtime is
~/.showtime/bin/showtime after setup (Windows: showtime.cmd).
Start with showtime doctor when you are not sure. It runs ffmpeg, Python, Node.js and a browser for real and
prints PASS, WARN, FAIL or SKIP per check, each problem with a fix: line. showtime doctor --quick skips the
browser launch and the test encode.
| What you see | Jump to |
|---|---|
| "Node.js not found", or "too old" | Node.js |
| "setup has not been run yet", "setup has not completed yet", or the download was blocked | Setup |
| "no Chrome, Edge or Chromium found", or the browser will not start | Browser |
| The agent's command stops before the render ends | Long renders |
| Rendering is slow, or there is no GPU | Slow renders |
| The video differs from the preview, or flickers | Preview and flicker |
| A black or frozen stretch | Black or frozen |
| A name is said wrong (a readback WARN) | Pronunciation |
| "cut about N words" | Narration too long |
| Music drowns the voice, or a loudness FAIL | Sound |
| A command ends with exit code 3 | Exit code 3 |
| "It still looks wrong" after a fix | Wrong file |
Node.js not found, or too old#
showtime needs Node.js 20 or newer; 24 or 22 LTS is recommended. doctor fails node with "Node.js not found" or
"Node.js 18.x ... is too old". A Node.js you just installed is not seen until the agent restarts.
- Do: install Node.js from nodejs.org (on Linux, fnm or NodeSource: distribution packages are often older than 20). Restart your coding agent, or open a new terminal.
- Check:
node --version, thenshowtime doctor --quick. - Say: "Node.js is installed now; run showtime doctor again."
Setup never ran, or the sandbox blocked it#
Before setup, every showtime command that needs it, showtime job init included, stops with "job needs the
showtime environment, and setup has not been run yet", and prints the command to run. A setup that did not finish
shows in doctor as "setup has not completed yet". Your agent should give
the download size and time (showtime setup --estimate), wait for your yes and run showtime setup. Some agent
sandboxes block that download or the write to ~/.showtime: doctor then fails home writable or network and
names the host setting to change.
-
Do: run setup once in your own terminal, then go back to your agent:
git clone --depth 1 https://github.com/FavioVazquez/showtime ~/showtime ~/showtime/skills/showtime/bin/showtime setup # Windows: ~\showtime\skills\showtime\bin\showtime.cmd setup ~/showtime/skills/showtime/bin/showtime doctor # every line PASS (SKIP is fine) -
Or: ask your agent to install into the project folder, which the sandbox can write:
SHOWTIME_HOME=.showtime showtime setup(PowerShell:$env:SHOWTIME_HOME=".showtime"; showtime setup). showtime then finds./.showtimeby itself in that project. -
Interrupted? Run
showtime setupagain: it skips what is there and resumes downloads.showtime setup --verifyre-checks the files. -
Say: "Setup is done; carry on with the video."
More: onboarding § Install and agents.md.
No browser, or the browser will not start#
Every frame is drawn by a headless browser. doctor fails browser when it finds no Chrome, Edge or Chromium, and
browser launch when one is found but will not start (common on a bare Linux server, which lacks the libraries).
- No browser:
showtime setupinstalls Chrome's headless shell (about 100 to 120 MB to download), or install Google Chrome. - It will not start, on Linux:
npx playwright install-deps chromiuminstalls the missing system libraries. - WebGL unavailable (a WARN): 3D and shader scenes will fail. Try
showtime doctor --gpu off, which tests drawing on the CPU; when that passes, render with--gpu offtoo. - Say: "Run showtime doctor and fix the browser line."
The agent's command times out on a long render#
Many agents stop a command that runs longer than their time limit. A render, a setup or a long transcription can take longer than that.
- Do: run it in the background and watch it:
showtime render <project> --job <job> --backgroundprints a run id at once, andshowtime status <run-id> --wait 240reports its progress for up to 240 s at a time. Any command takes--background. - Say: "Run the render in the background and check on it."
Your agent says how long anything over 30 s will take before it starts it.
Rendering is slow, or there is no GPU#
No GPU is needed. Without one the browser draws on the CPU, WebGL included, and showtime picks how many browsers
to run from your CPU threads: 3 with a GPU; without one, CPU threads - 2 (at most 8) from 8 threads up, and 3
below. render.json beside each render says how many and why. WebGL scenes are the slow part on a small machine:
on a 6-core Intel Mac with its GPU turned off, a shader-heavy 1080p frame took about 0.5 s.
- Draft first:
showtime render <project> --preview(at most 720p, fast encode), or--preview --fps 12for the fastest look at timing. - Fix a part, not the whole:
showtime render <project> --job <job> --from 12 --to 18renders those seconds and splices them into the last full render. - Know before:
showtime check <project>prints an estimate of the render time. - Say: "I'm on a 4-core laptop with no GPU: draft first, and keep it light."
More: slow machine guide and render § Speed.
The video differs from the preview, or flickers#
showtime draws each frame as a function of time, so the preview and the render should match. When they do not,
something on the page runs on the clock or at random: a timer, a CSS transition, Math.random(), a font or a
video that was not awaited.
- Do:
showtime check <project>names it (timers,unseeded_random,css_transitions,font_not_embedded).showtime check <project> --determinismloads the page twice and compares 12 frames. - Say: "At 0:08 the title flickers; it looks fine in the preview."
More: debugging-renders.
A black or frozen stretch#
showtime qa warns about black from 0.25 s (FAIL from 1 s) and a picture that does not change from 2.5 s (FAIL
from 6 s, or half the video), each with its time.
- Do:
showtime check <project> --find-first black(orfrozen) finds the first bad frame before you render again;showtime snap <project> --at 8.2shows that moment. - Say: "The screen goes black at 0:12 for about a second."
A name is said wrong (a readback WARN)#
After making the voice-over, voice script listens to it with the local recognizer and warns when a name, an
acronym or a number is heard differently from the script. qa checks it again. The recognizer can be wrong too, so a
WARN means "listen to this line": the clip is voice/lines/NN-<scene>.wav.
- It sounds wrong:
showtime voice ipa "Word"shows what the voice is told. Your agent adds a pronunciation tolexicon.jsonor writes[SQL](sequel)in the script, and runsvoice scriptagain. - It sounds right: clear the word in the project's
showtime.json:"readback": {"ok": ["JSON"]}. - Say: "It says Kubernetes wrong; it should sound like koo-ber-NET-eez."
More: voice § Pronunciation fixes.
"cut about N words": the narration is too long#
With --fit 15, voice script makes the narration last 15 s: first it speeds every line up within 0.85-1.15x,
then it shortens the pauses. When that is not enough it prints still Xs over ... cut about N words. It never drops
words for you.
- Do: estimate before any speech is made:
showtime voice script narration.md --fit 15 --estimateprints the cut and synthesizes nothing. Cut the words, estimate again, then run it without--estimate. - Say: "Keep 20 seconds; cut the script, not the pace."
Music drowns the voice, or a loudness FAIL#
qa measures the loudness against the target (-14 LUFS unless the platform needs another): WARN more than 1 LU off,
FAIL more than 3 LU off, and FAIL for a true peak above 0 dBTP. It also warns (voice_masked) when a voice line
sits less than 8 dB above the music under it.
- Do: the music's level and its duck under the voice are in
audio/mix.json(gain_db, and"duck": {"under": "voice", "depth_db": 12}). Your agent lowers the music or deepens the duck, mixes again and re-renders.showtime audio meter <file>measures any file. - Say: "The music is too loud under the voice from 0:20."
More: sound-design and qa.
A command ends with exit code 3#
Exit code 3 means showtime stopped on purpose and needs your decision. There are two cases.
- A website blocked the capture. Some sites answer automated browsers with a challenge ("Verify you are human").
showtime site capturewritesBLOCKED.mdandblocked.pngand stops. showtime never works around a block. Give your agent screenshots or a screen recording, another URL, or your local build (http://localhost:...). - A feature needs an optional part. The command prints the exact
showtime setup --with <name>line and its size. Say yes and your agent installs it and carries on. Offline, a first-use download fails the same way. - Say: "Use these screenshots instead," or "Yes, install it."
More: capture § Bot walls.
"It still looks wrong" after a fix#
Renders never overwrite: a fix makes final-2.mp4, a poster bake final.poster.mp4. A video player that still has
the old file open shows the old video.
- Do:
showtime qa <job>prints the file it checked (using ... (latest final)); open that one.showtime status <job>says where the job stands. - Say: "Which file is the latest?"
Still stuck#
showtime report <job> --problem "what you expected and what happened" writes a redacted bug-report.md into the
job folder. Nothing is uploaded: read it, then attach it to an
issue if you like. Your agent's triage order is in
diagnosing. Short answers to other questions are in the
FAQ.