A macOS CLI that saves and restores cmux and Ghostty terminal workspaces, including layouts, working directories, and AI coding sessions.
joshmedeski/sesh
A Go CLI that creates and switches tmux sessions quickly by naming and jumping to projects via zoxide, git repos, and config.
- Stars
- 2,925
- Forks
- 139
- Open issues
- 52
- Last commit
- 23 hours ago
What is it?
Sesh is a command-line tool for managing tmux sessions. It automatically names a new session after a git repository, git remote, or directory, and it can jump to frequently used projects tracked by zoxide. Running sesh connect creates the session if it does not exist yet, then attaches to it.
Session setup can be defined per project in a sesh.toml file. Each entry can set startup commands, windows, and preview commands, and wildcard patterns can apply the same settings to every matching directory. Sesh also includes a built-in interactive picker and can be driven from fzf, television, or gum.
Additional commands cover cloning a git repo and connecting to it, creating a directory and connecting, switching between the two most recent sessions, and jumping to the root of a git worktree or repository. Shell completions are provided for Bash, Zsh, Fish, and PowerShell.
Key features
- 01Automatically names sessions from git repo, remote, or directory.
- 02Jumps to frequently used directories via zoxide integration.
- 03Defines per-project startup commands and windows in sesh.toml, with wildcard patterns.
- 04Built-in picker, or integration with fzf, television, and gum.
- 05Switches between the two most recent sessions and navigates to git worktree roots.
Use cases
- Switching between many project repositories, each as its own tmux session.
- Binding a popup picker to a tmux key for fast session selection.
- Starting a project with preset windows and commands every time it is opened.
- Cloning a repo or creating a new directory and opening it in tmux in one step.
Quick start
- 1
Install sesh with Homebrew
brew install sesh - 2
Make sure tmux and zoxide are set up first
- 3
Connect to or create a session
sesh connect {session}
Things to know
- Requires tmux and zoxide to be installed and set up first.
In collections
Topics
FAQ
- What is sesh?
- A Go CLI that creates and switches tmux sessions quickly by naming and jumping to projects via zoxide, git repos, and config. Sesh is a command-line tool for managing tmux sessions. It automatically names a new session after a git repository, git remote, or directory, and it can jump to frequently used projects tracked by zoxide. Running sesh connect creates the session if it does not exist yet, then attaches to it.
- Is sesh free to use? What license does it have?
- sesh is open source under the MIT license. Check the license terms before using it in commercial products.
- Is sesh still maintained?
- Actively maintained. The last commit to sesh was on Nov 6, 2026.
- What can I use sesh for?
- Switching between many project repositories, each as its own tmux session. Binding a popup picker to a tmux key for fast session selection. Starting a project with preset windows and commands every time it is opened. Cloning a repo or creating a new directory and opening it in tmux in one step.
- How do I install sesh?
- Install sesh with Homebrew: brew install sesh Make sure tmux and zoxide are set up first Connect to or create a session: sesh connect {session}
- Where can I get sesh?
- The source code and installation instructions are on GitHub: https://github.com/joshmedeski/sesh
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A self-contained, themeable tmux configuration with a Powerline-style status line, mouse mode, clipboard integration and TPM plugin support.
A native Windows terminal multiplexer written in Rust that brings tmux commands and .tmux.conf support to PowerShell and cmd.exe.
A cross-platform terminal multiplexer engine in Rust with typed SDKs for Rust, Python, and TypeScript to drive CLI and TUI apps from code.
A Go CLI for tmux that saves sessions, windows, panes and commands, then restores them lazily from a TUI picker.
A tmux-style terminal multiplexer whose background server can be driven from scripts and coding agents via JSON CLI commands.