Introduction
Install the reel command, and record terminals and render recordings without writing Go.
reel is a command for making terminal recordings. It runs VHS tapes, records commands, drives programs for scripts and agents, and turns asciicast files into GIFs, videos, and stills. It doesn't need Go to use, a browser, or anything else to run, apart from ffmpeg for some formats.
$ reel run demo.tape
demo.tape: wrote demo.gif
demo.tape: wrote demo.cast
What it does
| You want to | Use | Guide |
|---|---|---|
| Script a demo, and regenerate it when your program changes | reel run | Make demos from tapes |
| Test a program without writing code | reel test | Test with tapes |
| Record yourself using a program | reel rec | Record your terminal |
| Drive a program from a script, or let an agent use one | reel session | Drive programs |
| Change how a recording looks, or cut it | reel export, still, cut | Edit existing recordings |
Render a script(1) recording | reel attach | Render script(1) recordings |
All the commands
$ reel --help | sed '/version:/,/go version:/d'
Usage: reel <command> [flags]
Record terminals, and render recordings.
helpful links:
docs :: https://getsteep.dev/cli
llms.txt :: https://getsteep.dev/llms.txt
inspector :: https://inspector.getsteep.dev
Commands:
run Run VHS tapes and write their outputs.
<tapes> ... Tapes to run, in order.
test Run tapes as tests: a failed Wait or Snapshot fails the
tape.
<paths> ... Tapes to run, and directories of *.tape files.
rec Record a command, or your shell, in this terminal.
[<command> ...] Program to record, and its arguments (after --); defaults
to $SHELL.
session (s) Drive a program in a detached, recorded terminal,
one command at a time.
start Start a program in a new session, and print its name.
<command> ... Program to run, and its arguments (after --).
list (ls) List the running sessions.
type Type text.
<text> Text to type.
key Press keys, such as enter, ctrl+c, shift+tab, f5, or a.
<keys> ... Keys to press, in order.
paste Paste text.
<text> Text to paste.
click Click a cell.
<x> Column, from 0.
<y> Row, from 0.
scroll Scroll the viewport through the scrollback.
<rows> Rows to scroll.
resize Resize the terminal.
<size> New size.
mark Mark this moment in the recording.
<label> Label, by convention category:value, such as step:2.
wait Wait for the screen to show, or stop showing, something.
screen Print the screen.
still Render the screen as it is now.
do Run tape commands, such as Type, Enter, and Wait.
<tape> Tape file, or - for standard input. Its settings and
outputs are ignored.
export Render what the session has recorded so far.
stop End the program and the session, optionally rendering its
recording first.
export Render an asciicast file through reel's renderer and
effects.
<cast> Asciicast file (v2 or v3), or - for standard input.
still Render one moment of an asciicast file.
<cast> Asciicast file (v2 or v3), or - for standard input.
cut Cut an asciicast file down to the window between two
marks.
<cast> Asciicast file (v2 or v3), or - for standard input.
convert Convert an asciicast file between versions 2 and 3.
<cast> Asciicast file (v2 or v3), or - for standard input.
attach Render a script(1) typescript.
<typescript> Typescript, as script(1) writes it.
play Replay an asciicast file in this terminal.
<cast> Asciicast file (v2 or v3), or - for standard input.
info Describe an asciicast file.
<cast> Asciicast file (v2 or v3), or - for standard input.
fonts List the font families reel can draw with.
themes List the named themes.
[<search>] Only themes whose name holds this text, in any case.
Flags:
-h, --help Show context-sensitive help.
-v, --version prints version information and exits
--version-json prints version information in JSON format and exits
-D, --debug enables debug mode ($DEBUG)
Run "reel <command> --help" for more information on a command.Run reel <command> --help for every flag. Commands that list things print a table on a terminal, and tab-separated rows without headers when piped. --json prints JSON.
Installation
On macOS or Linux, install it with Homebrew:
$ brew install lrstanley/tap/reelbrew upgrade reel updates it when a new release is out.
Or download the binary for your platform from the releases page. It's a single file, with nothing to install alongside it.
| Platform | File |
|---|---|
| Linux | reel_linux_amd64, reel_linux_arm64 |
| macOS | reel_darwin_arm64 (Apple silicon), reel_darwin_amd64 (Intel) |
| Windows | reel_windows_amd64.exe, reel_windows_arm64.exe |
On Linux and macOS, make it executable and put it on your PATH, named reel:
$ chmod +x reel_linux_amd64
$ sudo mv reel_linux_amd64 /usr/local/bin/reelEach release has the SHA-256 of every file in steep_checksums.txt. To check the files you downloaded, run sha256sum --check --ignore-missing steep_checksums.txt in the same directory. The macOS binaries aren't signed, so if a browser downloaded one, macOS blocks it the first time it runs. xattr -d com.apple.quarantine reel lets it run.
Or, with Go:
go install getsteep.dev/steep/cmd/reel@latestVideo and WebP formats need ffmpeg on your PATH, and the rest need nothing. reel run and reel test need a shell, and tapes run in bash unless they say otherwise. Fonts are built in, so recordings look the same on any machine.
Next
Try the quickstart.
If you're writing Go tests, you probably want steep, and to record from your own Go code, see reel. They use the same formats and effects as this command.
Last updated on