{"id":45893794,"url":"https://github.com/zokrezyl/yetty","last_synced_at":"2026-06-07T00:00:52.360Z","repository":{"id":355357373,"uuid":"1227759219","full_name":"zokrezyl/yetty","owner":"zokrezyl","description":"Terminal unchained. The New Generation","archived":false,"fork":false,"pushed_at":"2026-05-29T14:58:54.000Z","size":56144,"stargazers_count":4,"open_issues_count":48,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T15:11:34.302Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://yetty.dev/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zokrezyl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"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}},"created_at":"2026-05-03T05:59:46.000Z","updated_at":"2026-05-25T18:38:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zokrezyl/yetty","commit_stats":null,"previous_names":["zokrezyl/yetty"],"tags_count":158,"template":false,"template_full_name":null,"purl":"pkg:github/zokrezyl/yetty","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zokrezyl%2Fyetty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zokrezyl%2Fyetty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zokrezyl%2Fyetty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zokrezyl%2Fyetty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zokrezyl","download_url":"https://codeload.github.com/zokrezyl/yetty/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zokrezyl%2Fyetty/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33691312,"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-05-30T02:00:06.278Z","response_time":92,"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":[],"created_at":"2026-02-27T19:51:14.476Z","updated_at":"2026-06-07T00:00:52.341Z","avatar_url":"https://github.com/zokrezyl.png","language":"C","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"\u003e **Note:** This is the repo of the new rewrite of yetty code. The old yetty code, is at https://github.com/zokrezyl/yetty-poc\n\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/pres.gif\" alt=\"Yetty demo — MSDF text, inline plots, ycat README, ygui/ymgui\" width=\"900\"\u003e\n\u003c/p\u003e\n\n# Yetty\n\nGPU-accelerated terminal with rich content. Pure C. Any language.\n\n\u003e **License:** Business Source License 1.1. Non-production use is free; production use requires a commercial license. See [LICENSE](LICENSE).\n\n\u003e **Status:** Early alpha — actively rewriting established concepts for efficiency.\n\n## Vision\n\nTerminals are stuck in the 1970s — text, maybe colors, that's it. Meanwhile, the rest of computing evolved to support rich graphics, animations, and interactive content.\n\n**Yetty changes this.** A WebGPU-powered terminal where plots, images, videos, documents, and interactive widgets live alongside text — all scrolling together as one unified surface.\n\n## Design Principles\n\n- **Pure C, FFI-first** — no hidden costs, bind from Rust, Go, Python, Swift, Kotlin\n- **Layered rendering** — text and graphics coexist, scroll together\n- **Composable primitives** — simple (SDF shapes) and complex (figures)\n- **Dirty-driven pipeline** — nothing runs unless something changed\n- **GPU resource binding** — all buffers and textures packed into minimal GPU bindings\n\n## Architecture\n\n```\nTerminal\n  ├── text-layer        libvterm (VT100/xterm)\n  ├── ydraw-layer       SDF primitives: circles, boxes, lines, glyphs\n  └── figure container  the compositor — renders after the layers\n        └── figures: yplot · yimage · yvideo · ygui · ymgui · yrdawn ·\n                     ydiagram · ysvg · ypdf · yvnc · ...\n```\n\nA **figure** is a composite that integrates with the terminal grid: it\nscrolls with text, shares the GPU resource model, and can be nested (figures may\ncontain other figures). The terminal renders two real layers (text and ydraw)\nplus a `yfigure` container that hosts the rich content.\n\n\u003e Yetty is built from ~70 small C modules. See the **[Architecture \u0026 Module\n\u003e Map](docs/architecture.md)** for the complete inventory and how the pieces\n\u003e connect.\n\n## Rich Content Figures\n\nFigures are composites that integrate seamlessly with the terminal grid.\nThey scroll with text, share the GPU resource model, and can be nested.\n\n| Figure | Description | Status |\n|------|-------------|--------|\n| **yplot** | GPU-accelerated charts and data visualization | ✅ Working |\n| **yimage** | Inline images (PNG, JPEG, WebP) | ✅ Working |\n| **ygui** | Interactive widgets (buttons, menus, tables, dialogs) | ✅ Working |\n| **ymgui** | Compositor-side GUI figure | ✅ Working |\n| **yvnc** / **ydvnc** | VNC client + desktop viewer | ✅ Working |\n| **ydiagram** | Mermaid diagrams (parser + layout + render) | ✅ Working |\n| **ysvg** | SVG (Tiny 1.2) rendering | ✅ Working |\n| **ypdf** | PDF rendering (via pdfio) | ✅ Working |\n| **ycat** | MIME-dispatched content viewer | ✅ Working |\n| **yvideo** | Video playback (H.264) | 🚧 Beta |\n| **ymarkdown** | Markdown rendering/editing (WYSIWYG) | 🚧 Porting |\n| **yrich** | Documents, spreadsheets, presentations | 🚧 Porting |\n| **ymesh** | 3D mesh rendering | 🚧 Early |\n| **ythorvg** | SVG and Lottie animations (ThorVG) | 📋 Planned |\n\n## Beyond the desktop\n\nYetty is more than a renderer — it speaks to remote machines and embeds a web\nstack.\n\n| Capability | Module(s) | Status |\n|---|---|---|\n| **SSH / Telnet** | yssh, ytelnet | ✅ Working |\n| **Remote GPU rendering** | yrdawn (client + server over OSC) | ✅ Working |\n| **RPC control plane** | yctl | ✅ Working |\n| **Web rendering** | ylexbor (lexbor + QuickJS), ybrowser | 🚧 Early |\n| **RISC-V VM console** | yqemu, embedded TinyEMU | 🚧 Early |\n\n## Core Features\n\n| Feature | Description |\n|---------|-------------|\n| **MSDF fonts** | Crisp, scalable text at any zoom level |\n| **Raster fonts** | Color emoji and bitmap glyphs |\n| **SDF primitives** | GPU-rendered shapes with anti-aliasing |\n| **Tiling workspaces** | Multiple terminals with window management |\n| **Rolling scroll** | O(1) scroll — primitives never update coordinates |\n| **ytrace logging** | Switchable trace points, near-zero cost when off |\n\n## Platforms\n\n| Platform | Status |\n|----------|--------|\n| Linux | ✅ Working |\n| macOS | ✅ Working |\n| Android | ✅ Working |\n| WebAssembly | ✅ Working |\n| Windows | 🚧 In progress |\n| iOS / tvOS | 🧪 Experimental |\n\n## Building\n\nBuild targets are defined in the `Makefile`. List available targets with:\n\n```bash\nmake\n```\n\nCommon build commands:\n\n```bash\n# Desktop (Linux/macOS) - release build with tracing\nmake build-desktop-ytrace-release\n\n# WebAssembly\nmake build-webasm-ytrace-release\n\n# Android (ARM)\nmake build-android-ytrace-release\n\n# Android emulator (x86_64)\nmake build-android_x86_64-ytrace-release\n```\n\n## Usage\n\n```bash\n# Run with default shell\n./build-desktop-ytrace-release/yetty\n\n# Run with specific command\n./build-desktop-ytrace-release/yetty -e 'htop'\n```\n\n## Documentation\n\nStart with the **[Architecture \u0026 Module Map](docs/architecture.md)** for the full\npicture, then dive into a subsystem.\n\n**Overview**\n| Document | Description |\n|----------|-------------|\n| [Architecture \u0026 Module Map](docs/architecture.md) | The ~70 modules, grouped, with maturity |\n| [Design Overview](docs/design.md) | Core decisions and rationale |\n| [Contexts](docs/contexts.md) | Bootstrap chain and context structs |\n\n**Rendering**\n| Document | Description |\n|----------|-------------|\n| [Layered Rendering](docs/layered-rendering.md) | Direct-to-target layer stack and figure compositor |\n| [WebGPU Architecture](docs/webgpu-architecture.md) | WebGPU object ownership |\n| [WebGPU Concepts](docs/webgpu.md) | WebGPU primer (C) |\n| [GPU Resource Binding](docs/gpu-resource-binding.md) | Buffer packing and atlas textures |\n| [Render Pipeline](docs/render.md) | Dirty-driven upload and recompilation |\n| [ydraw](src/yetty/ydraw/README.md) | Primitives, figures, and scrolling model |\n| [Font System](src/yetty/yfont/README.md) | Glyph rendering and atlas |\n| [yfsvm](src/yetty/yfsvm/README.md) | Shader expression VM |\n| [Enhanced Plots](src/yetty/yplot/README.md) | yplot internals |\n\n**Terminal \u0026 platform**\n| Document | Description |\n|----------|-------------|\n| [Terminal Screen](docs/terminal-screen.md) | Screen state and compositing |\n| [Terminal Layers](docs/term-layers.md) | Scrolling, alt-screen, rolling rows |\n| [Platform Abstraction](docs/platform.md) | PTY, event loop, per-OS layout |\n| [Platform PTY](docs/platform-pty.md) | PTY backends |\n| [Platform Pipe](docs/platform-pipe.md) | Cross-thread input pipe |\n| [Coroutines](docs/coroutines.md) | yco / yevent concurrency |\n| [yvnc](src/yetty/yvnc/README.md) | VNC client/server |\n\n**Codegen \u0026 bindings**\n| Document | Description |\n|----------|-------------|\n| [yclass](src/yclass/README.md) | Annotation-driven classes, RPC, and the binding model |\n| [FFI Generation](docs/ffi-gen.md) | Per-language binding emitters |\n\n**Conventions \u0026 tooling**\n| Document | Description |\n|----------|-------------|\n| [C Coding Style](docs/c-coding-style.md) | Naming, structs, memory rules |\n| [Result Types](docs/result.md) | Typed error propagation |\n| [ytrace](src/yetty/ytrace/README.md) | Logging and tracing |\n| [Buck2](docs/buck2.md) | Buck2 build notes |\n\n## Contributing\n\nWe're developing intensively and moving fast. Contributions welcome:\n\n- Code and bug fixes\n- Documentation improvements\n- Testing (coverage is still limited)\n- Ideas and feedback\n\nShare suggestions on [GitHub Discussions](https://github.com/zokrezyl/yetty/discussions).\n\n## Dependencies\n\n### Core\n- **libvterm** — VT100/xterm terminal emulation (vendored)\n- **Dawn** — WebGPU implementation\n- **FreeType** — Font rasterization\n- **GLFW** — Cross-platform windowing\n- **libuv** — Async I/O and event loop\n- **libco** — Coroutines\n- **brotli** — Bundled-asset compression\n\n### Content \u0026 remote\n- **pdfio** — PDF parsing (ypdf)\n- **openh264** — H.264 video decode (yvideo)\n- **lexbor** + **QuickJS** — HTML/CSS/JS web stack (ylexbor)\n- **libssh2** — SSH backend (yssh)\n- **LZ4** — Wire-stream compression (yface)\n- **cdb** — Constant key/value database (ycdb)\n- **TinyEMU** — RISC-V VM console (vendored)\n\n### Optional / planned\n- **ThorVG** — SVG and Lottie rendering (wired in build; renderer in progress)\n\nDependencies use permissive licenses (MIT, BSD, Zlib, Apache-2.0); the optional\nNetSurf integration (`ynetsurf`) is GPL and off by default.\n\n\n---\n\n*Your terminal, unchained.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzokrezyl%2Fyetty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzokrezyl%2Fyetty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzokrezyl%2Fyetty/lists"}