Kitty Claude Session Manager — manage named kitty terminal sessions with Claude and a shell, using either a split layout (Claude on top, shell on bottom) or a tab layout (separate tabs).
The main view lists all sessions with their status and working directory.
Press n to open the repository picker. Browse all configured repos or type to fuzzy-filter.
Select a session and press o to open it. Each session opens Claude Code and a shell — as a horizontal split (default) or as separate tabs.
Press ? to see all available keybindings.
make install # builds and copies ks to ~/code/bin/ks # launch interactive session managerTUI keybindings:
j/kNavigate sessionso / enterOpen or focus sessionnCreate new session (opens repo picker)cClose tab (keep session)dDelete session/Fuzzy search?Toggle helpqQuit
ks new -n <name> [-d <dir>] # create session
ks open <name> # focus or recreate session
ks close <name> [--keep] # close session tab
ks list # list all sessions
ks version # print version
ks repo # fuzzy repo finder
ks repo --list # list all repos
ks repo --json # list all repos as JSON
ks repo --toon # list all repos as TOON (token-optimized for LLMs)ks repo supports multiple output formats for different consumers:
| Flag | Format | Use case |
|---|---|---|
| (none) | Interactive fuzzy finder | Human — pick a repo |
--list |
TSV (name\tpath) |
Shell scripts, piping |
--json |
JSON array | Structured tooling |
--toon |
TOON | LLMs (30-60% fewer tokens than JSON) |
--json example:
[
{
"name": "mad01/kitty-session",
"path": "/Users/you/code/src/github.com/mad01/kitty-session"
}
]--toon example:
repos[1]{name,path}:
mad01/kitty-session,/Users/you/code/src/github.com/mad01/kitty-session
Add to your shell config to jump to a repo:
repo() { local d=$(ks repo); [[ -n "$d" ]] && cd "$d"; }Configuration lives in ~/.config/ks/config.yaml:
dirs:
- ~/code/src/github.com/mad01
- ~/workspace
layout: split # "split" (default) or "tab"
tmpdir: ~/.config/ks/claude-session-workspaces # optionaldirs— parent directories to scan for repositorieslayout—splitputs Claude and shell in a horizontal split (Claude on top 30%, shell on bottom 70%).tabcreates separate kitty tabs for Claude and shell within the same OS window.tmpdir— base directory for scratch sessions created via thetmppicker item. Defaults to the OS temp directory when unset. Setting a custom path (e.g.~/.config/ks/claude-session-workspaces) keeps scratch workspaces in a predictable location that won't be cleaned up by the OS.




