{"id":49947153,"url":"https://github.com/Dwsy/pi-session-manager","last_synced_at":"2026-05-24T21:00:46.103Z","repository":{"id":335641084,"uuid":"1145755307","full_name":"Dwsy/pi-session-manager","owner":"Dwsy","description":"Pi session manager for browsing, searching, and resuming Pi AI coding sessions. Related project: https://github.com/badlogic/pi-mono","archived":false,"fork":false,"pushed_at":"2026-05-21T13:15:18.000Z","size":15564,"stargazers_count":110,"open_issues_count":0,"forks_count":8,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-21T21:59:16.534Z","etag":null,"topics":["ai-coding","pi","pi-session","pi-session-manager","react","rust","session-manager","tauri"],"latest_commit_sha":null,"homepage":"https://dwsy.github.io/pi-session-manager/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dwsy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-01-30T07:06:16.000Z","updated_at":"2026-05-21T13:14:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Dwsy/pi-session-manager","commit_stats":null,"previous_names":["dwsy/pi-session-manager"],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/Dwsy/pi-session-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dwsy%2Fpi-session-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dwsy%2Fpi-session-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dwsy%2Fpi-session-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dwsy%2Fpi-session-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dwsy","download_url":"https://codeload.github.com/Dwsy/pi-session-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dwsy%2Fpi-session-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33450402,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-24T19:21:36.376Z","status":"ssl_error","status_checked_at":"2026-05-24T19:21:10.562Z","response_time":57,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-coding","pi","pi-session","pi-session-manager","react","rust","session-manager","tauri"],"created_at":"2026-05-17T16:00:40.711Z","updated_at":"2026-05-24T21:00:46.097Z","avatar_url":"https://github.com/Dwsy.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# Pi Session Manager\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"src-tauri/icons/128x128@2x.png\" width=\"128\" height=\"128\" alt=\"Pi Session Manager\" /\u003e\n\u003c/p\u003e\n\n\n\n\u003cp align=\"center\"\u003e\n  Manage \u003ca href=\"https://github.com/badlogic/pi-mono\"\u003ePi\u003c/a\u003e coding sessions with a Tauri desktop app, browser-accessible server mode, and a standalone static demo page.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/Dwsy/pi-session-manager/releases/latest\"\u003eReleases\u003c/a\u003e ·\n  \u003ca href=\"https://dwsy.github.io/pi-session-manager/\"\u003eDocumentation\u003c/a\u003e ·\n  \u003ca href=\"https://dwsy.github.io/pi-session-manager/cn/\"\u003ezh\u003c/a\u003e ·\n  \u003ca href=\"https://dwsy.github.io/pi-session-manager/demo/\"\u003eDemo\u003c/a\u003e ·\n  \u003ca href=\"https://dwsy.github.io/pi-session-manager/dataset/\"\u003eDataset\u003c/a\u003e ·\n  \u003ca href=\"#extension-system\"\u003eExtensions\u003c/a\u003e\n\u003c/p\u003e\n\n## UI Preview\n\n| Home | Session Page |\n|------|-------------|\n| ![Home](website/public/screenshots/home.png) | ![Session Page](website/public/screenshots/session-page.png) |\n\n| Session Tree | Kanban |\n|-------------|--------|\n| ![Session Tree](website/public/screenshots/session-tree.png) | ![Kanban](website/public/screenshots/kanban.png) |\n\n\n## Highlights\n\n- Session browser with list/project/kanban views, favorites, tags, rename, delete, and export.\n- Full-text search via SQLite FTS5 with normalized indexing/search flows, including tree node label search and node content vs. label source filtering.\n- In-session message search with inline highlights, current-match navigation, and keyboard-friendly close/reset behavior. `Cmd/Ctrl + F` behavior is configurable (search vs. sidebar toggle).\n- Built-in terminal (PTY) and one-click resume of Pi sessions.\n- **External Sessions** — scan and browse sessions from other coding agents (Claude, OpenCode, etc.) with unified settings UI for scan control and default resume targets.\n- **Dataset Browser** — download and explore session datasets from HuggingFace with local caching, search, tags, favorites, and statistics.\n- Multi-protocol runtime: Tauri IPC, WebSocket, HTTP, SSE.\n- Rich **demo data engine** and dedicated static demo page build mode.\n- i18n packs: `en-US`, `zh-CN`, `ja-JP`, `de-DE`, `fr-FR`, `es-ES`.\n- Pi Live integration with real-time session sync and model control.\n- Analytics dashboard with activity heatmap, token trends, and subagent cost stats.\n\n## Architecture\n\n```\nFrontend: React + TypeScript + Vite\nBackend: Rust + Tauri 2 + Axum + SQLite + FTS5\n\nProtocols: Tauri IPC | WebSocket (/ws) | HTTP (/api) | SSE\n```\n\n### Four-Layer Design\n\n```\nCommands (thin) \u003c- Tauri IPC / HTTP / WS\nDomain (business) \u003c- model_config, session_list, stats, terminal\nData \u003c- search (SQLite FTS5 normalized index) sqlite (cache)\nServer (protocol) \u003c- HTTP adapter, WebSocket adapter\n```\n\n## Quick Start\n\n### Prerequisites\n\n- Node.js 20+\n- Rust stable (via `rustup`)\n- Platform toolchains for Tauri (Xcode / WebView2 / WebKitGTK)\n\n### Install\n\n```bash\ngit clone https://github.com/Dwsy/pi-session-manager.git\ncd pi-session-manager\npnpm install\n```\n\n## Runtime Modes\n\n| Mode | Entry | Network behavior |\n|------|-------|------------------|\n| Desktop GUI | `pi-session-manager` | GUI + backend services; unified single-port HTTP + WS(`/ws`) on `http_port` (default `52131`) |\n| Headless in main binary | `pi-session-manager --cli` / `--headless` | Single-port HTTP + WS(`/ws`) on `http_port` (default `52131`) |\n| Standalone CLI crate | `pi-session-cli` | Single-port HTTP + WS(`/ws`) (default `52131`) |\n| Static demo page | `dist-demo/index.html` | No backend required, forced demo data |\n| Static dataset page | `dist-dataset/index.html` | No backend required, browser dataset mode |\n\n### CLI Flags\n\n- `-p, --port \u003cPORT\u003e`: shared HTTP+WS port in CLI mode\n- `-b, --bind \u003cADDR\u003e`: bind address\n- `--auth` / `--no-auth`: enable/disable auth\n- `--token \u003cTOKEN\u003e`: runtime-only token for current process\n\n## API Surface\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `/api` | POST | Command endpoint |\n| `/ws` | GET | WebSocket |\n| `/api/events` | GET | SSE events |\n| `/health` | GET | Health check |\n| `/` | GET | Embedded frontend |\n\n## Paths \u0026 Storage\n\n\u003e `~/.pi/...` in docs means \"the current user's home directory + .pi\". On macOS/Linux/Windows the actual absolute path is resolved from the user's home directory at runtime.\n\n| Path | Description |\n|------|-------------|\n| `~/.pi/agent/sessions/` | Session directory |\n| `~/.pi/agent/sessions/sessions.db` | SQLite DB for sessions only, not runtime config |\n| `~/.pi/pi-session-manager/config.json` | Unified external config (server/session/app/ui) |\n| `~/.pi/pi-session-manager/tags_config.json` | Tag definitions |\n| `~/.pi/pi-session-manager/session_mark.json` | Session-tag assignments |\n| `~/.pi/pi-session-manager/favorites.json` | Favorites |\n| `~/.pi/pi-session-manager/auth_tokens.json` | Auth tokens |\n| `~/.pi/pi-session-manager/history/config-versions/` | Config history snapshots (JSON files) |\n| `~/.pi/pi-session-manager/backups/` | Import/export backups |\n| `~/.pi/agent/models.json` | Pi model config |\n| `~/.pi/agent/settings.json` | Pi settings |\n\n## Extension System\n\nPi extensions live in `extensions/` and follow the [pi-package](https://github.com/mariozechner/pi-coding-agent) spec. Install to `~/.pi/agent/extensions/` for auto-loading.\n\n| Extension | Purpose | Dependency |\n|-----------|---------|------------|\n| [pi-session-bridge](#pi-session-bridge) | Live sync, search, tags, context recall | better-sqlite3 |\n| [resume-x](#resume-x) | Enhanced session resume via SQLite | better-sqlite3 |\n| [rename-nag](#rename-nag) | Smart session naming reminder | — |\n\nbridge and resume-x share `~/.pi/agent/sessions/sessions.db`. rename-nag uses Pi API only.\n\n### pi-session-bridge\n\nBridge Pi agent sessions to PSM.\n\n**Repository**: [Dwsy/psm-bridge](https://github.com/Dwsy/psm-bridge)\n\n```bash\npi install Dwsy/psm-bridge\n```\n\n| Tool | Description |\n|------|-------------|\n| `session_search` | Full-text search across indexed sessions |\n| `session_recall` | Search + retrieve surrounding dialogue context |\n| `session_context` | Fetch messages from a specific session |\n| `session_tag` | List/set/remove session tags |\n\n| Command | Description |\n|---------|-------------|\n| `/psm-live on/off` | Toggle real-time sync |\n| `/psm-connect` / `/psm-disconnect` | Manual connection control |\n| `/state` `/state-set` `/state-list` `/state-clear` | Tag management |\n| `/flow \u003caction\u003e` | Quick transitions (todo → wip → done) |\n| `/open-in-psm` | Open current session in PSM desktop app |\n\nStatus indicators: `[psm]` connected, `[retry N]` reconnecting, `[timeout]` disconnected, `[psm: off]` live mode disabled.\n\n### resume-x\n\nEnhanced session resume — SQLite fast path, no disk scan.\n\n**Location**: `extensions/resume-x/`\n\nAdd to `~/.pi/agent/settings.json` → `extensions` array:\n```json\n{\n  \"extensions\": [\n    \"~/Dev/AI/pi-session-manager/extensions/resume-x/index.ts\"\n  ]\n}\n```\n\n```\n/resume-x    # or press ⌥X\n```\n\n| Feature | Description |\n|---------|-------------|\n| SQLite fast path | Reads from `sessions.db`, no filesystem scan |\n| CWD filter | Shows current project sessions first |\n| Detail pane | Model, tokens, cost, kanban tags |\n| Message preview | Browse full conversation before resuming |\n| Full-text search | `⌥Q` — search names, messages, tags |\n\n**Keybindings**:\n\n| Key | List Mode | Preview Mode | Search Mode |\n|-----|-----------|--------------|-------------|\n| `⌥X` | Toggle open/close | — | — |\n| `⌥Q` | Search | — | — |\n| `→` | Enter preview | — | — |\n| `←` / `Esc` | — | Back to list | Back to list |\n| `↑` / `↓` | Navigate | Scroll 1 line | Navigate |\n| `⇧↑` / `⇧↓` | — | Page up/down | — |\n| `⏎` | Resume | Resume | Open selected |\n| `Tab` | — | — | Toggle CWD/global |\n\n### rename-nag\n\nSmart session naming reminder — nudges agent to name sessions.\n\n**Location**: `extensions/rename-nag/`\n\n```json\n{\n  \"extensions\": [\n    \"~/Dev/AI/pi-session-manager/extensions/rename-nag/index.ts\"\n  ]\n}\n```\n\n| Tool | Description |\n|------|-------------|\n| `session_rename` | Rename the current session |\n\nTriggers:\n- **First**: tool calls \u003e 6 + unnamed → full reminder with naming suggestions\n- **Follow-up**: every 40 tool calls (40, 80, 120...) + named → check if topic shifted\n\n\"Unnamed\" = NULL or matches `YYYY-MM-DDTHH-MM-SS` timestamp format.\n\n### Tool Render Plugins\n\n```\nsrc/plugins/tools-render/\n├── builtins/    # bash, edit, read, write, generic\n└── extensions/  # subagent, ...\n```\n\n### Search Plugins\n\n```\nsrc/plugins/\n├── message/     # In-message search\n├── project/     # Project search\n└── session/     # Session search\n```\n\n## Keyboard Shortcuts\n\n### Session View\n\n| Shortcut | Action |\n|----------|--------|\n| `Cmd/Ctrl + Shift + C` | Copy resume command to clipboard |\n| `Cmd/Ctrl + F` | Search in session (or toggle sidebar, configurable) |\n| `Cmd/Ctrl + Shift + F` | Toggle sidebar (or open search, configurable) |\n| `Cmd/Ctrl + T` | Toggle thinking display |\n| `Cmd/Ctrl + O` | Toggle tools expanded |\n| `Cmd/Ctrl + G` | Next search match (in search mode) |\n| `Cmd/Ctrl + Shift + G` | Previous search match (in search mode) |\n| `Cmd/Ctrl + R` | Resume session |\n| `Cmd/Ctrl + E` | Export session |\n| `Esc` | Close search |\n\n## Development\n\n### Development Checks\n\n```bash\ncargo fmt --all --check\ncd src-tauri \u0026\u0026 cargo clippy -- -D warnings\ncargo clippy -p pi-session-cli -- -D warnings\ncd src-tauri \u0026\u0026 cargo test\n```\n\n### Adding a New Command\n\n1. **Business logic** -\u003e `src-tauri/src/domain/`\n2. **Command layer** -\u003e `src-tauri/src/commands/`\n3. **Route registration** -\u003e `src-tauri/src/dispatch.rs`\n4. **Tauri registration** -\u003e `src-tauri/src/lib.rs`\n\nSee [agent-docs/03-backend.md](agent-docs/03-backend.md) for detailed tutorial.\n\n## Documentation\n\n| Document | Description |\n|----------|-------------|\n| [AGENTS.md](AGENTS.md) | Agent development guide |\n| [agent-docs/01-architecture.md](agent-docs/01-architecture.md) | Four-layer architecture |\n| [agent-docs/02-frontend.md](agent-docs/02-frontend.md) | Frontend component index |\n| [agent-docs/03-backend.md](agent-docs/03-backend.md) | Backend modules + command tutorial |\n| [agent-docs/04-development.md](agent-docs/04-development.md) | Build \u0026 release |\n| [agent-docs/05-config.md](agent-docs/05-config.md) | Config \u0026 security |\n| [docs/PSM_PLUGIN_SDK.md](docs/PSM_PLUGIN_SDK.md) | Public PSM browser-plugin SDK contract |\n| [docs/PSM_PLUGIN_SDK_CAPABILITY_AUDIT.md](docs/PSM_PLUGIN_SDK_CAPABILITY_AUDIT.md) | SDK capability exposure and contract reuse audit |\n| [extensions/README.md](extensions/README.md) | PSM built-in plugins and Pi Agent extension overview |\n| [DESIGN.md](DESIGN.md) | Design system (colors, typography, motion) |\n\n## License\n\nMIT\n\n## macOS Installation Note\n\nIf macOS shows \"App is damaged and can't be opened\", run:\n\n```bash\nsudo xattr -rd com.apple.quarantine \"/Applications/Pi Session Manager.app\"\n```\n\nThis is a standard Gatekeeper behavior for non-App-Store apps. No certificate is required for personal use.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDwsy%2Fpi-session-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDwsy%2Fpi-session-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDwsy%2Fpi-session-manager/lists"}