Show HN: Pisesh, a zero-dependency TUI for finding and resuming Pi sessions Pisesh, a zero-dependency Node.js TUI for finding and resuming Pi coding-agent sessions, is now available via `pi install npm:pisesh` or `npm install -g pisesh`. The tool adds bookmarking, search, and session management features missing from `pi --resume`, including star favorites, custom titles, a Here tab filtering by working directory, and a [NOW] badge. It runs as a single-file script (~1,600 LoC) on Node 18+ and integrates with pi's official `ctx.switchSession()` API. English | 한국어 https://github.com/Blue-B/pisesh/blob/main/docs/README.ko.md Bookmark, search, and resume pi coding-agent sessions with a fast keyboard-driven TUI. pi --resume lists every session you ever started. After a week that's 50+ entries with no titles, no tags, and no order, so you just scroll and hope. pisesh adds what was missing: ⭐ favorites, instant search, and a NOW badge for the session you're attached to. Real capture: ★ starred session at the top, the rest available behind the Today, Here, and All tabs. Tab cycles. f stars. Enter resumes.What the TUI looks like, screen by screen. The data below is made up, not real sessions. Main list. The highlighted row is the current selection, and Tab cycles through the tabs. The green NOW badge marks the pi session you launched from, and the cyan ✎ marks a session you renamed yourself. CJK titles stay column-aligned: e renames a session. The first user prompt makes a poor title for a thread you keep coming back to, so press e to set your own. It's saved as an override the session jsonl is never touched and the session gets a ✎ marker in the list: p re-points the working directory through an arrow-key directory browser. This is the cwd pi actually cd s into on resume, and it's also what the Here tab filters on. Press s to lock in the highlighted directory:The Here tab shows only sessions whose effective cwd matches the directory you launched pisesh from. Inside a project you see just that project's threads, without scrolling past your home-dir scratch sessions. Pi accumulates sessions across many working directories: your home, several project dirs, scratch tmux panes. The built-in resume picker is roughly alphabetical and forgets context. After a few weeks: - You can't tell which session was "the one where you fixed the auth bug" - You can't pin the 3-4 long-running threads you keep going back to - You re-open the wrong session and pollute it with unrelated context - You waste time searching by timestamp guessing pisesh is a single-file Node script no dependencies, ~1,600 LoC that gives you everything pi --resume doesn't. | Need | What you get | |---|---| | Mark important sessions | ⭐ Star/unstar with one keystroke; favorites persist to one global JSON | | Give a thread a real name | e sets one manually; g generates one with a model you choose | | See only the current project's sessions | Here tab filters to sessions whose cwd matches where you launched pisesh | | Fix where a session resumes | p opens an arrow-key directory browser; sets the cwd pi cd s into | | Find a session by what you said | / searches id + project + first user prompt + custom title | | Know which session you're attached to | NOW badge on the live session passed from pi via env var | | Keep your terminal clean | Alt-screen buffer, so quitting puts your terminal back the way it was like vim | | Read Korean / Chinese / Japanese prompts | Display-width-aware truncation; columns never blow up on CJK | | Open from anywhere | Run as standalone pisesh shell command, or /sesh inside pi | | Zero install pain | No build step, no native deps, runs on Node 18+ everywhere | | Trust it with your history | favorites and overrides stay in sidecar JSON; session history changes only for orphan-call repair | pi install npm:pisesh This registers pisesh as a pi extension. Inside any pi session, type /sesh . The extension runs its bundled CLI, so a global npm installation is not required. /sesh does not start a second pi process. The picker returns the selected session and options to the extension, which calls pi's official ctx.switchSession API. Standalone pisesh keeps its shell behavior and starts pi --session . Custom cwd overrides require a pi version that supports cwdOverride on extension session switches; pisesh warns if pi ignores one. npm install -g pisesh pisesh The standalone pisesh shell command requires this global npm installation. It is separate from pi install npm:pisesh . git clone https://github.com/Blue-B/pisesh.git cd pisesh npm link symlink ./bin/pisesh into your global PATH pisesh --help For local pi testing, run pi install . from the cloned repository so the extension and its bundled CLI stay together. | Key | Action | |---|---| ↑ ↓ / j k | move cursor | Tab / h / l | switch tab ★ Favorites → Today → Here → All | f / Space | star / unstar the selected session | x | remove favorites whose session files no longer exist | Enter | resume using the current default model and thinking settings | o | resume using the model and thinking recorded in the session | e | edit name: set a custom display title, shown with ✎ in the list | g | queue title generation with the saved model and effort; clear a manual title with e first | G | open title-generation settings to choose the saved model + effort | p | edit cwd with an arrow-key directory browser; sets the resume / Here dir | d | session details full prompt, file, byte size, timestamps | / | search by id / project / first user prompt / custom title | Esc / q | cancel generation or clear search first; press again to quit | Ctrl-C | cancel generation and quit immediately | r | rescan session files after pi starts a new session | c in details view | copy session id to clipboard clip.exe / pbcopy / xclip | Home End PgUp PgDn | jump to top / bottom / ±10 | Title generation sends up to 16 KB of session text to the selected model provider and may incur provider charges. It excludes tool results and disables context files, skills, prompt templates, and tools. For scripts and automation: pisesh --list print starred session IDs one per line pisesh --json full favorites file as JSON pisesh --star