mirror of
https://github.com/l0ng-ai/tty7.git
synced 2026-09-22 16:02:24 +00:00
27c1cdbf3f166b7d05ea55ab002ed15c917e4578
Native-SSH panes reported no OSC 133, so the inline line editor, exit-code marks and cwd tracking were all inert there — the daemon's OSC sniffer was already wired up for them and simply never received anything. Every existing integration configures a *local* process spawn (ZDOTDIR, a bash --rcfile, fish's -C). An SSH channel offers no spawn to configure, only the string an `exec` request carries, so the remote path recreates those same files on the remote side and execs through them. The integration bodies are reused verbatim rather than forked. The bootstrap can't be shell-agnostic: sshd runs it as `$SHELL -c <string>`, so a POSIX script is parsed by fish and a fish script by zsh. Rather than contort one expression into parsing identically everywhere, spend a probe round-trip (`echo __tty7_shell; echo $SHELL` — no substitution, assignment or grouping, so it is valid in all of them) and then emit the dialect we know we are talking to. The probe is memoized on the connection key, so extra tabs to an open host cost nothing. The probe's negative answer is load-bearing: a remote whose login shell is unrecognized — or that isn't POSIX at all, where `$SHELL` echoes back unexpanded — falls through to the plain shell request it always used. Every arm ends by exec'ing the user's own shell, including the failure paths, so a remote with a read-only $TMPDIR loses the integration and not the session. zsh only gets ZDOTDIR pointed at the throwaway dir once all four redirectors are confirmed written; a half-populated dir would silently cost the user their dotfiles. The dir removes itself on the first precmd, by which point every startup file has been read. Add a per-profile switch, on by default and defaulting to on for profiles saved before it existed, for remotes we *can* integrate but shouldn't.
tty7
A terminal workbench: shells, sessions, SSH, coding agents.
Pure Rust · GPU rendering on Zed's gpui · VT core from Alacritty
English · 简体中文
Why
- Fast — ~2× the throughput of Alacritty, Ghostty, or Kitty (benchmarks)
- Sessions persist — quit or reboot; your shells keep running, no tmux
- Editor-grade input — completion, syntax highlighting, history search built in; zero config for zsh, bash, fish, PowerShell
- Agent-aware — recognizes Claude Code & co. in a pane: status, notifications, session resume
Install
Native builds for each platform on Releases:
| macOS | …-macos-arm64.dmg · …-x86_64.dmg |
drag into Applications |
| Windows | …-setup.exe · portable ….zip |
|
| Linux | …-x86_64.AppImage |
chmod +x and run — x11/wayland libs bundled |
What's inside
| Input | ghost suggestions from history · explained tab completion · syntax highlighting · multi-line editing · click places the caret · ⌃ R fuzzy history |
| Window | tabs & splits · ⌘ P palette · ⌘ F scrollback search · eight themes · IME |
| Coding agents | per-pane agent detection (~17 CLIs): status dot, notifications, branch + diff, resume after reboot, tray icon that signals "needs your input" |
| SSH | native russh stack: profiles with keychain secrets, SFTP panel, port forwarding, jump hosts |
Details for every row: docs/features.md. Keybindings: ⌘ , opens Settings — browse and remap everything, tmux preset included (full list).
Benchmarks
Same machine, same day, same 155×40 grid — Apple M1 Pro, macOS 26.3.1, five-run averages (2026-07-04):
| tty7 | Alacritty | Ghostty | Kitty | |
|---|---|---|---|---|
Plaintext IO — 11 MB cat (lower = better) |
95 ms | 239 ms | 179 ms | 185 ms |
| DOOM-fire frame rate (higher = better) | 888 fps | 485 fps | 552 fps | 617 fps |
| Cold-launch memory | 116 MB¹ | 105 MB | 128 MB | 130 MB |
¹ GUI 105 MB + the persistent daemon 11 MB.
Methodology and one-command reproduction: scripts/bench/.
Built on gpui and alacritty_terminal · Apache-2.0 · Discord · Changelog
Description
A terminal workbench in pure Rust: shells, persistent sessions, SSH, coding agents. GPU-rendered on Zed's gpui, VT core from Alacritty.
ai-agentsalacrittyclaude-codecoding-agentcross-platformdaemondeveloper-toolsgpugpuilinuxmacosptyrustshellsshterminalterminal-emulatorterminal-multiplexertmuxwindows
Readme
Apache-2.0
35 MiB
Languages
Rust
99.1%
Shell
0.5%
PowerShell
0.2%
Inno Setup
0.1%