{"id":49947133,"url":"https://github.com/orhun/ratty","last_synced_at":"2026-06-03T23:02:50.608Z","repository":{"id":353153567,"uuid":"1216390615","full_name":"orhun/ratty","owner":"orhun","description":"A GPU-rendered terminal emulator with inline 3D graphics 🐀🧀 ","archived":false,"fork":false,"pushed_at":"2026-05-23T10:19:18.000Z","size":17447,"stargazers_count":2329,"open_issues_count":33,"forks_count":54,"subscribers_count":10,"default_branch":"main","last_synced_at":"2026-05-23T21:05:40.887Z","etag":null,"topics":["3d","3d-graphics","command","gpu","gpu-rendering","graphics","ratatui","ratty","rust","templeos","terminal","terminal-emulator","terminal-emulators","terminal-graphics"],"latest_commit_sha":null,"homepage":"https://ratty-term.org/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/orhun.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"orhun","patreon":"orhunp","buy_me_a_coffee":"orhun"}},"created_at":"2026-04-20T21:22:09.000Z","updated_at":"2026-05-23T20:56:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"810666b9-e88e-4430-963b-afca0075b768","html_url":"https://github.com/orhun/ratty","commit_stats":null,"previous_names":["orhun/ratty"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/orhun/ratty","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orhun%2Fratty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orhun%2Fratty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orhun%2Fratty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orhun%2Fratty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orhun","download_url":"https://codeload.github.com/orhun/ratty/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orhun%2Fratty/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33883105,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","3d-graphics","command","gpu","gpu-rendering","graphics","ratatui","ratty","rust","templeos","terminal","terminal-emulator","terminal-emulators","terminal-graphics"],"created_at":"2026-05-17T16:00:40.701Z","updated_at":"2026-06-03T23:02:50.596Z","avatar_url":"https://github.com/orhun.png","language":"Rust","funding_links":["https://github.com/sponsors/orhun","https://patreon.com/orhunp","https://buymeacoffee.com/orhun"],"categories":["Rust"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg width=\"300\" src=\"https://raw.githubusercontent.com/orhun/ratty/refs/heads/main/website/assets/images/ratty-logo.gif\" /\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cb\u003eRatty: A GPU-rendered terminal emulator with inline 3D graphics\u003c/b\u003e 🧀\n\u003cbr\u003e\n\u003csup\u003e\nInspired by TempleOS | Built with Rust \u0026 Ratatui\n\u003c/sup\u003e\n\u003cbr\u003e\n\u003cimg src=\"https://img.shields.io/badge/Built_with-Ratatui-000?logo=ratatui\u0026amp;logoColor=fff\u0026amp;labelColor=201a16\u0026amp;color=ffd970\" alt=\"Built with Ratatui badge\"\u003e\n\u003c/p\u003e\n\n\u003cdiv\u003e\n  \u003cvideo src=\"https://github.com/user-attachments/assets/17eda86b-d00f-401b-9cf4-38343fa71386\" alt=\"Ratty Demo\"/\u003e\n\u003c/div\u003e\n\n[\"Rodent-obsessed developer creates Ratty to bring 3D graphics to the command line\"](https://www.theregister.com/software/2026/05/11/ratty-terminal-emulator-brings-3d-graphics-to-the-command-line/5238299) - The Register  \n[\"This New Terminal is Absurd (But Totally Fun)\"](https://itsfoss.com/ratty-terminal/) - It's FOSS  \n[\"10 weird OSS projects you need right now... \"](https://www.youtube.com/watch?v=qPuzWFvRajk) - Fireship\n\n## Features\n\n- Spinning rat cursor ([customizable](#changing-the-cursor))\n- Traditional 2D and [new 3D mode](#3d-mode)!\n- [Inline 3D objects](#inline-3d-objects)\n- [GPU-backed text rendering](#rendering-pipeline)\n- Image support (via Kitty Graphics Protocol \u003e:\\()\n\n▶️ [Watch the demo video here!](https://youtu.be/cY9AX5j-osY)  \n📚 [Read the behind the scenes blog post here!](https://blog.orhun.dev/introducing-ratty)\n\n### 3D mode\n\nEver wondered what's _behind_ the terminal? Press \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003eEnter\u003c/kbd\u003e!\n\n\u003cdiv\u003e\n  \u003cvideo width=\"80%\" src=\"https://github.com/user-attachments/assets/173971cc-b6bb-4897-857a-5db8e3c9e161\"/\u003e\n\u003c/div\u003e\n\n## Installation\n\n[![Packaging status](https://repology.org/badge/vertical-allrepos/ratty.svg)](https://repology.org/project/ratty/versions)\n\nRequirements:\n\n- A GPU / graphics stack supported by Bevy and wgpu\n- Melted cheese (optional but recommended)\n\n### [crates.io](https://crates.io/crates/ratty)\n\n```bash\ncargo install ratty\n```\n\n### [Arch Linux](https://archlinux.org/packages/extra/x86_64/ratty/)\n\n```bash\nsudo pacman -S ratty\n```\n\n### Binary releases\n\nPrebuilt binaries are available on the [GitHub releases page](https://github.com/orhun/ratty/releases) for direct download.\n\n### From Git\n\nRequirements:\n\n- Rust toolchain with Cargo\n- on Bazzite / Bluefin: `sudo rpm-ostree install gcc fontconfig-devel wayland-devel` (then reboot)\n- on Debian / Ubuntu: `sudo apt-get update ; sudo apt-get install gcc pkgconf libfontconfig-dev libwayland-dev`\n- on Fedora: `sudo dnf install gcc fontconfig-devel wayland-devel`\n\n```bash\ncargo install --git https://github.com/orhun/ratty\n```\n\n## Configuration\n\nThe default configuration file is available in [`config/ratty.toml`](config/ratty.toml).\n\nYou can copy this file to `$HOME/.config/ratty/ratty.toml` and customize it.\n\n### Changing the cursor\n\n```toml\n[cursor.model]\npath = \"CairoSpinyMouse.obj\"\nscale_factor = 6.0\nbrightness = 0.5\nx_offset = 0.5\nplane_offset = 18.0\nvisible = true\n\n[cursor.animation]\nspin_speed = 1.4\nbob_speed = 2.2\nbob_amplitude = 0.08\n```\n\nFor [`cursor.model.path`](config/ratty.toml), Ratty supports both `.obj` and `.glb` assets.\n\nOther useful cursor fields are:\n\n- `scale_factor`: scales the model relative to the terminal cell size\n- `brightness`: adjusts the cursor material brightness\n- `x_offset`: shifts the cursor model horizontally inside the cell\n- `plane_offset`: pushes the cursor away from the warped terminal surface in 3D mode\n- `visible`: show the custom 3D cursor model instead of only the terminal cursor\n\n## Key Bindings\n\n| Key                                             | Action               |\n| ----------------------------------------------- | -------------------- |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003eC\u003c/kbd\u003e     | Copy selection       |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003eV\u003c/kbd\u003e     | Paste clipboard      |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003eEnter\u003c/kbd\u003e | Toggle 2D / 3D mode  |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003eM\u003c/kbd\u003e     | Toggle Mobius mode   |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003eUp\u003c/kbd\u003e    | Increase warp        |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003eDown\u003c/kbd\u003e  | Decrease warp        |\n| \u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003ePageUp\u003c/kbd\u003e                | Scroll one page up   |\n| \u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003ePageDown\u003c/kbd\u003e              | Scroll one page down |\n| \u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003eUp\u003c/kbd\u003e                    | Scroll one line up   |\n| \u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003eDown\u003c/kbd\u003e                  | Scroll one line down |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003e=\u003c/kbd\u003e                    | Increase font size   |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003e-\u003c/kbd\u003e                    | Decrease font size   |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eAlt\u003c/kbd\u003e+\u003ckbd\u003e0\u003c/kbd\u003e     | Reset font size      |\n\n## Inline 3D objects\n\nRatty uses its own protocol, the [Ratty Graphics Protocol](protocols/graphics.md),\nto place inline 3D objects in terminal space.\n\nRGP supports:\n\n- registering `.obj` and `.glb` assets by path\n- placing them at terminal cell anchors\n- animation, scale, color, depth and other attributes\n\nThere is a Ratatui widget called `ratatui-rgp` available in\n[`widget/`](widget/) if you want to build your own terminal applications that involve inline 3D objects.\n\n### Examples\n\n#### [Big rat](widget/examples/big_rat.rs)\n\nPlaces a single oversized rat directly in your terminal:\n\n\u003cdiv\u003e\n  \u003cvideo width=\"80%\" src=\"https://github.com/user-attachments/assets/e955d09a-d0eb-4bad-b3b2-fc1331f49646\"/\u003e\n\u003c/div\u003e\n\n#### [Document](widget/examples/document.rs)\n\nTempleOS-inspired document demo with editable text and embedded inline 3D objects:\n\n\u003cdiv\u003e\n  \u003cvideo width=\"80%\" src=\"https://github.com/user-attachments/assets/f3a085b0-9e34-4b6f-92fb-90eff9f11776\"/\u003e\n\u003c/div\u003e\n\n#### [Draw](widget/examples/draw.rs)\n\nSplit-pane drawing demo with a 2D canvas on the left and a live 3D preview on the right:\n\n\u003cdiv\u003e\n  \u003cvideo width=\"80%\" src=\"https://github.com/user-attachments/assets/8b53515b-b887-4d03-a54c-7e7aa7ea128c\"/\u003e\n\u003c/div\u003e\n\n### Apps\n\nHere are some applications explicitly built around Ratty's Graphics Protocol:\n\n#### [Ratscad](https://github.com/qewer33/ratscad)\n\nTerminal CAD:\n\n\u003cdiv\u003e\n  \u003cvideo width=\"80%\" src=\"https://github.com/user-attachments/assets/7fe31947-b734-4d19-9fba-ef606cc7b975\"/\u003e\n\u003c/div\u003e\n\n#### [Ratty-runner](https://github.com/ozzyocak/ratty-runner)\n\nEndless runner built for Ratty:\n\n\u003cdiv\u003e\n  \u003cvideo width=\"80%\" src=\"https://github.com/user-attachments/assets/bf3b84a9-7f45-4fac-ae91-240c7ce7c70e\"/\u003e\n\u003c/div\u003e\n\n#### [ComChan](https://github.com/Vaishnav-Sabari-Girish/ComChan)\n\nA blazingly fast serial monitor with plotter TUI and 3D telemetry\n\n\u003cdiv\u003e\n  \u003cvideo width=\"80%\" src=\"https://github.com/user-attachments/assets/29ba6751-65d7-4103-86b3-705ef47dbbfd\"/\u003e\n\u003c/div\u003e\n\n## Architecture\n\n### Rendering pipeline\n\nThe terminal surface currently uses [`ratatui`](https://github.com/ratatui/ratatui) for the UI buffer,\n[`parley_ratatui`](https://github.com/gold-silver-copper/parley_ratatui) for text shaping/rendering\nand [Bevy](https://bevyengine.org/) for scene presentation.\n\nCurrent workflow:\n\n1. Ratatui buffer on CPU\n2. Parley/Vello renders on GPU\n3. Read back RGBA to CPU\n4. Copy into Bevy image\n5. Bevy presents that image in 2D and 3D\n\nTerminal drawing is GPU-rendered through Parley/Vello, but the main terminal\nimage still crosses back through CPU memory before Bevy presents it. This is a\nGPU-powered bridge, not a fully GPU-resident shared-texture path.\n\nIf the project later moves to a fully GPU-resident path, that will require a\ndedicated Bevy render integration that renders into a Bevy-owned texture on\nBevy's render-world device instead of using the current readback bridge.\n\n## Endorsements\n\n- _\"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](https://bsky.app/profile/vimlena.com/post/3mkoshbzpvs2y)\n\n\u003cdiv\u003e\n\n\u003cvideo width=\"80%\" src=\"https://github.com/user-attachments/assets/76446086-0432-4b67-b768-1fe31134a2c1\"\u003e\n\n\u003c/div\u003e\n\n- _\"These kinds of experiments are where creativity is born.\"_ - [@Coko7](https://github.com/Coko7)\n\n- _\"No comments. Just support.\"_ - [@Raphamorim](https://github.com/raphamorim/) (creator of Rio terminal)\n\n- _\"[tetro-tui](https://github.com/Strophox/tetro-tui) running in Ratty\"_ - [@Strophox](https://github.com/Strophox)\n\n\u003cdiv\u003e\n\n\u003cvideo width=\"80%\" src=\"https://github.com/user-attachments/assets/bdc55f35-64eb-4a14-8bb1-4f8719f14644\"\u003e\n\n\u003c/div\u003e\n\n## License\n\nAll code is licensed under \u003ca href=\"LICENSE\"\u003eThe MIT License\u003c/a\u003e.\n\n\u003csup\u003e\n🦀 ノ( º \\_ º ノ) - respect crables!\n\u003c/sup\u003e\n\n## Credits\n\nRatty logo designed by [@Strophox](https://github.com/Strophox) \u0026 [@Harunocaksiz](https://github.com/harunocaksiz)\n\n## Copyright\n\nCopyright © 2026, [Orhun Parmaksız](mailto:orhunparmaksiz@gmail.com)\n\n\u003csup\u003e\nThe author does not have a rat under the hat!\n\u003c/sup\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forhun%2Fratty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forhun%2Fratty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forhun%2Fratty/lists"}