
SIMD+GPU accelerated terminal emulator. Work in progress.
It is heavily based on Alacritty terminal with some ideas taken from Ghostty.
- SIMD accelerated VTE parser which applies various optimizations for processing UTF-8 in parallel.
- WebGPU frontend with damage tracking and partial screen updates
Saiga aims to be fast.
Right now it lacks many useful (and not so) features and optimizations. However, it can already outperform Alacritty terminal on alacritty/vtebench under certain circumstances.

The screenshot above demonstrates results of the benchmark. Alacritty is on the left, Saiga is on the right. Apple M3 Pro, 36 GB RAM compiled with PGO.
The results of the benchmark may vary, as the Saiga is work in progress project.
You will need rust stable toolchain.
Install just command runner
Build without profile guided optimizations. You might want them, as they give significant performance boost
just build
# You can then run saiga like that
./target/release/saiga
Build with profile guided optimizations:
Important
On macOS you will need to install latest llvm
tools: brew install llvm
AND follow the instructions it will give you after the installation, like properly adding it to the $PATH
# First, you need to generate a profile. To do so, run
just generate-pgo
# It will compile and run saiga in special mode for generating PGO data.
# Do something with it you would normally do with terminal, like using vim.
# You can also run vtebench with it.
# After you're done recording your profile close the terminal.
# And compile with it
just build-pgo
# You can then run saiga like that
./target/release/saiga
- Proper input handling. Right now it's very basic and does not handle some key sequences. Mouse support is planned too (including text selection).
- Basic configuration
- Fix renderer issues, like rects overflowing each other
- Apply more optimizations