Ghostty Session Manager
Launch AI-ready terminal environments with one command
Install • Usage • Layouts • Config
gpane creates pre-configured Ghostty terminal windows for your projects — multiple panes, each running the command you want, all from a single invocation.
gpane myproject # Opens configured layout with Claude, Aider, shell, etc.
gpane # Interactive picker — type "1 3 5" to open multiple projectsNo more manually opening terminals, splitting panes, navigating to directories, and launching tools.
Homebrew (recommended):
brew install minorole/tap/gpaneOne-liner:
curl -sSL https://raw.githubusercontent.com/minorole/gsx/main/install.sh | bashFrom source
git clone https://github.com/minorole/gsx.git
cd gsx && ./install.shRequirements
- macOS (uses AppleScript for window management)
- Ghostty terminal
- zsh
- Accessibility permission for your terminal (System Settings → Privacy & Security → Accessibility)
Upgrading from gsx?
In v0.2.4, gsx was renamed to gpane to avoid conflict with Ghostscript.
Just run the installer — it automatically migrates your installation:
curl -sSL https://raw.githubusercontent.com/minorole/gsx/main/install.sh | bashYour config is preserved. The old gsx command still works (shows a daily reminder to use gpane).
First-time setup:
gpane setupThe wizard asks for your projects folder, default layout, and commands for each pane.
Launch a session:
gpane # Interactive picker
gpane myproject # Open in new window
gpane myproject --here # Open in current Ghostty window
gpane myproject --new-window # Override current_window config
gpane myproject --dry-run # Preview without opening windows
# Nested projects — works from any directory
cd ~/monorepo && gpane frontendPer-project config:
gpane setup myproject # Override layout/commands for this projectOther commands:
gpane list # List all projects
gpane config # Show current configuration
gpane help # Show help
gpane version # Show version| Preset | Panes | Description |
|---|---|---|
duo |
2 | Side-by-side |
trio |
3 | Three columns |
stacked |
2 | Top and bottom |
quad |
4 | 2×2 grid |
dashboard |
4 | 1 main top, 3 below |
wide |
4 | 3 top, 1 bottom |
main-side |
3 | 1 main left, 2 stacked on the right |
side-main |
3 | 2 stacked on the left, 1 main right |
Row notation — numbers separated by dashes, each number = panes in that row. Commands run left-to-right in each row, then top-to-bottom:
2-2 → 4 panes (2 top, 2 bottom)
1-3 → 4 panes (1 top, 3 bottom)
1-2-1 → 4 panes (1 top, 2 middle, 1 bottom)
3-3-3 → 9 panes (3×3 grid)
2-2-5-1 → 10 panes
Column notation — numbers separated by pipes, each number = panes in that column. Commands run top-to-bottom in each column, then left-to-right:
1|2 → 3 panes (1 left, 2 right)
2|1 → 3 panes (2 left, 1 right)
2|3|1 → 6 panes (2 left, 3 middle, 1 right)
Max 10 panes, max 4 rows or columns.
Config lives at ~/.config/gpane/config.yaml (new installs) or ~/.config/gsx/config.yaml (existing users):
projects_root: ~/Projects
default_layout: quad
current_window: true
# Commands for each pane:
# - row layouts: left-to-right, then top-to-bottom
# - column layouts: top-to-bottom, then left-to-right
default_commands:
- "claude"
- "aider"
- "npm run dev"
- ""
# Per-project overrides
projects:
my-web-app:
layout: dashboard
commands:
- "claude"
- "npm run dev"
- "npm test"
- "tail -f logs"
simple-project:
layout: duo
commands:
- "claude"
- ""projects_root is the default folder gpane searches for gpane list, the interactive picker, and project names like gpane myproject. It does not block absolute paths, relative paths such as ./frontend, or the current-directory fallback for nested projects.
Set current_window: true to make launches reuse the current Ghostty window by default, the same behavior as gpane myproject --here.
gpane uninstallRemoves program files and symlink. Optionally removes your config.
MIT — see LICENSE
Built for Ghostty by Mitchell Hashimoto.
Inspired by the friction of setting up AI coding environments every. single. time.
