github.com/charmbracelet/vhs
v0.11.0
#165 most downloaded on Go modules
charmbracelet/vhs
What this package is like to depend on
Last release 11 days ago
12 Aug 2026
Ships fairly regularly
a new release about every 4 weeks
Most releases are documented
notes for 10 of 15 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
121 releases · first in 2022
27 releases in the last 12 months
see the full history below
Release timeline
121 releases · Jul 2022 to Aug 2026Releases
latest 60 of 121-
v0.11.1-0.20260812210225-c073383b5de012 Aug 2026 pre-releaseNothing published for this version
-
v0.11.1-0.20260812204152-3546c13f022f12 Aug 2026 pre-releaseNothing published for this version
-
v0.11.1-0.20260811130425-2311ac5f36df11 Aug 2026 pre-releaseNothing published for this version
-
v0.11.1-0.20260724093037-0a2c15eab70224 Jul 2026 pre-releaseNothing published for this version
-
v0.11.1-0.20260627171217-f48d79b4822927 Jun 2026 pre-releaseNothing published for this version
-
v0.11.1-0.20260422141448-e9c41d37c54322 Apr 2026 pre-releaseNothing published for this version
-
v0.11.1-0.20260406090904-6ec73298e7d306 Apr 2026 pre-releaseNothing published for this version
-
v0.11.1-0.20260322101416-6f0c046e6bca22 Mar 2026 pre-releaseNothing published for this version
-
v0.11.010 Mar 2026Release notes
Open source →Scroll? More keys?
This release includes two nice features that include scrolling the viewport and supporting
Ctrl+<arrow>keys. You can now use theScrollUpandScrollDowncommands to scroll the viewport. VHS will also now recognizeCtrl+Left/Up/Right/Downkeys.Thanks to @joshka-oai and @sectore for their gracious contributions and support 🙂
Changelog
New!
- bae3eb0: feat: add viewport scroll commands to tapes (#707) (@joshka-oai)
- 9e27976: feat: support
ctrl+ arrow keys (#673) (@sectore)
Fixed
- 55f824a: fix(docker): remove ubuntu font which is no longer available in alpine (@aymanbagabas)
- b8a1d86: fix(docker): update env variables to use '=' (@aymanbagabas)
- 9c80359: fix: lint issues (@aymanbagabas)
Other stuff
- 9efc235: Fix lexer regex escaping (#678) (@raphamorim)
- 0a14d2c: ci: sync dependabot config (#660) (@charmcli)
- 0bb2251: ci: sync dependabot config (#668) (@charmcli)
- a94d725: ci: sync golangci-lint config (@caarlos0)
- be49219: ci: sync golangci-lint config (#650) (@github-actions[bot])
Verifying the artifactsFirst, download the
checksums.txtfile and thechecksums.txt.sigstore.jsonfile files, for example, withwget:wget 'https://github.com/charmbracelet/vhs/releases/download/v0.11.0/checksums.txt' wget 'https://github.com/charmbracelet/vhs/releases/download/v0.11.0/checksums.txt.sigstore.json'
Then, verify it using
cosign:cosign verify-blob \ --certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \ --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \ --bundle 'checksums.txt.sigstore.json' \ ./checksums.txt
If the output is
Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release usingsha256sum:sha256sum --ignore-missing -c checksums.txt
Done! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on X, Discord, Slack, The Fediverse, Bluesky.
-
v0.10.1-0.20260310004040-c6af91a25fed10 Mar 2026 pre-releaseNothing published for this version
-
v0.10.1-0.20260310003502-9e279769476910 Mar 2026 pre-releaseNothing published for this version
-
v0.10.1-0.20260309232101-bae3eb0b10c109 Mar 2026 pre-releaseNothing published for this version
-
v0.10.1-0.20260309203715-9c80359a6ddf09 Mar 2026 pre-releaseNothing published for this version
-
v0.10.1-0.20260309203203-55f824abd4a709 Mar 2026 pre-releaseNothing published for this version
-
v0.10.1-0.20260309195122-a94d7259419509 Mar 2026 pre-releaseNothing published for this version
-
v0.10.1-0.20260309194603-d95e606b690309 Mar 2026 pre-releaseNothing published for this version
-
v0.10.1-0.20260309194359-9fcf0fa5817309 Mar 2026 pre-releaseNothing published for this version
-
v0.10.1-0.20260223105513-c6145bdbbbd323 Feb 2026 pre-releaseNothing published for this version
-
v0.10.1-0.20260216110041-5262b81b590d16 Feb 2026 pre-releaseNothing published for this version
-
v0.10.1-0.20260119113330-04e743a9fac319 Jan 2026 pre-releaseNothing published for this version
-
v0.10.1-0.20251215100638-cdd370832a9015 Dec 2025 pre-releaseNothing published for this version
-
v0.10.1-0.20251118154400-9efc235e9f8618 Nov 2025 pre-releaseNothing published for this version
-
v0.10.1-0.20251117102928-c43235bcb06f17 Nov 2025 pre-releaseNothing published for this version
-
v0.10.1-0.20251013092319-4fcfc84246e013 Oct 2025 pre-releaseNothing published for this version
-
v0.10.1-0.20251005154350-49a86157970605 Oct 2025 pre-releaseNothing published for this version
-
v0.10.1-0.20251005153618-0bb22516def605 Oct 2025 pre-releaseNothing published for this version
-
v0.10.1-0.20250908092941-cdd492411c1908 Sep 2025 pre-releaseNothing published for this version
-
v0.10.017 Jun 2025Release notes
Open source →Changelog
New Features
- d9fd05f: feat: support additional alt/ctrl/shift special characters (#582) (@raphamorim)
Bug fixes
- 5fd3e35: fix(ci): use meta lint workflow (@aymanbagabas)
- b461e7b: fix(record): propagate env of vhs process to record terminal (#572) (@tr3mor)
- ed7c8a9: fix(record): set PAGEX to PAGE_X for proper capitalization (#570) (@bashbunni)
- ab03c35: fix: lint (@caarlos0)
- 710bb76: fix: lint (#637) (@caarlos0)
- ce7286f: fix: lint issues (@caarlos0)
- fd38bed: fix: source nested tapes (#567) (@rsteube)
- 25d888f: fix: source not respecting arguments of sourced commands (#604) (@caarlos0)
- 2c7733e: fix: sync golangci-lint config (#573) (@github-actions[bot])
Dependency updates
Documentation updates
- e9647e8: docs: add "Enter" to cleanup example (#598) (@mdjohns)
- 9c6a385: docs: add contributing guidelines (#636) (@bashbunni)
Other work
- 90220f7: ci: add lint-sync job (@caarlos0)
- b41d47f: ci: fix build (#602) (@caarlos0)
- 1d29712: ci: remove lint-soft.yml (@caarlos0)
- 517bcda: ci: set goreleaser version (@caarlos0)
- 02e73ee: ci: sync dependabot config (#586) (@charmcli)
- 9583c54: ci: sync dependabot config (#587) (@charmcli)
- 380e0de: ci: sync dependabot config (#618) (@charmcli)
- 4fb70ff: ci: sync golangci-lint config (@caarlos0)
- ce18cfa: ci: sync golangci-lint config (#597) (@github-actions[bot])
- 987c1ab: ci: sync golangci-lint config (#599) (@github-actions[bot])
- 7929ef2: ci: sync golangci-lint config (#607) (@github-actions[bot])
- 24b40a4: ci: sync golangci-lint config (#629) (@github-actions[bot])
- 9901ed9: refactor: cleanup repeated code (#628) (@alaingilbert)
Verifying the artifactsFirst, download the
checksums.txtfile, for example, withwget:wget 'https://github.com/charmbracelet/vhs/releases/download/v0.10.0/checksums.txt'Then, verify it using
cosign:cosign verify-blob \ --certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \ --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \ --cert 'https://github.com/charmbracelet/vhs/releases/download/v0.10.0/checksums.txt.pem' \ --signature 'https://github.com/charmbracelet/vhs/releases/download/v0.10.0/checksums.txt.sig' \ ./checksums.txt
If the output is
Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release usingsha256sum:sha256sum --ignore-missing -c checksums.txt
Done! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
-
v0.9.1-0.20250512101607-3a7436a775e312 May 2025 pre-releaseNothing published for this version
-
v0.9.1-0.20250318172525-2e6003e13cba18 Mar 2025 pre-releaseNothing published for this version
-
v0.9.1-0.20250210201859-f3457bea5c3710 Feb 2025 pre-releaseNothing published for this version
-
v0.9.015 Jan 2025Release notes
Open source →VHS v0.9.0
Hurry up and
WaitThis release introduces the
Waitkeyword:Output wait.gif Require gum Type "./slow.sh" Enter Wait+Screen@10s /Hello/ Type "echo Lets Go!" Enter Sleep 1This allows you to remove all the random
Sleeps in your tape files!
You can now wait for specific conditions instead. This means more control while simplifying tape file creation.More shells
There's also support for
xonshandosh, so you can now use them in
your tapes as well:Output examples/settings/set-shell-xonsh.gif Set FontSize 38 Set Height 225 Set Shell xonsh Sleep 1s Type "I am using xonsh." Sleep 2sChangelog
New Features
- 9624cda: feat: add Wait to wait for expected output (#257) (@mastercactapus)
- 5ddc862: feat: added osh (#564) (@rsteube)
- 16ec55b: feat: added xonsh (#563) (@rsteube)
- 92db33b: feat: don't create 'out.gif' by default (#518) (@nolta)
- b8b780e: feat: nushell: adopt colored
>prompt (#565) (@rsteube) - 2ff7bbd: feat: warn when using
SETcommands not being the top decl (#508) (@Delta456)
Bug fixes
- 281a280: fix: gifs (@caarlos0)
- 607c258: fix: remove gifs (@caarlos0)
- ecc1150: fix: typo in WindowBar parser - fixes #543 (#544) (@popey)
Documentation updates
Other work
Verifying the artifactsFirst, download the
checksums.txtfile, for example, withwget:wget 'https://github.com/charmbracelet/vhs/releases/download/v0.9.0/checksums.txt'Then, verify it using
cosign:cosign verify-blob \ --certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \ --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \ --cert 'https://github.com/charmbracelet/vhs/releases/download/v0.9.0/checksums.txt.pem' \ --signature 'https://github.com/charmbracelet/vhs/releases/download/v0.9.0/checksums.txt.sig' \ ./checksums.txt
If the output is
Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release usingsha256sum:sha256sum --ignore-missing -c checksums.txt
Done! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
-
v0.8.1-0.20250115160920-5ddc8628a74e15 Jan 2025 pre-releaseNothing published for this version
-
v0.8.1-0.20241220210428-ad1ca7c71bbd20 Dec 2024 pre-releaseNothing published for this version
-
v0.8.1-0.20241216202814-28be2de8db8116 Dec 2024 pre-releaseNothing published for this version
-
v0.8.1-0.20241211210450-7f98ee7f7cf611 Dec 2024 pre-releaseNothing published for this version
-
v0.8.1-0.20241204204959-394d03e7976f04 Dec 2024 pre-releaseNothing published for this version
-
v0.8.1-0.20241108210349-2b759669566908 Nov 2024 pre-releaseNothing published for this version
-
v0.8.1-0.20241028115909-df8caf72cdc528 Oct 2024 pre-releaseNothing published for this version
-
v0.8.1-0.20241009170850-9624cdad81eb09 Oct 2024 pre-releaseNothing published for this version
-
v0.8.006 Sep 2024Release notes
Open source →Environmental friendliness
Ever want to alter the environment in your
.tapefiles? Now you can with theENVdirective:Env HELLO "WORLD" Type "echo $HELLO" Enter Sleep 1s
Bonus: change the prompt
Also thanks to @Delta456, you can now change the prompt by setting
PROMPTin the environment:Env PROMPT "〉"For details see: #469.
Changelog
New!
- 1fc8002: cmd: add support for
ENVcommand (#469) (@Delta456) - d56384f: set VHS_RECORD="true"while running (#478)(@rockorager)
- f6a3e29: sign & notarize macOS binaries (#494) (@caarlos0)
Fixed
- 859d89d: fix duplicate if statement (@maaslalani)
- ed69431: hide vhs publish info when exiting with tape errors (#466) (@Delta456)
- dd6b6b8: fix ShiftLeft when using Shift+Tab (#475) (@akarpovskii)
- 5a207ef: data rase + better error reporting (#480) (@mastercactapus)
Docs
- bea7f77: clean up installation instructions (@maaslalani)
- 586e3d6: correct typo in ffmepg.go (#479) (@Utagai)
Other stuff
- 597d932: disable dependabot grouping (@caarlos0)
- 41ce6be: feat: update deps, fix lint issues (#526) (@caarlos0)
Verifying the artifactsFirst, download the
checksums.txtfile, for example, withwget:wget 'https://github.com/charmbracelet/vhs/releases/download/v0.8.0/checksums.txt'Then, verify it using
cosign:cosign verify-blob \ --certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \ --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \ --cert 'https://github.com/charmbracelet/vhs/releases/download/v0.8.0/checksums.txt.pem' \ --signature 'https://github.com/charmbracelet/vhs/releases/download/v0.8.0/checksums.txt.sig' \ ./checksums.txt
If the output is
Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release usingsha256sum:sha256sum --ignore-missing -c checksums.txt
Done! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
- 1fc8002: cmd: add support for
-
v0.7.3-0.20240531191056-5a207ef92d8131 May 2024 pre-releaseNothing published for this version
-
v0.7.3-0.20240525213045-bea7f77ab4cf25 May 2024 pre-releaseNothing published for this version
-
v0.7.3-0.20240514032515-586e3d6dbbdd14 May 2024 pre-releaseNothing published for this version
-
v0.7.3-0.20240424200732-859d89d3d5a824 Apr 2024 pre-releaseNothing published for this version
-
v0.7.3-0.20240417185610-ed69431b5a4617 Apr 2024 pre-releaseNothing published for this version
-
v0.7.214 Mar 2024Release notes
Open source →Changelog
Bug fixes
Other work
- 9950678: Fix app crash when there is repeated
SLEEPat the end of the "lines" slice (#446) (@alaingilbert) - 2a1d303: Refactor Lexer, Parser, Token into packages (#427) (@maaslalani)
Verifying the artifactsFirst, download the
checksums.txtfile, for example, withwget:wget 'https://github.com/charmbracelet/vhs/releases/download/v0.7.2/checksums.txt'Then, verify it using
cosign:cosign verify-blob \ --certificate-identity 'https://github.com/charmbracelet/meta/.github/workflows/goreleaser.yml@refs/heads/main' \ --certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \ --cert 'https://github.com/charmbracelet/vhs/releases/download/v0.7.2/checksums.txt.pem' \ --signature 'https://github.com/charmbracelet/vhs/releases/download/v0.7.2/checksums.txt.sig' \ ./checksums.txt
If the output is
Verified OK, you can safely use it to verify the checksums of other artifacts you downloaded from the release usingsha256sum:sha256sum --ignore-missing -c checksums.txt
Done! You artifacts are now verified!
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or on Discord.
- 9950678: Fix app crash when there is repeated
-
v0.7.2-0.20240314143852-484e4408bfa514 Mar 2024 pre-releaseNothing published for this version
-
v0.7.2-0.20240306221246-99506788042c06 Mar 2024 pre-releaseNothing published for this version
-
v0.7.2-0.20240305205735-5d1acd07a21205 Mar 2024 pre-releaseNothing published for this version
-
v0.7.2-0.20240126003622-ed89b8b8108126 Jan 2024 pre-releaseNothing published for this version
-
v0.7.2-0.20240109002849-af7cd24c41c009 Jan 2024 pre-releaseNothing published for this version
-
v0.7.2-0.20240105182610-051b601622c205 Jan 2024 pre-releaseNothing published for this version
-
v0.7.2-0.20231221201054-7dd24a2f8f3c21 Dec 2023 pre-releaseNothing published for this version
-
v0.7.112 Dec 2023Release notes
Open source →Freeze Frame ❄️ 📸
With VHS
v0.7.0, you can capture the any moment during tape execution. Just add inScreenshot <filename>.pngto your tapes:Type ls Enter # Capture the output of 'ls' Screenshot files.png # Now, continue as you normally would Type 'cd ..' Enter
Your tape outputs a GIF, and outputs a file named
files.png.Copy-Paste Functionality!
VHS can now talk to your system clipboard. Please keep this in mind when executing tapes from unknown sources.
Warning
You should never
curlpipe into VHS, it's similar to executing a bash script on your computer!Copy "https://github.com/charmbracelet/huh" Type 'curl ' Paste Enter
New Modifiers + Keys Alert!
VHS
v0.7.0has some new additions: introducing the top levelShift+modifier and theInsert+Deletekeys!# Shift things up a bit! Shift+A Shift+Tab Shift+Enter # Insert and delete to your hearts desire: Insert Delete
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.
-
v0.7.1-0.20231212165712-182a42a1371b12 Dec 2023 pre-releaseNothing published for this version
-
v0.7.011 Dec 2023Release notes
Open source →Freeze Frame ❄️ 📸
With VHS
v0.7.0, you can capture the any moment during tape execution. Just add inScreenshot <filename>.pngto your tapes:Type ls Enter # Capture the output of 'ls' Screenshot files.png # Now, continue as you normally would Type 'cd ..' Enter
Your tape outputs a GIF, and outputs a file named
files.png.Copy-Paste Functionality!
VHS can now talk to your system clipboard. Please keep this in mind when executing tapes from unknown sources.
Warning
You should never
curlpipe into VHS, it's similar to executing a bash script on your computer!Copy "https://github.com/charmbracelet/huh" Type 'curl ' Paste Enter
New Modifiers + Keys Alert!
VHS
v0.7.0has some new additions: introducing the top levelShift+modifier and theInsert+Deletekeys!# Shift things up a bit! Shift+A Shift+Tab Shift+Enter # Insert and delete to your hearts desire: Insert Delete
Thoughts? Questions? We love hearing from you. Feel free to reach out on Twitter, The Fediverse, or Discord.
-
v0.6.1-0.20231211223515-55b5fcd0791911 Dec 2023 pre-releaseNothing published for this version
-
v0.6.1-0.20231206200916-18cb5e26995b06 Dec 2023 pre-releaseNothing published for this version
-
v0.6.1-0.20231129164615-d98c77a8793a29 Nov 2023 pre-releaseNothing published for this version