Documentation
Architecture
Fastty is written in Rust using GPUI and the Alacritty terminal parser. It uses a low-level Paint API with strict monospace cell advance (force_width). Block characters (U+2580..=U+259F) and box-drawing lines (U+2500..=U+257F) use geometric synthesis to prevent hairline gaps.
Installation
Install pre-built release binaries for your operating system:
macOS & Linux
curl -fsSL https://raw.githubusercontent.com/diegoleteliers10/fasty/main/instalar.sh | bashWindows (PowerShell)
irm https://raw.githubusercontent.com/diegoleteliers10/fasty/main/instalar.ps1 | iexBuild from source
git clone https://github.com/diegoleteliers10/fasty.git
cd fasty
cargo build --releaseCLI Usage & AI Agent Integration
Launch Fastty and automate sessions from scripts or AI coding agents:
fastty [OPTIONS] [-- <CMD>...]-d, --dir, --working-directory <DIR>: Set starting directory.-t, --title <TITLE>: Set initial tab and window title.-e, --exec, --command <CMD...>: Execute command with arguments.-- <CMD...>: Pass trailing command directly.-v, --version: Print version information.-h, --help: Print help options.
AI Agent Example
fastty --title "Dev Server" -d ~/api -e bun run devCore Features
- Command Palette:
⌘P/Ctrl+Shift+Pfor searchable actions. - Project Jumper:
⌘J/Ctrl+Shift+Jfor quick directory navigation. - Git Worktree Switcher:
⌘⌥W/Ctrl+Alt+Wto switch worktrees instantly. - SSH Host Manager:
⌘O/Ctrl+Shift+Oto connect to known SSH hosts. - In-Buffer Search:
⌘F/Ctrl+Fwith regex match navigation. - Smart Token Detection: Automatic underline and click actions for URLs, file paths, and hex colors.
- Tab Management: Horizontal tabs or vertical tab sidebar (
⌘B), drag tear-out into standalone windows. - Prompt Navigation: Jump between commands with
⌘⇧↑and⌘⇧↓via semantic shell integration. - Synchronized Output: DEC Mode 2026 support for flicker-free TUI rendering.
- Full IME & Latin Dead Keys: Native composition for international inputs.
Split Panes
Divide any tab into multiple terminal panes:
- Split Right:
⌘D(macOS) /Ctrl+Shift+E(Linux/Windows) - Split Down:
⌘⇧D(macOS) /Ctrl+Shift+D(Linux/Windows) - Navigate Panes:
⌘⌥Left / Right / Up / Down(macOS) /Alt+Left / Right / Up / Down(Linux/Windows) - Close Active Pane:
⌘W(macOS) /Ctrl+Shift+W(Linux/Windows) - Close Entire Tab:
⌘⇧W(macOS) /Ctrl+Shift+Q(Linux/Windows)
Bottombar Widgets
Fastty includes an extensible status bar with live widgets:
git: Active git branch and dirty status.git-actions: Status of GitHub Actions runs.git-prs: Active open Pull Requests count.git-sync: Ahead and behind commit counter.kube: Active Kubernetes context and namespace.aws: Current AWS profile and region.time: Clock with configurable format and timezone.command: Custom shell command output with optionalon_clickhandler.
Snippets System
Fastty expands snippets in place when you press Tab at the prompt. Snippets are stored in ~/.config/fastty/snippets.toml and reload automatically on save.
Placeholders support jump indices and default values:
$1, $2, ...: Jump markers.${1:default}: Placeholder with default text.$0: Final cursor destination.
[snippet]
gst = "git status -sb"
gco = "git checkout $1"
gcm = "git commit -m \"${1:commit message}\""
pr = "gh pr create --title \"${1:title}\" --body \"${2:body}\""Configuration Guide
Fastty searches for configuration in this order:
./fastty.toml(Current directory, portable mode)/etc/fastty/fastty.toml(System-wide)~/.config/fastty/fastty.toml(macOS/Linux user config) or%APPDATA%\fastty\config\fastty.toml(Windows)
theme = "default"
opacity = 1.0
scrollback = 10000
session_restore = true
copy_on_select = false
notify_on_command_finish = true
tab_layout = "horizontal" # or "vertical"
option_as_meta = false # true treats Option key as Alt (macOS)
[font]
family = "monospace"
size = 14.0
weight = 400.0
ligatures = true
[cursor]
shape = "beam" # "beam", "block", "underline", or "hollow_block"
blink = true
[bottombar]
widgets = [
{ type = "git", align = "left", interval_ms = 1000 },
{ type = "kube", align = "left" },
{ type = "aws", align = "left" },
{ type = "command", name = "node", command = "node -v", align = "right" },
{ type = "time", align = "right", format = "%H:%M:%S" }
]
[keybindings]
"super+d" = "SplitRight"
"super+shift+d" = "SplitDown"Custom Themes
Add custom themes as JSON files into ~/.config/fastty/themes/<name>.json. Each theme defines 18 hex color slots:
{
"background": "#080808",
"foreground": "#e5e2e1",
"black": "#1c1b1b",
"red": "#ff5555",
"green": "#50fa7b",
"yellow": "#f1fa8c",
"blue": "#bd93f9",
"magenta": "#ff79c6",
"cyan": "#8be9fd",
"white": "#bfbfbf",
"bright_black": "#4d4d4d",
"bright_red": "#ff6e6e",
"bright_green": "#69ff94",
"bright_yellow": "#ffffa5",
"bright_blue": "#d6acff",
"bright_magenta": "#ff92df",
"bright_cyan": "#a4ffff",
"bright_white": "#ffffff"
}Keyboard Shortcuts Reference
| Action | macOS | Linux / Windows |
|---|---|---|
| New Tab | ⌘T | Ctrl+Shift+T |
| Close Pane | ⌘W | Ctrl+Shift+W |
| Close Tab | ⌘⇧W | Ctrl+Shift+Q |
| Split Right | ⌘D | Ctrl+Shift+E |
| Split Down | ⌘⇧D | Ctrl+Shift+D |
| Navigate Panes | ⌘⌥Left / Right / Up / Down | Alt+Left / Right / Up / Down |
| Next / Prev Tab | ⌘⇧] / ⌘⇧[ or Ctrl+Tab | Ctrl+Tab / Ctrl+Shift+Tab |
| Select Tab 1-9 | ⌘1 .. ⌘9 | Alt+1 .. Alt+9 |
| Toggle Tab Sidebar | ⌘B | Ctrl+Shift+B |
| Command Palette | ⌘P | Ctrl+Shift+P |
| SSH Manager | ⌘O | Ctrl+Shift+O |
| Project Jumper | ⌘J | Ctrl+Shift+J |
| Git Worktrees | ⌘⌥W | Ctrl+Alt+W |
| Jump to Prev / Next Prompt | ⌘⇧↑ / ⌘⇧↓ | Ctrl+Shift+Up / Ctrl+Shift+Down |
| In-Buffer Search | ⌘F | Ctrl+F |
| Settings | ⌘, / ⌘S | Ctrl+, / Ctrl+Shift+S |
| Reload Config | ⌘R | Ctrl+Shift+R / F5 |
| Clear Scrollback | ⌘K | Ctrl+Shift+K |
| Zoom In / Out / Reset | ⌘+ / ⌘- / ⌘0 | Ctrl++ / Ctrl+- / Ctrl+0 |
Benchmarks
Criterion parser benchmark results on Apple Silicon M-series:
- Plain text parsing: 23.82 µs
- SGR ANSI sequences: 40.87 µs
- Complex mixed output: 23.41 µs
- Idle CPU consumption: <0.7%