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 | bash

Windows (PowerShell)

irm https://raw.githubusercontent.com/diegoleteliers10/fasty/main/instalar.ps1 | iex

Build from source

git clone https://github.com/diegoleteliers10/fasty.git
cd fasty
cargo build --release

CLI 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 dev

Core Features

  • Command Palette: ⌘P / Ctrl+Shift+P for searchable actions.
  • Project Jumper: ⌘J / Ctrl+Shift+J for quick directory navigation.
  • Git Worktree Switcher: ⌘⌥W / Ctrl+Alt+W to switch worktrees instantly.
  • SSH Host Manager: ⌘O / Ctrl+Shift+O to connect to known SSH hosts.
  • In-Buffer Search: ⌘F / Ctrl+F with 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 optional on_click handler.

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:

  1. ./fastty.toml (Current directory, portable mode)
  2. /etc/fastty/fastty.toml (System-wide)
  3. ~/.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

ActionmacOSLinux / Windows
New Tab⌘TCtrl+Shift+T
Close Pane⌘WCtrl+Shift+W
Close Tab⌘⇧WCtrl+Shift+Q
Split Right⌘DCtrl+Shift+E
Split Down⌘⇧DCtrl+Shift+D
Navigate Panes⌘⌥Left / Right / Up / DownAlt+Left / Right / Up / Down
Next / Prev Tab⌘⇧] / ⌘⇧[ or Ctrl+TabCtrl+Tab / Ctrl+Shift+Tab
Select Tab 1-9⌘1 .. ⌘9Alt+1 .. Alt+9
Toggle Tab Sidebar⌘BCtrl+Shift+B
Command Palette⌘PCtrl+Shift+P
SSH Manager⌘OCtrl+Shift+O
Project Jumper⌘JCtrl+Shift+J
Git Worktrees⌘⌥WCtrl+Alt+W
Jump to Prev / Next Prompt⌘⇧↑ / ⌘⇧↓Ctrl+Shift+Up / Ctrl+Shift+Down
In-Buffer Search⌘FCtrl+F
Settings⌘, / ⌘SCtrl+, / Ctrl+Shift+S
Reload Config⌘RCtrl+Shift+R / F5
Clear Scrollback⌘KCtrl+Shift+K
Zoom In / Out / Reset⌘+ / ⌘- / ⌘0Ctrl++ / 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%