sesh alternative

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.

tmux
iTerm2
WezTerm

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.

tmux
iTerm2
WezTerm

Discovery model comparison

Both sesh and son help you find projects quickly. But they take different approaches to building and ranking your project list.

Aspectsonsesh
Project discoveryAuto-scans dev directoriesConfigurable directory scan
Ranking algorithmFrecency (frequency + recency)Alphabetical / recent sessions
Search methodBuilt-in fzf integrationfzf / tmux popup
New project detectionAutomatic on next runAutomatic on next run
Non-project directoriesProject roots onlyAny tmux session name
Configuration requiredNone (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.

# sesh config
[[session]]
name = "api"
path = "~/projects/api"
startup_command = "npm run dev"

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.

# .son.toml
[hooks]
startup = ["npm run dev"]
[editor]
command = "cursor"

Full feature comparison

Featuresonsesh
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