This project introduces a new kitcat backend for Matplotlib that allows plots to be displayed directly in the terminal. It utilizes the "agg" backend for rendering plots before sending them to the terminal.
- Direct Matplotlib plotting in terminal emulators that support Kitty or iTerm2 graphics protocols.
- Works seamlessly over SSH.
Not all terminal emulators support Kitty or iTerm2 graphics protocols. I haven't done extensive testing, so please let me know if you find other emulators that are compatible, and I will update the list accordingly.
| Terminal Emulator | Supported | Notes |
|---|---|---|
| Kitty | ✅ | |
| iTerm2 | ✅ | |
| VSCode | ✅ | Requires terminal.integrated.enableImages in settings |
| WezTerm | ✅ | |
| Ghostty | ✅ | |
| tmux | ✅ | Requires allow-passthrough on in tmux config |
| Warp | ✅ | |
| wayst | ✅ | |
| st | ✅ | Requires st-kitty-graphics patch |
| Zellij | ❌ | |
| Alacritty | ❌ | |
| Terminal.app (macOS) | ❌ |
pip install kitcat
Select kitcat backend after importing matplotlib:
import matplotlib
matplotlib.use("kitcat")I discovered matplotlib-backend-kitty repository, which provides similar functionality in Kitty. I aimed to create a simpler solution that works across any terminal supporting the protocol.

