# charmbracelet/vhs

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/charmbracelet-vhs).**

18,682 stars · 371 forks · Go · mit

## Links

- GitHub: https://github.com/charmbracelet/vhs
- awesome-repositories: https://awesome-repositories.com/repository/charmbracelet-vhs.md

## Topics

`ascii` `cli` `command-line` `gif` `recording` `terminal` `vhs` `video`

## Description

This project is a terminal automation and recording tool that uses a custom declarative scripting language to execute command-line sequences. It functions as a framework for both generating animated media files and performing automated terminal output validation. By managing isolated pseudo-terminal sessions, it captures and renders terminal interactions into high-quality GIFs, videos, or static images.

The tool distinguishes itself through its ability to treat terminal sessions as testable, repeatable artifacts. It supports golden-file testing, allowing users to verify command-line behavior against predefined snapshots within automated pipelines. The system also provides extensive visual control, including configurable window decorations, color themes, and font settings, ensuring that recorded sessions maintain a consistent and stylized appearance.

Beyond recording and rendering, the project includes capabilities for process-level privilege sandboxing and remote recording services. It supports complex workflow automation by simulating keyboard input and managing shell environments, while providing error reporting to assist in script development. The software is designed for consistent execution across environments through containerized dependency bundling.

## Tags

### Development Tools & Productivity

- [Terminal Session Recorders](https://awesome-repositories.com/f/development-tools-productivity/terminal-shell-cli/terminal-cli-enhancements/shell-terminal-utilities/general-enhancements-tooling/terminal-utilities/appearance-sessions/terminal-session-recorders.md) — Captures interactive terminal activity into structured formats for playback and rendering. ([source](https://github.com/charmbracelet/vhs#readme))
- [Terminal Automation](https://awesome-repositories.com/f/development-tools-productivity/terminal-automation.md) — Automates complex terminal workflows and keystroke sequences to generate repeatable demonstrations.
- [Interaction Scripting](https://awesome-repositories.com/f/development-tools-productivity/terminal-automation/interaction-scripting.md) — Uses a declarative scripting language to define sequences of terminal commands and timing. ([source](https://github.com/charmbracelet/vhs/blob/main/README.md))
- [Output Validation](https://awesome-repositories.com/f/development-tools-productivity/terminal-output-monitors/output-validation.md) — Validates command-line behavior by comparing terminal output against predefined golden files. ([source](https://github.com/charmbracelet/vhs#readme))
- [Command Line Frameworks](https://awesome-repositories.com/f/development-tools-productivity/command-line-frameworks.md) — Provides a framework for verifying terminal output against golden files in automated testing environments.
- [Recording Services](https://awesome-repositories.com/f/development-tools-productivity/terminal-services/recording-services.md) — Hosts a network server that accepts terminal scripts and returns rendered media files. ([source](https://github.com/charmbracelet/vhs/blob/main/README.md))
- [Command Line Utilities](https://awesome-repositories.com/f/development-tools-productivity/terminal-shell-cli/terminal-cli-enhancements/shell-terminal-utilities/general-enhancements-tooling/terminal-productivity/command-line-utilities.md) — Automates the validation of command-line output against expected results within continuous integration pipelines.
- [Terminal Customization](https://awesome-repositories.com/f/development-tools-productivity/terminal-customization.md) — Configures visual properties like fonts, themes, and window styles for terminal recordings. ([source](https://github.com/charmbracelet/vhs/blob/main/examples/neofetch/neofetch.tape))
- [Keyboard Input Automation](https://awesome-repositories.com/f/development-tools-productivity/input-pointer-automation/keyboard-automation/keyboard-input-automation.md) — Simulates user keystrokes and text entry to automate terminal interactions. ([source](https://github.com/charmbracelet/vhs/blob/main/keys.go))
- [Terminal Session Management](https://awesome-repositories.com/f/development-tools-productivity/terminal-automation/terminal-session-management.md) — Manages isolated shell environments for recording while suppressing local configuration. ([source](https://github.com/charmbracelet/vhs/blob/main/shell.go))
- [Terminal Color Schemes](https://awesome-repositories.com/f/development-tools-productivity/terminal-color-schemes.md) — Applies custom color palettes and visual themes to the appearance of recorded terminal sessions. ([source](https://github.com/charmbracelet/vhs/blob/main/themes_test.go))

### Testing & Quality Assurance

- [Snapshot Testing](https://awesome-repositories.com/f/testing-quality-assurance/general-testing-utilities/test-utilities-assertions/assertion-extensions-modes/snapshot-testing.md) — Verifies command-line behavior by comparing terminal output against predefined golden file snapshots.

### Programming Languages & Runtimes

- [Domain Specific Languages](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/domain-specific-languages.md) — Provides a declarative scripting language for defining terminal interaction sequences, timing, and visual styling.
- [Scripting Languages](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/scripting-languages.md) — Uses a domain-specific scripting language to define keystrokes, timing, and visual styling for terminal recordings.

### Operating Systems & Systems Programming

- [Pseudo-Terminal Interfaces](https://awesome-repositories.com/f/operating-systems-systems-programming/terminal-command-line-environments/terminal-infrastructure/pseudo-terminal-interfaces.md) — Manages isolated terminal processes via pseudo-terminal interfaces to capture output and simulate user input.
- [Session Media Renderers](https://awesome-repositories.com/f/operating-systems-systems-programming/terminal-command-line-environments/terminal-management/terminal-session-managers/session-media-renderers.md) — Converts terminal interactions into animated GIFs or videos for visual storytelling.

### Security & Cryptography

- [Process Sandboxing](https://awesome-repositories.com/f/security-cryptography/process-sandboxing.md) — Enforces security by dropping user permissions during the execution of scripted terminal commands.
- [Privilege Management](https://awesome-repositories.com/f/security-cryptography/privilege-management.md) — Manages process-level permissions to ensure secure execution of terminal commands. ([source](https://github.com/charmbracelet/vhs/blob/main/serve_windows.go))

### Web Development

- [Terminal Rendering Engines](https://awesome-repositories.com/f/web-development/terminal-rendering-engines.md) — Renders captured terminal frames into animated media files with configurable framerate and playback speed. ([source](https://github.com/charmbracelet/vhs/blob/main/ffmpeg.go))

### DevOps & Infrastructure

- [Media Encoding Pipelines](https://awesome-repositories.com/f/devops-infrastructure/media-encoding-pipelines.md) — Implements automated pipelines that pipe terminal output into media encoders for video and GIF generation.
