This directory contains VHS tape scripts for generating animated GIF screenshots used in the Kelora documentation.
VHS is a tool for generating terminal GIFs as code. It reads .tape files containing instructions and outputs animated GIFs.
Install VHS:
# macOS
brew install vhs
# Other platforms: see https://github.com/charmbracelet/vhs#installationjust screenshotsThis command:
- Builds Kelora in release mode
- Runs all
.tapefiles in this directory - Outputs GIFs to
docs/screenshots/
vhs vhs/hero.tape
vhs vhs/mark-gaps.tape
vhs vhs/levelmap.tape
vhs vhs/error-triage.tape
vhs vhs/colored-output.tape| Tape File | Output | Used In | Shows |
|---|---|---|---|
hero.tape |
hero.gif |
Homepage (hero) | Multiline stacktraces with --before-context/--after-context colored highlighting |
mark-gaps.tape |
mark-gaps.gif |
CLI Reference | Time gap markers with --mark-gaps |
levelmap.tape |
levelmap.gif |
Formats Reference | Compact levelmap output format |
error-triage.tape |
error-triage.gif |
CLI Reference | Error filtering with context highlighting |
colored-output.tape |
colored-output.gif |
Basics Tutorial | Default formatter with colored key-value pairs |
- Create a new
.tapefile in this directory - Use this template:
# Description of what this screenshot shows
Output docs/screenshots/your-screenshot.gif
# Settings
Set FontSize 14
Set Width 1200
Set Height 600
Set Padding 20
Set Theme "Dracula"
# Type your command
Type "./target/release/kelora [your command here]"
Sleep 500ms
Enter
# Wait for output
Sleep 3s
# Pause for reading
Sleep 2s
- Test it:
vhs vhs/your-screenshot.tape - Integrate into docs with:

- Escaping quotes: Break complex commands into multiple
Typecommands to avoid escaping issues - Timing: Adjust
Sleepdurations to ensure commands complete and viewers can read output - Terminal size: Keep width around 1200px for readability in docs
- Theme: We use "Dracula" for intense, vibrant colors
- File size: GIFs can be large. Keep recordings under 10 seconds when possible
VHS parse errors with quotes:
# Instead of:
Type "kelora --filter 'e.contains(\"error\")'"
# Use:
Type "kelora --filter 'e.contains("
Type '"'
Type "error"
Type '"'
Type ")'"
Command not found:
Ensure you've run cargo build --release first. The tape files use ./target/release/kelora.
Output too fast:
Increase the Sleep duration after Enter.