son vs sesh:
Multi-Terminal Workspace Launcher
sesh is a fast tmux session connector with smart project discovery. son extends that concept to every terminal — iTerm2, WezTerm, and tmux — with editor integration, startup hooks, and custom split layouts.
tmux-first vs multi-terminal
The biggest architectural difference between sesh and son is terminal support. sesh is designed exclusively for tmux. son detects your terminal environment and adapts.
sesh: tmux-only
sesh creates and connects to tmux sessions. If you live in tmux, it's a great workflow — fast session switching with fuzzy search. But if you prefer iTerm2's native splits or WezTerm's GPU-accelerated rendering, sesh can't help.
son: any terminal
son detects whether you're running iTerm2, WezTerm, or tmux and uses the appropriate API to create split-pane workspaces. One tool, three terminals, zero lock-in.
Discovery model comparison
Both sesh and son help you find projects quickly. But they take different approaches to building and ranking your project list.
| Aspect | son | sesh |
|---|---|---|
| Project discovery | Auto-scans dev directories | Configurable directory scan |
| Ranking algorithm | Frecency (frequency + recency) | Alphabetical / recent sessions |
| Search method | Built-in fzf integration | fzf / tmux popup |
| New project detection | Automatic on next run | Automatic on next run |
| Non-project directories | Project roots only | Any tmux session name |
| Configuration required | None (zero-config) | Optional TOML config |
Startup hooks and workspace setup
When you open a project, you often need to start dev servers, activate virtual environments, or set environment variables. Here's how each tool handles this.
sesh
sesh can run a startup command when creating a new tmux session. You configure this in sesh's TOML config file with a startup_command per session. It runs a single command in the initial pane.
son
son supports startup hooks via optional .son.toml files in your project root. You can define multiple commands, specify which pane they run in, and include editor launch commands. Hooks run automatically when the workspace opens.
Full feature comparison
| Feature | son | sesh |
|---|---|---|
| Zero-config setup | ||
| Project auto-discovery | ||
| Frecency sorting | ||
| Fuzzy search (fzf) | ||
| tmux support | ||
| iTerm2 support | ||
| WezTerm support | ||
| Custom split layouts | ||
| Editor integration | ||
| Startup hooks | ||
| Per-project config | ||
| Single binary | ||
| tmux popup integration | ||
| Zoxide integration | ||
| Session last-accessed sort |
Who should choose which?
Choose sesh if...
- •You exclusively use tmux and want to stay in the tmux ecosystem
- •You want tmux popup integration for session switching with a keybinding
- •You prefer zoxide integration for directory-based session creation
- •You want the lightest-weight session connector possible
- •Your workflow is centered around switching between existing tmux sessions rather than creating new workspaces
Choose son if...
- •You use iTerm2, WezTerm, or switch between terminals
- •You want full workspace creation with split panes and layouts
- •You want your editor to launch automatically alongside terminal panes
- •You want frecency-based project sorting — your most-used repos first
- •You want startup hooks to run dev servers and setup commands automatically
- •You want a single tool that replaces tmuxinator, project switching, and workspace setup
Workspace launching beyond tmux
son gives you the project discovery of sesh, the layouts of tmuxinator, and the multi-terminal freedom to use whatever you prefer.
$ brew install abdussamet032/tap/son