@well1791/pi-sm
Lite session manager for the pi coding agent — a TUI to browse, search, rename, fork, hide, and delete sessions, plus a /rn command.
Package details
Install @well1791/pi-sm from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:@well1791/pi-sm- Package
@well1791/pi-sm- Version
1.0.0- Published
- Aug 10, 2026
- Downloads
- 158/mo · 13/wk
- Author
- well1791
- License
- MIT
- Types
- extension
- Size
- 70.7 KB
- Dependencies
- 0 dependencies · 2 peers
Pi manifest JSON
{
"extensions": [
"./src/index.ts",
"./src/rename.ts"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-sm
Lite session manager for the pi coding agent.
An interactive TUI to browse, search, rename, fork, create child/sibling,
hide, and delete pi sessions — plus a quick /rn command. Two extensions
ship in this package:
| Extension | Command | What it does |
|---|---|---|
src/index.ts |
/sm |
Full-screen session browser: list, filter, rename, fork, create child/sibling, delete. |
src/rename.ts |
/rn |
Rename the current session inline (/rn [name], or /rn to edit). |
Install
# install (persists to pi settings)
pi install npm:@well1791/pi-sm
# or try it once for the current session only
pi -e npm:@well1791/pi-sm
After installing, run /sm or /rn inside pi.
/sm — session browser
Opens a full-screen TUI over your sessions.
Navigation
| Key | Action |
|---|---|
↑ / ↓ |
Move cursor |
PageUp / PageDown |
Jump by 8 |
Enter |
Resume session · create session (on empty search) · confirm rename |
Tab |
Toggle selection on focused session |
Esc |
Cancel rename · clear selection · exit |
Actions
| Key | Action |
|---|---|
Ctrl+X |
Delete — hard delete (trash if available, else rm -rf); cascades to descendants |
Ctrl+D |
Soft delete — toggle hide/unhide via .-name prefix; includes descendants |
Ctrl+R |
Rename the focused session |
Ctrl+F |
Fork the focused session (pick a branch point) |
Ctrl+M |
Toggle scope: current project ↔ all sessions |
Ctrl+H |
Toggle showing hidden sessions |
Alt+C |
New child — create a blank session under the focused session |
Alt+S |
New sibling — blank session next to the focused (new root if focused is a root) |
Child/sibling sessions are blank (no copied history — that's what fork is
for). Creating one keeps you in the picker and drops you into rename mode so you
can name it; press Esc to leave it unnamed. A child is parented to the focused
session; a sibling shares the focused session's parent (a new root if the
focused session is a root).
Search / text input
Type to filter sessions by name and first message. While focused on the query:
Ctrl+A / Home · Ctrl+E / End · Alt+B / Alt+F (word jumps) ·
← / → · Ctrl+W (delete word) · Ctrl+K (delete to end) · Ctrl+U (clear) ·
Backspace / Delete.
When the search has no matches, Enter on the create row makes a new session
with the typed name.
Resume with model mismatch check
Resuming a session saved under a different model prompts you to keep the active model or switch to the session's model.
/rn — quick rename
/rn my session # set name directly
/rn # open an editor pre-filled with the current/derived name
With no arguments, the current name is derived from the first user message if unset.
Configuration
Optional config file at ~/.pi/agent/pi-sm.json:
{
"commands": {
"rename": "rn"
},
"shortcuts": {
"delete": "ctrl+x",
"softDelete": "ctrl+d",
"rename": "ctrl+r",
"fork": "ctrl+f",
"scope": "ctrl+m",
"toggleHidden": "ctrl+h",
"select": "tab",
"newChild": "alt+c",
"newSibling": "alt+s"
},
"colors": {
"active": "#9ED0FF",
"recent": "#FFD787",
"unnamed": "#FFAFAF",
"hidden": "242",
"subagent": "#FFD700",
"border": "#5FA8A0",
"text": "#FFFFFF",
"muted": "245",
"gold": "#FFD787",
"error": "#FF5F5F",
"shortcutKey": "#AFD7FF"
}
}
- commands — override slash-command names.
renamesets the quick-rename command (defaultrn); requires an extension reload to take effect. - shortcuts — override any of the
/smaction keys (values are key names as pi'smatchesKeyunderstands them). - colors — any color key. Values are either hex (
"#RRGGBB"→ 24-bit) or an ANSI 256 palette code (e.g."242").
Unspecified keys keep their defaults.