Deterministic, agent-native terminal demo pipeline
Project description
terminal-demo-studio
Deterministic terminal demo generation for docs, release pages, and agent workflows.
Built on Charm VHS, with a CI-grade screenplay layer, canonical run artifacts, and executed-session authenticity.
All showcase media is generated from executed sessions (mock or real), never hand-edited frames.
60-Second Wow Path
pipx install terminal-demo-studio-cli
tds render --template install_first_command --output gif --output-dir outputs
Migration note: the studio command was removed in alpha. Use tds.
Agent-First Automation
Install the skill:
npx skills add tomallicino/terminal-demo-studio --skill terminal-demo-studio
Agent prompt example:
Render a portable demo template, return RUN_DIR and MEDIA_GIF, then summarize any failures with tds debug --json.
Installation
Recommended for users:
pipx install terminal-demo-studio-cli
Developer setup:
python3 -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'
Compatibility Matrix
| Platform | scripted_vhs lane |
autonomous_pty lane |
autonomous_video lane |
Docker |
|---|---|---|---|---|
| macOS | Supported (CI smoke) | Supported (CI smoke) | Experimental | Optional |
| Linux | Supported (CI smoke) | Supported (CI smoke) | Experimental | Optional |
| Windows 10/11 | Supported for users, CI parity deferred | Supported (CI smoke) | Docker-only path | Optional |
Docker is optional for core workflows.
Stable vs Experimental
- Stable:
scripted_vhslane (tds render/run --mode scripted_vhs). - Stable (limited):
autonomous_ptycommand/assert lane. - Experimental:
autonomous_videointeractive lane and broader autonomous interactive coverage roadmap.
Commands
tds render <screenplay.yaml> [--mode auto|scripted_vhs|autonomous_pty|autonomous_video] \
[--docker|--local] [--output-dir PATH] [--playback sequential|simultaneous] \
[--output gif|mp4]
tds render --template <template_id> [--name NAME] [--destination PATH] \
[--mode scripted_vhs] [--local] [--output gif|mp4]
tds run <screenplay.yaml> [same options as render]
tds validate <screenplay.yaml> [--json-schema] [--explain]
tds new <name> [--template TEMPLATE] [--destination PATH] [--force]
tds new --list-templates
tds init [--destination PATH] [--template TEMPLATE] [--name NAME] [--force]
tds doctor [--mode auto|scripted_vhs|autonomous_pty|autonomous_video]
tds debug <run_dir> [--json]
Golden Templates (Launch Pack)
Use tds new --list-templates to scaffold these six templates:
-
install_first_command
What it shows: install + first render success.
Source:examples/mock/install_first_command.yaml
-
before_after_bugfix
What it shows: two-pane failing-to-passing bugfix narrative.
Source:examples/mock/before_after_bugfix.yaml
-
error_then_fix
What it shows: error-first config workflow with deterministic fix.
Source:examples/mock/error_then_fix.yaml
-
interactive_menu_showcase
What it shows: menu-style interaction sequence with deterministic playback.
Source:examples/mock/interactive_menu_showcase.yaml
-
policy_warning_gate
What it shows: non-compliant vs compliant release gate comparison.
Source:examples/mock/policy_warning_gate.yaml
-
speedrun_cuts
What it shows: fast release-gate style command outputs.
Source:examples/mock/speedrun_cuts.yaml
Demo-as-Build-Artifact
Every run writes a canonical run directory under .terminal_demo_studio_runs/:
manifest.jsonsummary.jsonmedia/*.gif|*.mp4scenes/scene_*.mp4(scripted lane)tapes/scene_*.tape(scripted lane)runtime/events.jsonl(autonomous lanes)failure/*on errors
tds debug <run_dir> provides compact triage output, and --json is agent-friendly.
Reproducibility Guarantees
Determinism knobs and environment guidance:
docs/reproducibility.md
GitHub Action (Copy/Paste)
Reusable render action docs:
docs/github-action.md- action path:
.github/actions/render
Troubleshooting
- Missing local render dependencies:
tds doctor --mode scripted_vhs
- Docker unavailable for explicit Docker runs:
tds render ... --local
- Failed run triage:
tds debug <run_dir>
tds debug <run_dir> --json
Additional Docs
ARCHITECTURE.mdCAPABILITIES.mddocs/autonomous-roadmap.mddocs/case-studies/feature-flag-bugfix.mddocs/releasing.md
License
MIT (LICENSE)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file terminal_demo_studio-0.1.0.tar.gz.
File metadata
- Download URL: terminal_demo_studio-0.1.0.tar.gz
- Upload date:
- Size: 46.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
281e7aef04e42ca35de8d8ac89288cdc79e9e651e7a9565ed3d5db45ac4bdece
|
|
| MD5 |
1960d123c6c3fd17478dd4019c96796c
|
|
| BLAKE2b-256 |
75d113786f333c273354f63ff455511477412b6c70868723bbd5f0f85c395ea1
|
Provenance
The following attestation bundles were made for terminal_demo_studio-0.1.0.tar.gz:
Publisher:
publish.yml on tomallicino/terminal-demo-studio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
terminal_demo_studio-0.1.0.tar.gz -
Subject digest:
281e7aef04e42ca35de8d8ac89288cdc79e9e651e7a9565ed3d5db45ac4bdece - Sigstore transparency entry: 962517139
- Sigstore integration time:
-
Permalink:
tomallicino/terminal-demo-studio@59155056b9e60844af366eba22621ee9d3d87610 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tomallicino
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@59155056b9e60844af366eba22621ee9d3d87610 -
Trigger Event:
push
-
Statement type:
File details
Details for the file terminal_demo_studio-0.1.0-py3-none-any.whl.
File metadata
- Download URL: terminal_demo_studio-0.1.0-py3-none-any.whl
- Upload date:
- Size: 45.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b4a3c1a8300438c86ccde2b17b4911e45c4b1a40d0c5ae61dc382ec7c449e4f2
|
|
| MD5 |
f86b8e5e0a6a57fbe6d3ba1e5b545120
|
|
| BLAKE2b-256 |
7b85d9d7b3156d34273eb5ccabba4e133bea05934aee3b5c6ed4b5040a5005e6
|
Provenance
The following attestation bundles were made for terminal_demo_studio-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on tomallicino/terminal-demo-studio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
terminal_demo_studio-0.1.0-py3-none-any.whl -
Subject digest:
b4a3c1a8300438c86ccde2b17b4911e45c4b1a40d0c5ae61dc382ec7c449e4f2 - Sigstore transparency entry: 962517142
- Sigstore integration time:
-
Permalink:
tomallicino/terminal-demo-studio@59155056b9e60844af366eba22621ee9d3d87610 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tomallicino
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@59155056b9e60844af366eba22621ee9d3d87610 -
Trigger Event:
push
-
Statement type: