ratty
A GPU-rendered terminal emulator with inline 3D graphics ππ§
Ratty: A GPU-rendered terminal emulator with inline 3D graphics π§
Inspired by TempleOS | Built with Rust & Ratatui
ratty-demo-with-audio.mp4
"Rodent-obsessed developer creates Ratty to bring 3D graphics to the command line" - The Register
"This New Terminal is Absurd (But Totally Fun)" - It's FOSS
"10 weird OSS projects you need right now... " - Fireship
"Your terminal can render in 3D now, and Rust made it surprisingly usable" - MakeUseOf
Features
- Spinning rat cursor (customizable)
- Traditional 2D and new 3D mode!
- Inline 3D objects
- GPU-backed text rendering
- Image support (via Kitty Graphics Protocol >:()
βΆοΈ Watch the demo video here!
π Read the behind the scenes blog post here!
3D mode
Ever wondered what's behind the terminal? Press Ctrl+Alt+Enter!
ratty-3d-with-audio.mp4
Installation
Requirements:
- A GPU / graphics stack supported by Bevy and wgpu
- Melted cheese (optional but recommended)
crates.io
cargo install ratty
Arch Linux
sudo pacman -S ratty
Nix
See the Nix packaging docs for flake, NixOS, and Home Manager usage.
nix run github:orhun/ratty
Binary releases
Prebuilt binaries are available on the GitHub releases page for direct download.
From Git
Requirements:
- Rust toolchain with Cargo
- on Bazzite / Bluefin:
sudo rpm-ostree install gcc fontconfig-devel wayland-devel(then reboot) - on Debian / Ubuntu:
sudo apt-get update ; sudo apt-get install gcc pkgconf libfontconfig-dev libwayland-dev - on Fedora:
sudo dnf install gcc fontconfig-devel wayland-devel
cargo install --git https://github.com/orhun/ratty
Configuration
The default configuration file is available in config/ratty.toml.
You can copy this file to $HOME/.config/ratty/ratty.toml and customize it.
Changing the cursor
[cursor.model] path = "CairoSpinyMouse.obj" scale_factor = 6.0 brightness = 0.5 x_offset = 0.5 plane_offset = 18.0 visible = true [cursor.animation] spin_speed = 1.4 bob_speed = 2.2 bob_amplitude = 0.08
For cursor.model.path, Ratty supports both .obj, .glb, and .stl assets.
Other useful cursor fields are:
scale_factor: scales the model relative to the terminal cell sizebrightness: adjusts the cursor material brightnessx_offset: shifts the cursor model horizontally inside the cellplane_offset: pushes the cursor away from the warped terminal surface in 3D modevisible: show the custom 3D cursor model instead of only the terminal cursor
Key Bindings
| Key | Action |
|---|---|
| Ctrl+Alt+C | Copy selection |
| Ctrl+Alt+V | Paste clipboard |
| Ctrl+Alt+Enter | Toggle 2D / ortho 3D |
| Ctrl+Alt+P | Toggle perspective |
| Ctrl+Alt+M | Toggle Mobius mode |
| Ctrl+Alt+Shift+0-9 | Activate camera slot |
| Ctrl+Alt+Up | Increase warp |
| Ctrl+Alt+Down | Decrease warp |
| Alt+PageUp | Scroll one page up |
| Alt+PageDown | Scroll one page down |
| Alt+Up | Scroll one line up |
| Alt+Down | Scroll one line down |
| Ctrl+= | Increase font size |
| Ctrl+- | Decrease font size |
| Ctrl+Alt+0 | Reset font size |
In custom configs, ToggleOrtho3DMode is the current action name for the
orthographic 3D toggle. The old Toggle3DMode action remains supported as a
backward-compatible alias.
Camera slot actions are named ActivateCameraSlot0 through
ActivateCameraSlot9. The extra Shift modifier keeps slot 0 distinct
from the existing Ctrl+Alt+0 font reset.
Inline 3D objects
Ratty uses its own protocol, the Ratty Graphics Protocol, to place inline 3D objects in terminal space.
RGP supports:
- registering
.obj,.glb, and.stlassets by path - placing them at terminal cell anchors
- animation, scale, color, depth and other attributes
- camera control for flat, orthographic, perspective and Mobius views
There is a Ratatui widget called ratatui-rgp available in
widget/ if you want to build your own terminal applications that involve inline 3D objects.
Examples
Big rat
Places a single oversized rat directly in your terminal. Press v in the demo
to cycle the Ratty camera protocol through flat, orthographic, perspective and
Mobius views.
ratty-big-rat-with-audio.mp4
Document
TempleOS-inspired document demo with editable text and embedded inline 3D objects:
ratty-document-with-audio.mp4
Draw
Split-pane drawing demo with a 2D canvas on the left and a live 3D preview on the right:
ratty-draw-with-audio.mp4
Rubik's cube
Interactive 3D Rubik's cube demo:
ratty-rubiks-cube.mp4
Mobius Chess
A Mobius-strip chess demo:
ratty-mobius-chess.mp4
Apps
Here are some applications explicitly built around Ratty's Graphics Protocol:
Ratscad
Terminal CAD:
ratscad-demo.mp4
Ratty-runner
Endless runner built for Ratty:
ratty-run.mp4
ComChan
A blazingly fast serial monitor with plotter TUI and 3D telemetry
2026-05-23_18-01-42.mp4
Architecture
Rendering pipeline
The terminal surface currently uses ratatui for the UI buffer,
parley_ratatui for text shaping/rendering
and Bevy for scene presentation.
Current workflow:
- PTY output is parsed by
vt100and drawn into a Ratatui buffer on CPU parley_ratatuishapes the buffer with Parley and records it as a Vello scene- The scene is handed to Bevy's render world through a double-buffered exchange (scenes are recycled between frames, never cloned or re-recorded)
- Vello renders the scene on Bevy's render-world device into a plain
Rgba8Unormstorage texture, with no CPU readback in between - That storage texture is copied into an
Rgba8UnormSrgbpresent texture (sampled through an sRGB view, so Vello's sRGB-encoded output is decoded on sample instead of re-encoded), which Bevy presents in the 2D and 3D scenes
The terminal image is fully GPU-resident: the only data crossing from the main world to the render world each frame is the recorded scene, not pixels.
Endorsements
- "This is like a legitimately cool project but also I just spent like 20 minutes adjusting the config for the rat spinning to see him spin faster and more erratically and it cracked me up" - @vimlena.com
bluesky-video-1777558230431.mp4
-
"These kinds of experiments are where creativity is born." - @Coko7
-
"No comments. Just support." - @Raphamorim (creator of Rio terminal)
Screencast.from.2026-05-04.12-11-50.webm
License
All code is licensed under The MIT License.
π¦ γ( ΒΊ \_ ΒΊ γ) - respect crables!Credits
Ratty logo designed by @Strophox & @Harunocaksiz
Copyright
Copyright Β© 2026, Orhun ParmaksΔ±z
The author does not have a rat under the hat!more like this