---
title: "Reproducible terminal demos as code — DemoStage"
source: "https://univerlab.org/demostage/"
---

[UniverLab · open laboratory](/)EXP-007

# DemoStage

// the demo is the source

DemoStage records a session as **events**, normalizes human imperfections into a clean `demo.toml` **score**, and compiles it to gif, mp4 or an animated svg — version-controlled, re-runnable and diffable.

terminal demos → an event score → demos you re-run

[Star on GitHub ↗](https://github.com/UniverLab/demostage)[Documentation →](/demostage/docs/)

Install

macOS / LinuxWindows

`curl -fsSL https://install.univerlab.org/demostage | sh``irm https://install.univerlab.org/demostage.ps1 | iex`⧉✓

![](/bench/machines/demostage-night-450.webp)

EXP-007 · active · Sol 169 (2026-06-18) · [release v0.4.0 · 3 weeks ago](https://github.com/UniverLab/demostage/releases/tag/v0.4.0) · roadmap: · · Built with [Canopy](/canopy/) · Repository set up with [ghScaff](/ghscaff/) · Demo recorded with [DemoStage](/demostage/) · Commits checked by [GitKit](/gitkit/)

Latest release: v0.4.0 (2026-10-06)

Background: Eadweard Muybridge, The Horse in Motion, 1878 (public domain).

Genesis · 2026 · Sol 169 (2026-06-18)

## Born building this very page.

Building this landing, every experiment needed a demo — and every tool (asciinema, vhs, OBS, recording by hand) came out brittle or ugly, with a fresh re-record for each typo. So the demo stopped being a video and became a file: events you can prune, pace and replay. DemoStage records the rest of the lab — including the page you are reading.

Fig. 1The tour — one score recorded in a real PTY, exported to gif and svg from a single take

![The DemoStage tour as an animated SVG: a banner printed in the terminal, the score that demos it, record, export and doctor.](/demos/demostage.svg)

Fig. 2 The same take, exported as svg — 83 KB, font embedded, no video player

5 commands

*   01`capture` — live capture: record the session, auto-normalize into a clean score and faithful `.rec`.
*   02`focus` — switch the live view to one or two sources (terminal, repo page, docs, localhost) — full screen, split or stacked, composited into the demo.
*   03`record` — re-execute `demo.toml` cleanly, producing a humanized recording.
*   04`export` — pure playback: render to gif, mp4 or animated svg (no re-execution, ffmpeg/chromium auto-provisioned).
*   05`edit` — edit the timeline interactively; mark several steps and apply bulk changes.

FAQ

## FAQ

What is DemoStage?

A tool for planning and recording multi-source demos — terminal, browser, and files in one scene. Not just screen recording: you configure typography, aspect ratio, fps, and terminal style. Output is optimized for web.

Can I re-record a demo if something changes?

Yes. demostage capture records events, not video. If the UX changes, re-capture and the demo updates deterministically — no need to manually re-record the whole thing.

How is DemoStage different from asciinema?

asciinema records raw terminal output. DemoStage records events, supports multiple sources (terminal + browser + files), normalizes imperfections, and compiles to gif, mp4 or animated svg. The source is a versionable TOML file.

Field notes