charmbracelet

charmbracelet/vhs

Go MIT Dev Tools

Your CLI home video recorder 📼

20.3k stars
441 forks
recent
GitHub +71 / week

20.3k

Stars

441

Forks

161

Open issues

30

Contributors

v0.11.0 10 Mar 2026

AI Analysis

VHS is a terminal recording tool that converts CLI sessions into GIFs and videos through a declarative tape file format, enabling developers to create reproducible terminal demos and integration test recordings. It's specialized for CLI tool creators and technical communicators who need to automate terminal session capture; not suitable for general video editing or non-terminal recording needs.

Dev Tools CLI Tool Discovery value: 5/10
Documentation 8/10
Activity 9/10
Community 9/10
Code quality 5/10

Inferred from signals mentioned in the README (tests, CI, type safety) — not a review of the actual code.

Overall score 8/10

AI's overall editorial judgment — not an average of the bars above, can weigh other factors too.

terminal-recording cli-automation gif-generation testing-tool demo-creation
Actively maintained Well documented MIT licensed Popular Beginner friendly Production ready
Deep Analysis · Based on README and public signals
2w ago

VHS lets developers write terminal recordings as code, producing reproducible GIFs and videos from script files

VHS is a CLI tool from Charmbracelet that converts declarative tape script files into terminal GIF/video recordings. It solves the pervasive problem of manually recording, re-recording, and maintaining terminal demos for documentation, READMEs, and CI pipelines. Its primary audience is CLI tool developers and developer-experience engineers who need reproducible, version-controllable terminal recordings. With 20K+ stars and broad package manager support (Homebrew, Arch, Nix, Scoop, Winget, Debian, RPM), it has moved well beyond hobby use into a recognized standard for this workflow.

Origin

Created in July 2022 by Charmbracelet, the company behind popular Go TUI libraries. It emerged as a natural complement to their terminal UI ecosystem, addressing the need to demo those tools effectively and reproducibly.

Growth

Growth was rapid after launch, driven by viral GitHub README adoption — developers discovered VHS when they saw polished terminal GIFs in other projects and wanted to replicate the workflow. Charmbracelet's existing reputation and large ecosystem (gum, glow, etc.) gave VHS an immediate audience. The 81 stars/week pace nearly 4 years post-launch indicates sustained organic discovery rather than a short-lived spike.

In production

VHS is available in major package managers (Homebrew, Arch pacman, Nix, Scoop, Winget, Debian/RPM repos), indicating maintainer investment in distribution. The tool appears extensively used for README GIFs across the open source ecosystem, particularly within the Charmbracelet project family. A publish hosting service (vhs.charm.sh) and SSH server mode suggest real infrastructure investment for real users. Concrete production-scale usage metrics are not publicly documented, but adoption signals are strong across OSS projects.

Code analysis
Architecture

Appears to use a custom DSL parser for .tape files, driving a headless terminal emulator (ttyd) with ffmpeg for video encoding. Likely orchestrates terminal sessions over a virtual PTY. The built-in SSH server mode suggests a well-structured server/client separation. Docker image availability implies dependency management is handled at the container level.

Tests

README includes a CI build badge (GitHub Actions), indicating automated builds are in place. The presence of integration testing as a stated use case suggests test fixtures likely use VHS itself. Specific test coverage metrics are not documented in README.

Maintenance

Last push was May 4, 2026 — approximately 7.5 weeks before the evaluation date. For a mature tool in a stable problem domain, this cadence is consistent with active maintenance. The project is backed by a funded company (Charmbracelet), reducing bus-factor risk. No signs of stagnation.

Honest verdict

ADOPT IF: you maintain CLI tools and need reproducible, version-controlled terminal demos for READMEs, docs, or CI pipelines. AVOID IF: you need to capture authentic, unscripted user interactions — VHS is deterministic by design, not a session recorder. MONITOR IF: your workflow involves very complex terminal state or you depend on ttyd/ffmpeg availability in constrained environments where dependency management is difficult.

Independent dimensions

Mainstream potential

6/10

Technical importance

7/10

Adoption evidence

7/10

Risks
  • Hard runtime dependency on both ttyd and ffmpeg makes installation non-trivial in locked-down or minimal CI environments, though Docker image mitigates this.
  • The tape DSL is proprietary to VHS; scripts are not portable to other tools, creating mild lock-in for teams with large tape file libraries.
  • Charmbracelet is a small company — if it pivots or winds down, maintenance continuity depends on community uptake of an MIT-licensed codebase.
  • Complex terminal applications with state-dependent rendering or timing sensitivity may produce inconsistent GIF outputs, requiring careful Sleep tuning.
  • The publish hosting service (vhs.charm.sh) is a third-party dependency for the sharing feature; its long-term availability is not guaranteed.
Prediction

VHS is likely to become the de facto standard for scriptable terminal recording in the Go/DevTool OSS ecosystem, growing steadily as CLI documentation practices mature, without threatening asciinema's interactive-recording niche.

0 found this helpful

Newsletter

Get analyses like this every Monday

Free weekly digest of the most interesting open-source discoveries.

Languages

Go
98.8%
Dockerfile
0.9%
Makefile
0.2%
Shell
0.1%

Information

Language
Go
License
MIT
Last updated
2w ago
Created
48mo ago
Analyzed with
anthropic/claude-haiku-4-5

Stars over time

Loading…

Contributors over time

Top 100 contributors only — repos with more will plateau at 100.

Loading…

Similar repos

charmbracelet

charmbracelet/huh

Huh is a Go library for building interactive terminal forms and prompts with a...

charmbracelet

charmbracelet/gum

Gum is a shell scripting tool that provides glamorous, interactive UI...

charmbracelet

charmbracelet/log

A minimal, colorful structured logging library for Go that emphasizes...

3.3k Go Dev Tools
charmbracelet

charmbracelet/wish

Wish is a Go library for building custom SSH servers with sensible defaults and...

5.3k Go Dev Tools
charmbracelet

charmbracelet/wishlist

Wishlist is an SSH directory tool that provides a unified entry point for...

1.6k Go Dev Tools
vs. alternatives
asciinema

asciinema records real interactive sessions and produces text-based replays; VHS produces scripted, reproducible GIFs/videos. asciinema output is more authentic but non-deterministic; VHS output is controllable and CI-friendly. Different goals rather than direct competition.

terminalizer

terminalizer is a Node.js tool for recording terminal sessions to GIF. VHS differentiates with code-as-config reproducibility, CI integration, and a purpose-built DSL. terminalizer has seen slower maintenance in recent years.

ttygif / ttyrec

These older Unix tools capture real terminal sessions. They lack VHS's scripting model, making them unsuitable for reproducible automated recordings. VHS is the modern, developer-ergonomics-focused successor in practical usage.

Peek / Kooha (screen recorders)

GUI screen recorders are manual, non-reproducible, and not scriptable. VHS is categorically different — it produces code-driven outputs suitable for version control and CI pipelines.

svg-term-cli

Converts asciinema recordings to animated SVG. Complementary to asciinema's workflow rather than a direct competitor to VHS. VHS offers a more integrated, standalone pipeline without requiring a prior recording step.