Repolode
joshmedeski

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. 1

    Install sesh with Homebrew

    brew install sesh
  2. 2

    Make sure tmux and zoxide are set up first

  3. 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