Skip to Content
steep

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
The tea shop recorded from a tape: a program started in a shell, moved through, filtered, and brewed
This site's tour, recorded from a tape.Open in the inspector ↗

What it does

You want toUseGuide
Script a demo, and regenerate it when your program changesreel runMake demos from tapes
Test a program without writing codereel testTest with tapes
Record yourself using a programreel recRecord your terminal
Drive a program from a script, or let an agent use onereel sessionDrive programs
Change how a recording looks, or cut itreel export, still, cutEdit existing recordings
Render a script(1) recordingreel attachRender 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/reel

brew 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.

PlatformFile
Linuxreel_linux_amd64, reel_linux_arm64
macOSreel_darwin_arm64 (Apple silicon), reel_darwin_amd64 (Intel)
Windowsreel_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/reel

Each 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@latest

Video 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

On this page