single static go binary · zero dependencies

Every coding agent's history, unified.

Run seshy in any repo for a terminal UI of every past agent session that ran there — newest first, color-coded. Fuzzy-find it, hit Enter, you're back in the real conversation.

Beyond one repo: seshy all spans every repo on the machine, seshy search greps every agent's history, and it all pipes to JSON.

seshy — ~/repos/orchy
~/repos/orchy · 23 sessions · 7 agents
filter › deploy
2m ago claude stop the deploy. i lied in the PR description.
1h ago codex deleted prod. it's fine. it's fine. is it fine?
3h ago droid i force pushed to main and now there's a meeting about me
5h ago agy undo a force push WITHOUT anyone knowing (URGENT)
1d ago opencode the tests didn't pass. can you just delete the tests
2d ago grok i committed all the API keys to a public repo. yesterday.
↑↓ move / filter p preview h headless resume q quit

Every session carries its exact resume command — pipe it to jq, fzf, or your own agents.

Which agent did you use on this repo last?

You bounce between Claude, Codex, Droid and the rest — then a week later can't recall which CLI you were in when you fixed that thing. Run seshy in the repo and every past session is right there, newest-first and color-coded by agent. No spelunking through ~/.claude and six other folders.

  • RUNseshy, in the repo. Every past session that ran there, across every agent, in one list.
  • FINDType to filter. Fuzzy-match the prompt, agent, or repo. p previews the first prompt and last message.
  • RESUMEHit Enter. seshy execs that agent's own resume command — the real thread, right where you left off.

Every agent you run.

Native session format in, native resume out — no exporting, no lock-in. seshy reads each tool's store read-only and never touches your history.

Claude Code
Codex
Grok
pi
OpenCode
Antigravity
Droid

All seven in one list, color-coded — or narrow to one with --agent.

See the thread before you jump back in.

Hit p and the pane opens the session's first prompt, its last message, and the exact native resume command — so you land in the right conversation, not a guess.

Resume is native and lossless: seshy execs the agent's own resume command in the right directory and hands you the real thread. Read-only — it never modifies your history.

Claude2m ago
resume claude --resume 9f3a…c1
dir ~/repos/orchy
id 9f3a…c1
claude-opus-4·33 turns
FIRST PROMPT
stop the deploy. i lied in the PR description — the migration is not reversible, roll it back before it ships.
LAST · assistant
Deploy halted and the migration reverted on staging. Added a guard so an irreversible migration cannot ship without --force. You are clear.

Everything seshy can do.

Seven agents, every subcommand, a few composable flags — one static binary that's as happy in a pipe as in your hands.

Interactive picker

seshy [path] opens a fuzzy-searchable TUI for a directory. ↑↓ move, / filter, p preview, resume, q quit.

Jump to the latest

seshy last [path] instantly resumes the most recent session in a directory — no picker, no clicks.

Every repo, paged

seshy all shows the most recent sessions across every repo on the machine. The picker pages in more as you scroll, so it stays instant with thousands of sessions.

Readable table

seshy list [path] prints a clean table in the terminal, and flips to JSON the moment it's piped.

Digest for agents

seshy summary [path] condenses a project's sessions into a compact digest an agent can read at a glance.

Content search

seshy search <pattern> searches across all agents and prints an excerpt plus the resume command per hit. Supports -i and --regex.

Uncapped JSON index

seshy sessions emits every session across all agents and repos as JSON — path, agent, dir, mtime, id, resume — without reading file contents.

Preview pane

Toggle p in any picker to see the first prompt, the last message, and the exact native resume command before you commit.

Read-only by design

seshy never writes to your history. Picking a session simply execs the agent's own resume command in the right directory.

Hide headless runs

Drop non-interactive runs — claude -p / Agent-SDK and codex exec — from every listing. Toggle them live in any picker with h, or persist with hideClaudeHeadless and hideCodexExec.

Flags that compose

Scope and shape any command with -C/--cwd, --all, --agent, -n/--num, and -o/--format.

Ships Agent Skills

Bundled conversation-search and seshy Agent Skills let an agent search and resume your history conversationally.

Built to be piped.

list, sessions, and search print JSON the moment they're piped — each record carrying its native resume command. Shape it with -o table|json|ndjson.

seshy — piped to jq
$ seshy list ~/app | \
jq -r '.sessions[] | .resume'
 
claude --resume 9f3a…c1
codex resume 71b0…4e
droid --resume a2d8…90
 
# pick one, run it, you're back in.

Configure what shows up.

Hide non-interactive runs so lists stay on real conversations. Toggle live with h in the picker, or set them once — either way it persists to ~/.config/seshy/config.json.

seshy — config
$ seshy config
hideClaudeHeadless false
hideCodexExec false
 
$ seshy config set hideCodexExec true
ok · codex exec now hidden
 
# or just press h in the picker.

Install seshy.

A single static binary with zero dependencies. Pick the path that fits your setup.

Homebrew

macOS & Linux, kept up to date.

$ brew install buddyh/tap/seshy

Go

Build from source with the Go toolchain.

$ go install github.com/buddyh/seshy@latest
View on GitHub Read the docs github.com/buddyh/seshy