Broadcasting your terminal with asciinema
summary
Asciinema server streams real terminal sessions live using WebSockets and a binary event protocol, parsing events in Elixir, replaying them through an embedded AVT Rust virtual terminal (via Rustler and WebAssembly) to bootstrap late viewers, and enforcing capacity with a token bucket bandwidth control. Live state lives in per-stream GenServers supervised by a dynamic supervisor + Horde registry, recordings write to asciicast files, and dashboards use Phoenix PubSub, Phoenix Tracker and LiveView thumbnails every 5s.
AI-written summary · about
chapters (21)
- 0:00Broadcasting terminal with asciinema
- 1:33About the speaker
- 2:56What is Asciinema
- 5:05Asciinema.org features
- 6:08Live terminal demo
- 8:58Live streaming internals
- 13:52Late client problem
- 16:18Terminal sync with AVT
- 20:18Rust and Elixir with Rustler
- 21:01Stream server architecture
- 24:13Dynamic supervision
- 26:20Handling disconnections
- 27:01Recording streams
- 28:05SVG thumbnails
- 29:29Thumbnail customization
- 30:29Tracking live viewers
- 31:35Phoenix Tracker counts
- 33:19Project dependencies and acknowledgments
- 34:02Q&A: Rust vs Elixir
- 36:52Q&A: Ruby to Elixir
- 38:02Q&A: First Elixir experience








