MCPcopy Index your code
hub / github.com/asciinema/asciinema-player

github.com/asciinema/asciinema-player @v3.17.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v3.17.0 ↗ · + Follow
556 symbols 1,294 edges 62 files 0 documented · 0% 10 cross-repo links
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

asciinema player

Build status

asciinema player is a web player for terminal sessions recordings.

Unlike typical web video players, which play heavyweight video files (.mp4, .mov), asciinema player plays lightweight terminal session recordings in the text-based asciicast format (.cast), such as those produced by the asciinema recorder.

The player is built from the ground up with JavaScript and Rust (WASM), and is available as npm package and a standalone JS bundle.

You can use it on any HTML page - in a project documentation, on a blog, or in a conference talk presentation.

It's as easy as adding a single line of Javascript code to your web page:

AsciinemaPlayer.create('demo.cast', document.getElementById('demo'));

Check out the quick start guide for basic setup overview.

You can see the player in action in asciinema documentation.

Notable features:

Building

Building asciinema player from source requires:

To build the project run:

git clone https://github.com/asciinema/asciinema-player
cd asciinema-player
rustup target add wasm32-unknown-unknown
npm install
npm run build

This produces following output files:

  • dist/index.js - monolithic ES module, to be import-ed in your JS bundle
  • dist/bundle/asciinema-player.js - standalone monolithic player script (IIFE), to be linked directly from a website
  • dist/bundle/asciinema-player.min.js - minimized version of the above
  • dist/bundle/asciinema-player.css - stylesheet, to be linked directly from a website or included in a CSS bundle

The monolithic version of the player covers majority of use cases, and it's all you need to use the player.

In addition, the split version of the player is built with npm run build, producing the following files:

  • dist/ui.js - UI ES module, to be import-ed in your JS bundle
  • dist/bundle/asciinema-player-ui.js - standalone UI script (IIFE), to be linked directly from a website
  • dist/bundle/asciinema-player-ui.min.js - minimized version of the above
  • dist/bundle/asciinema-player-worker.js - standalone web worker script (IIFE), to be linked directly from a website
  • dist/bundle/asciinema-player-worker.min.js - minimized version of the above

The split version runs the UI and data crunching (parsing, terminal emulation) in separate OS threads, which improves UI's responsiveness during playback. In this setup the UI code runs in the window context, while the processing code runs in a WebWorker. The benefit of this configuration is typically observed only for high frame-rate / high bandwidth recordings. For typical demos/sessions it's not worth the setup hassle.

Donations

Sustainability of asciinema development relies on donations and sponsorships.

Please help the software project you use and love. Become a supporter or a corporate sponsor.

asciinema is sponsored by:

Consulting

If you're interested in integration or customization of asciinema player to suit your needs, check asciinema consulting services.

License

© 2011 Marcin Kulik.

All code is licensed under the Apache License, Version 2.0. See LICENSE file for details.

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Function 388
Method 118
Class 40
Interface 9
Enum 1

Languages

TypeScript94%
Rust6%

Modules by API surface

src/driver/recording.js83 symbols
src/components/Player.js43 symbols
src/components/Terminal.js37 symbols
tests/driver/recording.spec.js36 symbols
src/vt/src/lib.rs32 symbols
src/core.js25 symbols
src/stream.js23 symbols
src/ui.js22 symbols
tests/player.spec.js21 symbols
index.d.ts21 symbols
src/driver/websocket/alis.js19 symbols
src/buffer.js17 symbols

For agents

$ claude mcp add asciinema-player \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page