This guide explains how to install and use VHS for creating demo videos.
Run the installation script to install VHS and its dependencies:
# macOS
bash scripts/install-demo-dependencies-macos.shThis script will:
- ✅ Install VHS (terminal recorder)
- ✅ Install ttyd (required by VHS)
- ✅ Check/install ffmpeg
- ✅ Fix common libvpx/ffmpeg dependency issues
- ✅ Verify all tools are working
# Activate virtual environment
source .venv/bin/activate
# Run VHS with a tape file
vhs docs/demos/tapes/get_full_metadata.tapeThis will generate:
get_full_metadata_demo.gif- Animated GIF
docs/demos/output/— GIFs/MP4s from tapes underdocs/demos/tapes/are not committed (gitignored). Tracked sources are tapes andsample.mp3.content/articles/<article>/output/— Outputs from article demo pipelines (VHS, ffmpeg, concat intermediates) are not committed. Regenerate locally after cloning; version control holds tapes, scripts, and READMEs for each article.- Per-article demo audio (whatever a given article’s tapes/scripts need) may live under
content/articles/<article>/samples/—.gitignorewhitelists onlysample.mp3,sample.flac, andsample.wavthere (add the files you use). That is not a global “official” sample set; each article owns its folder.docs/demos/sample.mp3stays the shared asset fordocs/demos/tapes/. Copied or generated files (e.g.demo_read_*.mp3) stay local-only at the article root or underoutput/.
If you see an error like:
dyld: Library not loaded: /usr/local/opt/libvpx/lib/libvpx.11.dylib
Fix:
# Reinstall libvpx and ffmpeg
brew reinstall libvpx
brew reinstall ffmpeg
# Or run the installation script which handles this automatically
bash scripts/install-demo-dependencies-macos.shIf you see:
could not open ttyd: navigation failed: net::ERR_CONNECTION_REFUSED
Fix:
# Install ttyd
brew install ttyd
# Or run the installation script
bash scripts/install-demo-dependencies-macos.shIf you see:
vhs: command not found
Fix:
# Install VHS
brew tap charmbracelet/tap
brew install charmbracelet/tap/vhs
# Or run the installation script
bash scripts/install-demo-dependencies-macos.shThe repository includes pre-made tape files in the root directory:
- audiometa_demo.tape - Interactive Python REPL demo
- audiometa_demo_script.tape - Script execution demo
See VHS_DEMO_README.md for detailed instructions on creating custom tape files.
After running the installation script, verify everything works:
# Check VHS version
vhs --version
# Check ttyd is installed
ttyd --version
# Check ffmpeg works
ffmpeg -version
# Test VHS (quick test)
echo "Output test.gif
Type 'echo Hello, World!'" | vhs /dev/stdin- ✅ Install dependencies (done with installation script)
- ✅ Verify installation (run tests above)
- Create demo videos with existing tape files
- Customize tape files for your needs