Skip to content

Examples

The repository examples are intentionally small. They are smoke tests for core behavior and copyable starting points for your own tapes. Render all examples from a checkout with:

Terminal window
mise run render-examples

Generated files are written under examples/output and copied to target/betamax-examples for local inspection. README GIF previews are hosted as GitHub Release assets; curated site previews may also live under site/public/assets with Git LFS. See Generated Media Storage for the full storage guidance.

TapeDemonstratesUseful docs
quick-start.tapeinstalling, help, new, and nested runQuick Start
basic.tapetyping, waits, theme, window bar, border radiusTape files, themes
hide-show.tapehidden setup and hidden trailing cleanupHidden work
waits.tapeline, screen, regex, and default prompt waitsWait commands
keys.tapekey commands, repeats, editing, and interruptInput and keys
keyboard-overlayinput labels over review mediaPresentation overlays
clipboard-env.tapeEnv, Copy, and PasteTape reference
captions.tapevisual captions for review mediaPresentation overlays
presentation-overlays.tapecaptions plus keyboard overlay layoutPresentation overlays
outputs.tapeGIF, PNG, JSON, screenshot, state, frame dirOutputs
scrollback.tapescrollback-inclusive state JSONState JSON
text-styles.tapeANSI styles, truecolor, and styled state spansState JSON
layout.tapepadding, margin, fill, window bar, radiusThemes and styling
themes.tapecopied Ghostty themes and palette mappingTheme lookup
screenshot.tapescreenshots and terminal state JSONCheckpoints
video.tapeGIF, MP4, and WebM from one captureVideo encoding

These previews come from the example tapes above.

Quick Start Betamax GIF

quick-start.tape shows the full first-run path: install check, help output, creating a starter tape, inspecting it, running it, and listing the generated GIF.

Basic Betamax GIF

basic.tape is the smallest useful demo: it sets a portable shell, chooses Aardvark Blue, types one command, waits for the result, and hides shell cleanup.

Hide and Show Betamax GIF

hide-show.tape demonstrates the most important authoring trick. Hidden setup still runs and updates terminal state, but the animation starts only when Show reveals the prepared screen.

Captioned Betamax GIF

captions.tape annotates rendered media without changing the terminal session. Caption changes are presentation metadata: waits and state outputs keep matching the terminal itself. Captions render in a reserved presentation row below the terminal canvas.

Keyboard overlay Betamax GIF

keyboard-overlay.tape shows typed commands and key presses as compact labels over generated media. See Presentation Overlays for overlay modes and placement. Labels appear when input is queued and linger briefly after typing, which keeps review GIFs readable without turning the overlay into a permanent command log.

presentation-overlays.tape combines captions and keyboard overlay chips. The caption is left-aligned with the terminal frame, key chips are right-aligned, and long captions are truncated with ... rather than wrapped over the chips. Caption glyphs are clipped to their reserved width as a final guard for font fallback and unusually wide characters.

Ghostty theme Betamax GIF

themes.tape shows ANSI colors mapped through a bundled Ghostty theme. Use betamax themes to list the names available to Set Theme.

Video output Betamax GIF

video.tape writes GIF, MP4, and WebM from one capture. The GIF is encoded in process; MP4 and WebM are handed to ffmpeg.

Use examples/outputs.tape when checking artifact behavior. It writes a GIF, a PNG, final state JSON, a PNG frame directory, a checkpoint screenshot, and checkpoint state JSON.

Use examples/scrollback.tape and examples/text-styles.tape when evaluating terminal testing. Together they exercise the parts of state JSON that matter for snapshot tests: viewport text, scrollback text, default style, non-default style table entries, and styled spans.

Use examples/waits.tape when debugging timing. It shows the three wait targets and a custom WaitPattern, which is usually preferable to adding sleeps.