A macOS terminal app built on Ghostty (libghostty) with workspace-based session management and persistent tmux-backed sessions.
Grab the latest signed and notarized DMG from Releases.
Requires macOS 15.0 (Sequoia) or later, Apple Silicon.
- Workspaces — Each sidebar item is an independent workspace with its own tabs, notes, and metadata. Auto-generated names (e.g., "bold-falcon") keep things identifiable.
- Persistent sessions — Workspaces are backed by tmux sessions that survive app restarts. Quit and relaunch — everything is exactly where you left it.
- Tabs and splits — Multiple tabs per workspace, each with its own tmux session. Split panes within tabs.
- Notes panel — Attach timestamped notes to any workspace, manually or via terminal escape sequences. Editable with revision history.
- Workspace URLs — Track ticket and PR URLs per workspace, settable from the UI or via shell escape sequences.
- Workspace archiving — Archive workspaces you're not actively using. Unarchive them later to pick up where you left off.
- SSH sessions — Connect to remote hosts with tmux persistence on both ends.
- Attention indicators — Background workspaces light up when a bell rings or a command finishes.
- Shell integration — Automatic zsh integration for pwd tracking through tmux, plus the
fantastty-notecommand for adding notes from the terminal.
Fantastty includes a shell integration script that adds terminal commands:
source ~/.fantastty/shell-integration/fantastty.sh
# Add a note to the current workspace
fantastty-note "deploy finished"
fn "shorter alias works too"Zsh integration (pwd tracking, escape sequence passthrough) is set up automatically when persistent sessions are enabled.
- Xcode 16+
- Zig (see
vendor/ghostty/build.zig.zonfor the required version) - XcodeGen (if regenerating the Xcode project)
# Clone with submodules
git clone --recursive https://github.com/blaine/fantastty.git
cd fantastty
# Build the GhosttyKit xcframework (takes a few minutes)
make xcframework
# Open in Xcode and build, or:
xcodebuild -scheme Fantastty -configuration Debug buildThe scripts/build-release.sh script builds a signed, notarized DMG:
# Full build with notarization (requires Developer ID certificate + notarytool credentials)
./scripts/build-release.sh
# Local testing without notarization
./scripts/build-release.sh --skip-notarizeOutput lands in build/release/Fantastty.dmg.
Fantastty is a SwiftUI app that uses Ghostty's libghostty as a static library for terminal rendering. Session persistence is handled through tmux:
- SessionManager orchestrates all workspaces, tabs, and tmux lifecycle
- Session represents a single workspace (sidebar item), keyed by a stable workspace ID
- TerminalTab represents a tab within a workspace, each backed by an independent tmux session
- TmuxManager handles tmux process creation, discovery, and cleanup
Workspace metadata (names, notes, URLs, tags) is persisted in ~/.fantastty/workspaces.json. Layout state (sidebar order, tab order, selections) is saved to ~/.fantastty/layout.json on quit and restored on launch.