This is part 3 in the “what’s new in asciinema” series. In the first
part we looked at the player, in the second
part we covered the recorder, and in this one
we’ll focus on the server.
Let’s begin with OPS-related stuff.
asciinema.org uses email-based login flow, where you
get short lived login link (some call it “magic link”). Over last 10 years that
email was delivered via several email providers. From the top of my head,
roughly in order: Mailgun, Gmail, Sendgrid, Fastmail. I won’t go into details of
why I’ve been switching from X to Y, as the reason was different in each case,
but overall there was always something (and when it wasn’t a tech issue then it
was a price issue). The last switch happened a few months ago to AWS SES. It’s
been reliable (so far) and ridiculously cheap. asciinema server uses
Bamboo library for email delivery,
and thanks to Bamboo’s pluggable adapters it was trivial to switch. If you want
to use SES for email delivery with your own instance of the server then follow
This is part 2 in the “what’s new in asciinema” series. In the first
part I looked at the player, in this one I’ll
focus on the recorder (aka CLI).
Fun fact: people use asciinema to record the terminal on Android. I would never
have thought of that but apparently there are folks who do that. Anyway,
recorder v2.0.2 (that’s not really recent…) improved Android support, so if
you’re a masochist who uses a terminal on a mobile device then you’re covered ;)
There’s been a steady stream of asciinema releases over the last 12 months and I
thought it would be nice to bring notable additions and improvements to the
light. This is the first post in the “what’s new in asciinema” series, in which
I’ll focus primarily on the player,
highlighting changes I find most interesting. I will cover other parts of the
asciinema stack in future posts.
Blast from the past
Published on 19 Jun 2023 by Marcin Kulik
Did you know that the first prototype of what later became the asciinema player
replayed “typescript” files produced by script
In fact, the whole asciinema project originated with the player, not with the
command line recorder. That was back in 2010. I was having fun with
scriptreplay commands, when I imagined being able to easily share typescript
files with fellow geeks, who could watch the recordings in their browsers. I
wrote a rough parser/interpreter for typescript format and got some characters
moving happily on a page with the help of a bunch
It’s been a while since asciinema-player 2.6 was released and a lot has changed
since. Version 3.0 is around the corner with so much good stuff, that even though
it’s not released yet, I couldn’t wait any longer to share.
Long story short: asciinema-player has been reimplemented from scratch in
at the same time, reducing the size of the JS bundle 4x.
Since asciinema’s inception in 2012 there were over 200,000 asciicasts uploaded
to asciinema.org 🎉😻.
As of today (end of 2018) there are ~85,000 unclaimed recordings, which are ones
that have been uploaded by anonymous users, who never linked their installation
to their asciinema.org account.
Most of these unclaimed recordings are “abandoned” (recorded, watched once,
forgotten), therefore we’re going to archive them, and enable daily
PR) on asciinema.org
Published on 18 Feb 2018 by Marcin Kulik
I’m very happy to announce the release of asciinema 2.0!
It’s been 3 years since 1.0 (time flies!), and during this period many ideas
have been brought to life through series of minor releases. This time the scope
and importance of the changes required major version bump.
Below we’ll go through all the changes in detail, you can also read the
for a shorter version.
We have just released asciinema web player v2.3.0. Since v2.0.0 there were two
smaller releases bringing lots of improvements (see
but this one definitely deserves a post of its own.
This new version makes self-hosting of the player even simpler. Let’s see an example.
I’m very happy to announce the release of asciinema 1.3, which is kind of a
special release. It brings several bug fixes and improvements for end users, and
at the same time it makes life of asciinema developers (mostly me) and package
maintainers (many people!) way easier.
for a detailed list of changes, continue reading for motivation on transitioning
back to Python.
Published on 06 Jan 2016 by Marcin Kulik
I’m very happy to announce version 2.0 of the asciinema web player. There are
several exciting aspects of this release so let’s get straight to the point.
First, the new player directly supports
asciicast v1 format.
In other words, there is no need to pre-process the recording upfront, before
passing it to the player. This is possible thanks to built-in terminal emulator
Paul Williams’ parser for ANSI-compatible video terminals.
It covers only the display part of the emulation, as this is what the player is
all about (input is handled by your terminal+shell at the time of recording
anyway). Handling of escape sequences is fully compatible with most modern
terminal emulators like xterm, Gnome Terminal, iTerm, mosh etc.
Published on 11 May 2015 by Marcin Kulik
The core idea behind asciinema.org is to allow anyone to share the recording of
their terminal session by simply sharing a link to your asciicast page. Since
the inception of asciinema all recordings has been public. We wanted to
encourage you to share your knowledge, show off your tricks, and allow others
to learn from it.
Support for embedding asciicasts just got way more awesome. See embedding
docs for details, read on for examples.
Published on 13 Mar 2015 by Marcin Kulik
I’m very happy to announce the release of asciinema 1.0, which brings many
long-awaited features and settles the ground for even more awesome features and
improvements coming in the future.
for a detailed list of changes, continue reading for highlights of this
So far you could log in to asciinema using your Github
or Twitter account via OAuth. The idea behind this was twofold:
- avoid passwords,
- make it as simple as possible.
Passwords are insecure, inconvenient and annoying. Inconvenience of passwords
was nicely summed up by Xavier in his
tweet saying “password
reset is the new login”. So the OAuth flow, being very simple for the user
(given he/she is already logged in at the provider), helped
achieving the initial goals.