How to Record a Terminal GIF

Step-by-step guide to recording terminal sessions as GIF animations using VHS, asciinema, and AgentGIF CLI.

1. Requisitos previos

Para grabar GIFs de terminal, necesitas:

VHS funciona leyendo un archivo .tape que describe las pulsaciones de teclas, comandos y temporización — luego reproduce esas acciones en un terminal virtual y captura la salida como un GIF.

2. Instalar VHS

PlataformaComando de instalación
macOSbrew install vhs
Ubuntu/Debiansudo mkdir -p /etc/apt/keyrings && curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg && echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list && sudo apt update && sudo apt install vhs
Arch Linuxyay -S vhs
Gogo install github.com/charmbracelet/vhs@latest

Verifica la instalación:

vhs --version

3. Crear un archivo de cinta

Un archivo de cinta es un script de texto plano que le dice a VHS qué escribir, cuándo esperar y qué configuración usar. Crea un archivo llamado demo.tape:

Output demo.gif
Set Shell "bash"
Set FontSize 16
Set Width 1000
Set Height 580
Set Theme "Catppuccin Mocha"

Type "echo 'Hello, world!'"
Enter
Sleep 2s

Type "ls -la"
Enter
Sleep 3s

Comandos principales

ComandoDescripciónEjemplo
OutputEstablecer la ruta del archivo de salidaOutput "demo.gif"
TypeEscribir texto (simula pulsaciones de teclas)Type "git status"
EnterPresionar EnterEnter
SleepEsperar una duraciónSleep 2s
Ctrl+CEnviar atajo de tecladoCtrl+C
HideDetener la grabación (para configuración)Hide
ShowReanudar la grabaciónShow

4. Configurar ajustes

Pon los comandos Set al inicio de tu archivo de cinta, antes de cualquier comando Type.

Configuración recomendada para AgentGIF

Set Shell "zsh"
Set FontSize 15
Set Width 1000
Set Height 580
Set Padding 20
Set Theme "Catppuccin Mocha"
Set TypingSpeed 50ms
Set CursorBlink false

Todos los ajustes disponibles

AjustePredeterminadoDescripción
Shell"bash"Shell a usar (bash, zsh, fish, sh)
FontSize14Tamaño de fuente en píxeles
Width800Ancho del terminal en píxeles
Height600Alto del terminal en píxeles
Padding0Relleno alrededor del terminal
Theme"default"Color theme (see theme gallery)
TypingSpeed50msRetraso entre pulsaciones de teclas
Framerate50Fotogramas por segundo del GIF
PlaybackSpeed1Multiplicador de velocidad de reproducción
CursorBlinktrueMostrar cursor parpadeante
LetterSpacing0Espaciado de letras adicional
LineHeight1.0Multiplicador de altura de línea

Temas

VHS incluye 44 temas integrados. Opciones populares para documentación de desarrolladores:

TemaEstilo
Catppuccin MochaOscuro cálido (acentos pastel)
DraculaMorado oscuro
Tokyo NightOscuro con tinte azul
NordAzul ártico
One DarkOscuro inspirado en Atom
Solarized DarkOscuro clásico con tonos cálidos
MonokaiInspirado en Sublime Text

Explora todos los temas con vistas previas en vivo: Galería de temas.

5. Grabar el GIF

vhs demo.tape

VHS abre un navegador sin interfaz gráfica, reproduce la cinta y guarda el GIF. Una grabación típica tarda 10-30 segundos.

Vista previa antes de subir:

# macOS
open demo.gif

# Linux
xdg-open demo.gif

6. Optimizar el tamaño del archivo

AgentGIF acepta GIFs de hasta 10 MB, pero los archivos más pequeños cargan más rápido. Consejos para mantener el tamaño del GIF reducido:

TécnicaImpacto
Reducir dimensiones (Width 800)Significativo — reducir el ancho a la mitad divide el tamaño por cuatro
Reducir framerate (Framerate 30)Moderado — reduce los fotogramas en un 40%
Grabación más cortaSignificativo — apunta a 5-15 segundos
Usar PlaybackSpeed 1.5Moderado — menos fotogramas en total
Desactivar parpadeo del cursor (CursorBlink false)Pequeño — menos fotogramas únicos
Fondo sólido (evitar transparencia)Pequeño — mejor compresión del GIF

Para el mejor equilibrio entre calidad y tamaño, la configuración recomendada anterior produce GIFs de alrededor de 100-300 KB para una grabación de 10 segundos.

7. Subir a AgentGIF

Subir mediante CLI (lo más rápido):

agentgif upload demo.gif \
  --title "Git Interactive Rebase" \
  --command "git rebase -i HEAD~3" \
  --tags git,rebase \
  --open

Or upload via the web interface — drag and drop the GIF file.

Incluir un archivo cast habilita la capa para agentes de IA:

agentgif upload demo.gif --cast demo.cast --title "My Demo"

8. Características avanzadas de la cinta

Ocultar/Mostrar para configuración

Usa Hide/Show para ejecutar comandos de configuración sin grabarlos:

Hide
Type "cd /tmp/demo-project"
Enter
Type "mkdir -p src"
Enter
Show

# Now recording starts
Type "ls -la"
Enter
Sleep 2s

Múltiples formatos de salida

VHS puede generar múltiples formatos simultáneamente:

Output demo.gif
Output demo.mp4
Output demo.webm

Variables de entorno

Set Shell "bash"
Type "export PS1='$ '"
Enter
Hide
Sleep 500ms
Show

Atajos de teclado

Ctrl+C     # Cancel current command
Ctrl+L     # Clear screen
Ctrl+D     # EOF / exit
Tab        # Tab completion
Up         # Previous command
Escape     # Escape key

9. Herramientas de grabación alternativas

HerramientaSalidaProsContras
VHSGIF, MP4, WebMCon script, reproducible, temasRequiere configuración
asciinema.castGrabación en vivo, archivos pequeñosSin salida GIF (necesita conversión)
TerminalizerGIFGrabación en vivo, configuración YAMLTamaños de archivo grandes
PeekGIF, WebMGrabador de pantalla con interfaz gráficaNo específico para terminal

Recomendamos VHS para demostraciones con script (reproducibles, con control de versiones) y asciinema + conversión VHS para grabaciones en vivo.

See also: asciinema vs AgentGIF comparison.