ttylog (TeleTYpewriter log) records your terminal session to a standard .cast file (asciinema v2 format), lets you trim out the idle gaps, replay it in your terminal, and export it as a fully self-contained HTML file you can open in any browser — no server, no asciinema account, no upload required.
The exported HTML embeds the player and the recording in a single file. Send it in a Slack message, attach it to a GitHub issue, drop it in docs. It just works.
Install
pip install ttylog
Or with pipx:
pipx install ttylog
Note: Recording (
ttylog record) requires Linux or macOS — it uses Unix PTY. Playback, trimming, and HTML export work on all platforms including Windows.
Usage
Record
# Record your default shell
ttylog record session.cast
# Record a specific command
ttylog record session.cast --command "python demo.py"
# Add a title
ttylog record session.cast --title "Deploy walkthrough"
# Suppress the startup banner
ttylog record session.cast --quiet
Press Ctrl-D or type exit to stop recording.
Replay
# Replay at normal speed
ttylog play session.cast
# Replay at 2× speed
ttylog play session.cast --speed 2
# Replay at 0.5× (slow motion)
ttylog play session.cast --speed 0.5
Trim idle gaps
# Trim gaps longer than 2 seconds (default)
ttylog trim session.cast session_trimmed.cast
# Custom gap threshold
ttylog trim session.cast session_trimmed.cast --max-gap 1.5
Export to HTML
# Export as self-contained HTML — no server needed
ttylog export session.cast session.html
Open session.html in any browser. The recording plays automatically. No internet connection required — the player is embedded.
Inspect a recording
ttylog info session.cast
Shows title, command, terminal dimensions, duration, event count, and file size.
.cast format compatibility
ttylog uses the standard asciinema v2 .cast format. Files recorded with ttylog are fully compatible with:
| Tool | Use |
|---|---|
| asciinema.org | Upload and share online |
| agg | Convert to animated GIF |
| svg-term | Convert to SVG |
| asciinema-player | Embed in your own website |
You can also use files recorded with asciinema directly with ttylog trim, ttylog export, and ttylog info.
All commands
ttylog record OUTPUT Record a terminal session to a .cast file
ttylog play SOURCE Replay a session in the terminal
ttylog export SOURCE OUTPUT Export a session as self-contained HTML
ttylog trim SOURCE OUTPUT Remove idle gaps from a recording
ttylog info SOURCE Show metadata and statistics
record options
--command, -c Command to run instead of $SHELL
--title, -t Session title
--quiet, -q Suppress startup banner
play options
--speed, -s Playback speed multiplier (default: 1.0, range: 0.1–10.0)
trim options
--max-gap, -g Max idle gap in seconds (default: 2.0)
Windows users
Recording requires a Unix PTY and is not supported natively on Windows. Use WSL2 to record sessions. Playback (ttylog play), export (ttylog export), trim (ttylog trim), and info (ttylog info) all work natively on Windows.
Development
git clone https://github.com/gitwingo/ttylog
cd ttylog
pip install -e .
Support
If ttylog has been useful to you, consider supporting its development:
Connect
- GitHub: @gitwingo
- Reddit: u/gitwingo
- X / Twitter: @gitwingo
License
MIT © gitwingo
Metadata
Release files for ttylog 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ttylog-0.1.0.tar.gz | 78.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ttylog-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 87.0 kB
Release files / ttylog-0.1.0.tar.gz
| Download URL | ttylog-0.1.0.tar.gz |
|---|---|
| Size | 78.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6b01eeabfae474a774f516a9d8cad5a46e1b7ef505d5f0bffd42a56fd012884e
|
|
BLAKE2b-256 checksum How to use checksums |
39c50f8cadd93c1b9b192b7d4aa2600c24096109e7cf7a3f1cc25fdde6a44b4e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 5, 2026.
Transparency logRelease files / ttylog-0.1.0-py3-none-any.whl
| Download URL | ttylog-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6335ff6e460baf5361769ceb742eb1508291b1056f1768962d4c035fbf818e2c
|
|
BLAKE2b-256 checksum How to use checksums |
672e97a86211341a3022ba65a058f11df6a6ab49e312f35e0b0b444a93d07729
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 5, 2026.
Transparency log