{"id":51652216,"url":"https://github.com/l0ng-ai/tty7","last_synced_at":"2026-07-15T08:00:57.182Z","repository":{"id":369819553,"uuid":"1291034571","full_name":"l0ng-ai/tty7","owner":"l0ng-ai","description":"A GPU-rendered, daemon-backed terminal in pure Rust. Built on Zed's gpui and Alacritty's VT core.","archived":false,"fork":false,"pushed_at":"2026-07-14T05:19:05.000Z","size":4117,"stargazers_count":71,"open_issues_count":1,"forks_count":7,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-14T06:08:47.237Z","etag":null,"topics":["alacritty","cross-platform","daemon","developer-tools","gpu","gpu-acceleration","gpui","linux","macos","pty","rust","rust-lang","shell","terminal","terminal-emulator","tmux-alternative","windows"],"latest_commit_sha":null,"homepage":"https://github.com/l0ng-ai/tty7/releases/latest","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/l0ng-ai.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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}},"created_at":"2026-07-06T12:51:10.000Z","updated_at":"2026-07-14T05:00:50.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/l0ng-ai/tty7","commit_stats":null,"previous_names":["l0ng-ai/tty7"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/l0ng-ai/tty7","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l0ng-ai%2Ftty7","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l0ng-ai%2Ftty7/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l0ng-ai%2Ftty7/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l0ng-ai%2Ftty7/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/l0ng-ai","download_url":"https://codeload.github.com/l0ng-ai/tty7/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/l0ng-ai%2Ftty7/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35496719,"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-07-15T02:00:06.706Z","response_time":131,"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":["alacritty","cross-platform","daemon","developer-tools","gpu","gpu-acceleration","gpui","linux","macos","pty","rust","rust-lang","shell","terminal","terminal-emulator","tmux-alternative","windows"],"created_at":"2026-07-14T05:00:27.011Z","updated_at":"2026-07-15T08:00:57.141Z","avatar_url":"https://github.com/l0ng-ai.png","language":"Rust","funding_links":[],"categories":["ターミナルアプリ","Apps"],"sub_categories":["データベース","Developer Tools"],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"assets/app-icon.svg\" alt=\"tty7\" width=\"88\" height=\"88\" /\u003e\n\n### tty7\n\n**A GPU-rendered terminal in pure Rust.**\n\n\u003csub\u003eGPU rendering on Zed's gpui · VT core from Alacritty\u003c/sub\u003e\n\n\u003cbr /\u003e\n\n[![CI](https://github.com/l0ng-ai/tty7/actions/workflows/ci.yml/badge.svg)](https://github.com/l0ng-ai/tty7/actions/workflows/ci.yml)\n[![Version](https://img.shields.io/github/v/tag/l0ng-ai/tty7?label=version\u0026color=ff8a5c)](https://github.com/l0ng-ai/tty7/releases)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)\n[![Discord](https://img.shields.io/badge/Discord-join%20chat-5865F2?logo=discord\u0026logoColor=white)](https://discord.gg/s3dethqz2V)\n\n[**Why tty7**](#why-tty7) · [**Install**](#install) · [**Features**](#features) · [**Benchmarks**](#benchmarks) · [**Keybindings**](#keybindings)\n\n\u003csub\u003eEnglish · [简体中文](README.zh-CN.md)\u003c/sub\u003e\n\n\u003c/div\u003e\n\n## Why tty7\n\n- **Fast** — about 2× the throughput of Alacritty, Ghostty, or Kitty on the\n  same hardware ([benchmarks](#benchmarks))\n- **A modern prompt** — completion, syntax highlighting, and history search\n  built in; no plugins to assemble\n- **Sessions that survive** — close the window or quit the app, your shells\n  keep running; no tmux\n- **Zero config** — zsh, bash, fish, and PowerShell work out of the box\n\nNative builds for macOS, Windows, and Linux ship with every release.\n\n## Install\n\nDownload the build for your platform from\n[**Releases**](https://github.com/l0ng-ai/tty7/releases):\n\n- **macOS** — `tty7-\u003cversion\u003e-macos-arm64.dmg` (Apple Silicon) or `…-x86_64.dmg`\n  (Intel); open it and drag `tty7.app` into Applications.\n- **Windows** — `…-windows-x86_64-setup.exe` (installer: Start Menu shortcut +\n  uninstall entry), or `…-windows-x86_64.zip` (portable: unzip and run\n  `tty7.exe`).\n- **Linux** — `…-linux-x86_64.AppImage` (recommended: bundles the x11/wayland\n  libraries, so it runs on Fedora / Arch / etc. with no extra packages —\n  `chmod +x` and run), or `…-linux-x86_64.tar.gz` (bare binary; extract and run\n  `./tty7`, needs the usual x11/wayland runtime libraries installed).\n\n## Features\n\n### At the prompt\n\n- **Ghost suggestions** — your history completes the whole line as you type; \u003ckbd\u003e→\u003c/kbd\u003e to accept\n- **Tab completion that explains** — every flag and subcommand with its description, for ~100 common commands\n- **Syntax highlighting** — as you type, nothing to install\n- **Fuzzy history search** — \u003ckbd\u003e⌃ R\u003c/kbd\u003e shows what you ran, where, and whether it failed\n- **History from day one** — your existing shell history just works, and carries across sessions\n- **Real line editing** — selection, word motion, undo\n\n### In the window\n\n- **Tabs \u0026 splits** — always open in the current directory\n- **Command palette** \u003ckbd\u003e⌘ P\u003c/kbd\u003e · scrollback search \u003ckbd\u003e⌘ F\u003c/kbd\u003e\n- **⌘-click links** · desktop notifications\n- **Eight themes** · CJK / IME input\n\n### CLI coding agents\n\ntty7 recognizes third-party coding agents running in a pane (Claude Code,\nCodex, Gemini CLI, Aider, Amp, OpenCode, and ~10 more) and enriches them — it\nnever wraps or replaces the agent.\n\n- **Brand avatars** — the tab chip / sidebar row shows which agent runs where; custom wrappers map in via `agent_commands` in `config.json`\n- **Live status dot** — working (blue) / needs your input (amber) / done (green), driven by agent-reported events over an OSC channel; run *Agent: Install Claude Code Hooks* from the palette to wire Claude Code up\n- **Notifications that matter** — \"needs your permission…\" the moment an agent blocks on you, and \"finished after Ns\" per turn, honoring your notification policy\n- **Branch at a glance** — each sidebar row shows its pane's git branch and working-tree diff (`+N −M`), refreshed on `cd` and when a command finishes\n- **Session resume** — panes lost to a reboot re-launch their agent conversation (`claude --resume …`) on restore (`restore_agent_sessions`, on by default)\n- **Context feed** — palette commands send the current selection or the repo's `git diff` to the running agent as a ready-made prompt\n\n### SSH connection manager\n\nA native Rust SSH stack (russh) is the **only** path — profiles, credentials,\nand SFTP without ever shelling out to `ssh`. There is no system-ssh compat mode.\n\n- **QuickConnect** — type `user@host[:port]` in the palette and connect; IPv6 `[::1]:port` supported\n- **Saved profiles** — full connection config with passwords / passphrases in the OS keychain, never on disk\n- **`~/.ssh/config` aliases** — type one to connect (resolved natively — common fields, best-effort — over russh), or import them as profiles in Settings\n- **GUI auth** — in-pane sheets for password, key passphrase, 2FA, and host-key confirmation (new vs. changed)\n- **Built-in SFTP** — a slide-in file panel: browse, upload / download, rename / delete / chmod, drag to Finder\n- **Port forwarding** — Local / Remote / Dynamic, preconfigured or added live, plus ⌘-click `localhost:PORT` to auto-forward\n- **Jump hosts \u0026 proxies** — multi-hop via profile references or `ProxyJump`, ProxyCommand, SOCKS5 / HTTP\n\n| Entry point | Connects via |\n|---|---|\n| Saved profiles · QuickConnect · typed `user@host[:port]` | Native russh — SFTP · keychain · GUI auth · L/R/D forwards |\n| `~/.ssh/config` aliases | Resolved natively, then russh (`Match`/canonicalize/GSSAPI unsupported — no fallback) |\n\n## Benchmarks\n\nAll four terminals measured back-to-back on the same machine, same day, same\n155×40 grid — Apple M1 Pro, macOS 26.3.1, five-run averages (2026-07-04):\n\n| | **tty7** | Alacritty | Ghostty | Kitty |\n|---|---:|---:|---:|---:|\n| Plaintext IO — 11 MB `cat` \u003csub\u003e(lower = better)\u003c/sub\u003e | **95 ms** | 239 ms | 179 ms | 185 ms |\n| [DOOM-fire](https://github.com/const-void/DOOM-fire-zig) frame rate \u003csub\u003e(higher = better)\u003c/sub\u003e | **888 fps** | 485 fps | 552 fps | 617 fps |\n| Cold-launch memory | 116 MB¹ | 105 MB | 128 MB | 130 MB |\n\n\u003csub\u003e¹ GUI 105 MB + the persistent daemon 11 MB.\u003c/sub\u003e\n\nWhere the speed comes from:\n\n- The PTY is read at device speed and parsed in large batches, off the render path\n- Hot paths are lock-free — a big `cat` never waits on drawing\n- The daemon buffers up to 16 MiB ahead of the window before backpressure applies\n\nMethodology (how each terminal is driven, grid fairness, known pitfalls) and\none-command reproduction live in [`scripts/bench/`](scripts/bench/README.md) —\nrun it yourself.\n\n## Keybindings\n\nKeys are shown in macOS notation — on Windows and Linux, read \u003ckbd\u003e⌘\u003c/kbd\u003e as\n\u003ckbd\u003eCtrl\u003c/kbd\u003e. Open Settings with \u003ckbd\u003e⌘ ,\u003c/kbd\u003e to browse or remap them all.\nThe essentials:\n\n| | |\n|---|---|\n| \u003ckbd\u003e⌘ T\u003c/kbd\u003e · \u003ckbd\u003e⌘ W\u003c/kbd\u003e · \u003ckbd\u003e⌘ ⇧ T\u003c/kbd\u003e | new tab · close tab · reopen closed tab |\n| \u003ckbd\u003e⌘ 1\u003c/kbd\u003e…\u003ckbd\u003e⌘ 9\u003c/kbd\u003e · \u003ckbd\u003e⌃ ⇥\u003c/kbd\u003e · \u003ckbd\u003e⌃ ⇧ ⇥\u003c/kbd\u003e | jump to tab 1–9 · next tab · previous tab |\n| \u003ckbd\u003e⌘ D\u003c/kbd\u003e · \u003ckbd\u003e⌘ ⇧ D\u003c/kbd\u003e | split right · split down |\n| \u003ckbd\u003e⌘ ]\u003c/kbd\u003e · \u003ckbd\u003e⌘ [\u003c/kbd\u003e | next pane · previous pane |\n| \u003ckbd\u003e⌘ ⌥ ←→↑↓\u003c/kbd\u003e | focus the pane in that direction |\n| \u003ckbd\u003e⌘ ⏎\u003c/kbd\u003e · \u003ckbd\u003e⌘ ⇧ ⏎\u003c/kbd\u003e | toggle fullscreen · maximize / restore the pane |\n| \u003ckbd\u003e⌘ K\u003c/kbd\u003e | clear the screen and scrollback |\n| \u003ckbd\u003e⌘ P\u003c/kbd\u003e | command palette |\n| \u003ckbd\u003e⌘ F\u003c/kbd\u003e | search the scrollback |\n| \u003ckbd\u003e⌃ R\u003c/kbd\u003e | fuzzy-search shell history |\n| \u003ckbd\u003e⌘ +\u003c/kbd\u003e · \u003ckbd\u003e⌘ −\u003c/kbd\u003e · \u003ckbd\u003e⌘ 0\u003c/kbd\u003e | font size up · down · reset |\n\n**Settings → Keybindings** lists every shortcut. Click one, press the new keys\n(\u003ckbd\u003eEsc\u003c/kbd\u003e cancels, \u003ckbd\u003eBackspace\u003c/kbd\u003e resets to default), and it takes\neffect immediately. Pane resize and swap have no default keys — bind them here or\nrun them from the command palette. Prefer tmux muscle memory? Flip the **tmux**\npreset to remap pane/tab actions onto a prefix (default \u003ckbd\u003e⌃ B\u003c/kbd\u003e): \u003ckbd\u003e⌃ B\u003c/kbd\u003e\n\u003ckbd\u003eC\u003c/kbd\u003e opens a tab, \u003ckbd\u003e⌃ B\u003c/kbd\u003e \u003ckbd\u003e%\u003c/kbd\u003e splits, \u003ckbd\u003e⌃ B\u003c/kbd\u003e then an\narrow moves focus. A bare prefix reaches the shell after a brief pause, and\n`prefix` + an unbound key is passed straight through to the terminal.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\u003csub\u003e\n\nBuilt on [gpui](https://github.com/zed-industries/zed) and [`alacritty_terminal`](https://github.com/zed-industries/alacritty) · [Apache-2.0](LICENSE) · [Discord](https://discord.gg/s3dethqz2V) · [Changelog](CHANGELOG.md)\n\n\u003c/sub\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fl0ng-ai%2Ftty7","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fl0ng-ai%2Ftty7","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fl0ng-ai%2Ftty7/lists"}