VHS — Record Terminal Sessions as GIFs and Videos
VHS by Charmbracelet lets you write terminal recordings as code. Define commands in a .tape file, and VHS generates beautiful GIFs, MP4s, or WebMs — perfect for documentation, README demos, and project showcases.
Ready-to-run agent install
This asset can be installed after the agent chooses its runtime, checks the plan, and runs the matching command.
npx -y tokrepo@latest install 10b32515-373d-11f1-9bc6-00163e2b0d79 --target codexRun after dry-run confirms the install plan.
What it is
VHS is a tool by Charmbracelet that turns terminal recordings into code. You write a .tape file describing the commands to execute, and VHS produces high-quality GIFs, MP4s, or WebMs. No screen recording software, no manual trimming, and fully reproducible output.
Developer advocates, open-source maintainers, and documentation writers use VHS to create polished terminal demos for README files, blog posts, and project showcases without the inconsistency of manual screen captures.
How it saves time or tokens
VHS replaces the manual workflow of recording a terminal session, trimming the output, and converting formats. A .tape file is version-controlled and reproducible, so updating a demo for a new version means editing a text file and re-running VHS. No more re-recording from scratch when commands change.
How to use
- Install VHS using Homebrew, Go install, or download the binary from the releases page.
- Write a .tape file with commands, timing, and display settings.
- Run
vhs your-file.tapeto generate the output GIF, MP4, or WebM.
Example
# demo.tape - VHS recording script
Output demo.gif
Set FontSize 14
Set Width 1200
Set Height 600
Type "echo 'Hello from VHS'"
Enter
Sleep 1s
Type "ls -la"
Enter
Sleep 2s
Type "cat README.md | head -20"
Enter
Sleep 3s
# Generate the GIF
vhs demo.tape
# Output: demo.gif (ready for README or docs)
Related on TokRepo
- AI Tools for Documentation — Tools for creating and maintaining technical documentation
- AI Tools for Content — Content creation and media tools
Common pitfalls
- Setting Sleep durations too short, making the output feel rushed and hard to follow.
- Using system-specific commands in .tape files that break on other operating systems or CI environments.
- Generating very large GIFs by recording long sessions. Keep demos under 30 seconds for README use.
Frequently Asked Questions
VHS supports GIF, MP4, and WebM output formats. You specify the format using the Output directive in the .tape file. GIF is the most common for README files, while MP4 and WebM offer better quality for documentation sites.
Yes. VHS runs headlessly and can be executed in CI environments. This lets you auto-generate updated demo GIFs whenever your CLI tool changes, keeping documentation in sync with code.
On macOS, use brew install charmbracelet/tap/vhs. On Linux, download the binary from the GitHub releases page. VHS also requires ffmpeg and a terminal rendering engine, which are bundled in most installation methods.
Yes. VHS can type text, press keys (Tab, Enter, Ctrl+C), and interact with terminal UIs. The .tape format supports key presses, mouse events, and timing controls for recording interactive tools.
Yes. VHS is open source under the MIT license, published by Charmbracelet on GitHub. It is free for personal and commercial use.
Citations (3)
- VHS GitHub— Terminal recordings as code with .tape files
- VHS README— GIF, MP4, and WebM output support
- Charmbracelet— Charmbracelet terminal tools ecosystem
Related on TokRepo
Discussion
Related Assets
asciinema — Record and Share Terminal Sessions
asciinema records terminal sessions as lightweight text-based files that can be replayed in a browser, embedded in docs, or converted to GIFs and videos—without screen capture overhead.
Terminalizer — Record Terminal Sessions to Animated GIF
A Node.js tool that records terminal sessions and renders them as animated GIF images or shareable web recordings for documentation and demos.
herdr — Terminal Multiplexer for Agents
Terminal-first agent multiplexer with persistent sessions, panes, and workspaces. Track agent state (blocked/working/done) without leaving your terminal.
Distrobox — Use Any Linux Distribution Inside Your Terminal
Distrobox lets you run any Linux distribution inside a container directly from your terminal. It tightly integrates with the host system, sharing your home directory, display server, and hardware access so containerized apps feel native.