l0ng-ai 6803db4240 feat(ssh): profile model, keychain vault, and ssh_config import (WS1 data layer)
Add the connection-manager data layer per PRD §7:

- core::ssh_profile: the SshProfile model (connection/auth/forwarding/session/
  advanced fields, uuid ids), HostPort/AuthMode/ForwardRule/Algorithms, and
  QuickConnect parsing (parse_quick_connect / to_connect_string, IPv6-bracket
  and @-in-username aware) plus %h/%r identity-file placeholder expansion.
- core::keychain: a CredentialStore trait over the OS keychain (keyring 4.x)
  with an in-memory test store, endpoint-keyed entries (tty7-ssh / tty7-ssh-key
  per PRD §7.2), and a secret-free CredentialRef persisted in config.
- core::ssh_config: import_profiles/merge_imported resolve common ssh_config
  fields (HostName/User/Port/IdentityFile/ProxyJump/ProxyCommand/ForwardAgent)
  with first-match-wins incl. wildcard fallbacks; Match/canonicalize skipped.
  discover_profiles is untouched. Import is repeatable/idempotent.
- Config gains #[serde(default)] ssh_profiles: Vec<SshProfile>.

Unit tests cover quick-connect parsing (IPv6/@/port bounds), placeholder
expansion, profile+config serde round-trip through disk, ssh_config import
parsing, and keychain mock behavior.
2026-07-14 00:02:03 +08:00
2026-07-11 19:14:19 +08:00

tty7

tty7

A GPU-rendered terminal in pure Rust.

GPU rendering on Zed's gpui · VT core from Alacritty


CI Version License Discord

Why tty7 · Install · Features · Benchmarks · Keybindings

English · 简体中文

Why tty7

  • Fast — about 2× the throughput of Alacritty, Ghostty, or Kitty on the same hardware (benchmarks)
  • A modern prompt — completion, syntax highlighting, and history search built in; no plugins to assemble
  • Sessions that survive — close the window or quit the app, your shells keep running; no tmux
  • Zero config — zsh, bash, fish, and PowerShell work out of the box

Native builds for macOS, Windows, and Linux ship with every release.

Install

Download the build for your platform from Releases:

  • macOStty7-<version>-macos-arm64.dmg (Apple Silicon) or …-x86_64.dmg (Intel); open it and drag tty7.app into Applications.
  • Windows…-windows-x86_64-setup.exe (installer: Start Menu shortcut + uninstall entry), or …-windows-x86_64.zip (portable: unzip and run tty7.exe).
  • Linux…-linux-x86_64.AppImage (recommended: bundles the x11/wayland libraries, so it runs on Fedora / Arch / etc. with no extra packages — chmod +x and run), or …-linux-x86_64.tar.gz (bare binary; extract and run ./tty7, needs the usual x11/wayland runtime libraries installed).

Features

At the prompt

  • Ghost suggestions — your history completes the whole line as you type; to accept
  • Tab completion that explains — every flag and subcommand with its description, for ~100 common commands
  • Syntax highlighting — as you type, nothing to install
  • Fuzzy history search⌃ R shows what you ran, where, and whether it failed
  • History from day one — your existing shell history just works, and carries across sessions
  • Real line editing — selection, word motion, undo

In the window

  • Tabs & splits — always open in the current directory
  • Command palette ⌘ P · scrollback search ⌘ F
  • ⌘-click links · desktop notifications
  • Eight themes · CJK / IME input

Benchmarks

All four terminals measured back-to-back on the 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.

Where the speed comes from:

  • The PTY is read at device speed and parsed in large batches, off the render path
  • Hot paths are lock-free — a big cat never waits on drawing
  • The daemon buffers up to 16 MiB ahead of the window before backpressure applies

Methodology (how each terminal is driven, grid fairness, known pitfalls) and one-command reproduction live in scripts/bench/ — run it yourself.

Keybindings

Keys are shown in macOS notation — on Windows and Linux, read as Ctrl. Open Settings with ⌘ , to browse or remap them all. The essentials:

⌘ T · ⌘ W · ⌘ ⇧ T new tab · close tab · reopen closed tab
⌘ 1⌘ 9 · ⌃ ⇥ · ⌃ ⇧ ⇥ jump to tab 19 · next tab · previous tab
⌘ D · ⌘ ⇧ D split right · split down
⌘ ] · ⌘ [ next pane · previous pane
⌘ ⌥ ←→↑↓ focus the pane in that direction
⌘ ⏎ · ⌘ ⇧ ⏎ toggle fullscreen · maximize / restore the pane
⌘ K clear the screen and scrollback
⌘ P command palette
⌘ F search the scrollback
⌃ R fuzzy-search shell history
⌘ + · · ⌘ 0 font size up · down · reset

Settings → Keybindings lists every shortcut. Click one, press the new keys (Esc cancels, Backspace resets to default), and it takes effect immediately. Pane resize and swap have no default keys — bind them here or run them from the command palette. Prefer tmux muscle memory? Flip the tmux preset to remap pane/tab actions onto a prefix (default ⌃ B): ⌃ B C opens a tab, ⌃ B % splits, ⌃ B then an arrow moves focus. A bare prefix reaches the shell after a brief pause, and prefix + an unbound key is passed straight through to the terminal.


S
Description
A terminal workbench in pure Rust: shells, persistent sessions, SSH, coding agents. GPU-rendered on Zed's gpui, VT core from Alacritty.
Readme Apache-2.0
35 MiB
Languages
Rust 99.1%
Shell 0.5%
PowerShell 0.2%
Inno Setup 0.1%