Manage Pi coding sessions with a Tauri desktop app, browser-accessible server mode, and a standalone static demo page.
Releases · Documentation · 中文文档 · Preview
- Session browser with list/project/kanban views, favorites, tags, rename, delete, and export.
- Full-text search via SQLite FTS + Tantivy-backed indexing/search flows, including tree node label search and node content vs. label source filtering.
- In-session message search with inline highlights, current-match navigation, and keyboard-friendly close/reset behavior.
Cmd/Ctrl + Fbehavior is configurable (search vs. sidebar toggle). - Built-in terminal (PTY) and one-click resume of Pi sessions.
- External Sessions — scan and browse sessions from other coding agents (Claude, OpenCode, etc.) with unified settings UI for scan control and default resume targets.
- Dataset Browser — download and explore session datasets from HuggingFace with local caching, search, tags, favorites, and statistics.
- Multi-protocol runtime: Tauri IPC, WebSocket, HTTP, SSE.
- Rich demo data engine and dedicated static demo page build mode.
- i18n packs:
en-US,zh-CN,ja-JP,de-DE,fr-FR,es-ES. - Pi Live integration with real-time session sync and model control.
- Analytics dashboard with activity heatmap, token trends, and subagent cost stats.
Frontend: React + TypeScript + Vite
Backend: Rust + Tauri 2 + Axum + SQLite + Tantivy
Protocols: Tauri IPC | WebSocket (/ws) | HTTP (/api) | SSE
Commands (thin) <- Tauri IPC / HTTP / WS
Domain (business) <- model_config, session_list, stats, terminal
Data <- search (Tantivy) sqlite (cache)
Server (protocol) <- HTTP adapter, WebSocket adapter
| Layer | Tech |
|---|---|
| Frontend | React 18, TypeScript 5, Vite 5, Tailwind CSS, i18next, cmdk, @dnd-kit, @xyflow/react, recharts, @xterm/xterm |
| Backend | Rust 2021, Tauri 2, Tokio, Axum, rusqlite, Tantivy, notify, portable-pty |
| Protocol | Tauri IPC · WebSocket (/ws) · HTTP (/api) · SSE (/api/events) |
| Module | Language | Scale |
|---|---|---|
| Frontend Components | TypeScript/React | 155+ components |
| Frontend Hooks | TypeScript | 40+ hooks |
| Backend | Rust | ~27K lines |
| Home | Session Page |
|---|---|
![]() |
![]() |
| Session Tree | Kanban |
|---|---|
![]() |
![]() |
- Node.js 20+
- Rust stable (via
rustup) - Platform toolchains for Tauri (Xcode / WebView2 / WebKitGTK)
git clone https://github.com/Dwsy/pi-session-manager.git
cd pi-session-manager
pnpm install| Command | Description |
|---|---|
npm run dev |
Frontend dev server |
npm run tauri:dev |
Full desktop dev (frontend + Rust) |
npm run build |
Production frontend build to dist/ |
npm run build:demo |
Static demo build to dist-demo/ |
npm run build:cli |
Build standalone pi-session-cli binary |
npm run tauri:build |
Desktop production bundle |
| Mode | Entry | Network behavior |
|---|---|---|
| Desktop GUI | pi-session-manager |
GUI + backend services; unified single-port HTTP + WS(/ws) on http_port (default 52131) |
| Headless in main binary | pi-session-manager --cli / --headless |
Single-port HTTP + WS(/ws) on http_port (default 52131) |
| Standalone CLI crate | pi-session-cli |
Single-port HTTP + WS(/ws) (default 52131) |
| Static demo page | dist-demo/index.html |
No backend required, forced demo data |
-p, --port <PORT>: shared HTTP+WS port in CLI mode-b, --bind <ADDR>: bind address--auth/--no-auth: enable/disable auth--token <TOKEN>: runtime-only token for current process
| Endpoint | Method | Description |
|---|---|---|
/api |
POST | Command endpoint |
/ws |
GET | WebSocket |
/api/events |
GET | SSE events |
/health |
GET | Health check |
/ |
GET | Embedded frontend |
| Path | Description |
|---|---|
~/.pi/agent/sessions/ |
Session directory |
~/.pi/agent/sessions/sessions.db |
SQLite DB (sessions, settings, tags, favorites, auth tokens) |
~/.pi/agent/session-manager-config.toml |
Scanner config (session_paths, FTS, intervals, etc.) |
~/.pi/agent/skills/ |
Pi skills |
~/.pi/agent/prompts/ |
Pi prompts |
~/.pi/agent/settings.json |
Pi settings |
~/.config/pi-session-manager.json |
Standalone pi-session-cli config |
Bridge Pi agent sessions to PSM with live sync, search, tags, and context recall.
Repository: Dwsy/psm-bridge
Install:
pi install Dwsy/psm-bridgeFeatures:
- Live mode: real-time session sync via WebSocket
- Search: full-text search across indexed sessions
- Tags: SQLite-backed session tagging
- Context: recall and context from past sessions
Usage:
/psm-live on # Enable live mode
/session_search # Search sessions
/state-set wip # Set tagLocal Development:
# Already included as submodule
git clone --recurse-submodules https://github.com/Dwsy/pi-session-manager.gitUpdate submodule:
cd extensions/psm-bridge
git pull # Update code
git push # Push to psm-bridge repo
cd ../..
git add extensions/psm-bridge
git commit -m "Update psm-bridge"src/plugins/tools-render/
├── builtins/ # bash, edit, read, write, generic
└── extensions/ # subagent, ...
src/plugins/
├── message/ # In-message search
├── project/ # Project search
└── session/ # Session search
cargo fmt --all --check
cd src-tauri && cargo clippy -- -D warnings
cargo clippy -p pi-session-cli -- -D warnings
cd src-tauri && cargo test- Business logic ->
src-tauri/src/domain/ - Command layer ->
src-tauri/src/commands/ - Route registration ->
src-tauri/src/dispatch.rs - Tauri registration ->
src-tauri/src/lib.rs
See agent-docs/03-backend.md for detailed tutorial.
| Document | Description |
|---|---|
| AGENTS.md | Agent development guide |
| agent-docs/01-architecture.md | Four-layer architecture |
| agent-docs/02-frontend.md | Frontend component index |
| agent-docs/03-backend.md | Backend modules + command tutorial |
| agent-docs/04-development.md | Build & release |
| agent-docs/05-config.md | Config & security |
| DESIGN.md | Design system (colors, typography, motion) |
MIT
If macOS shows "App is damaged and can't be opened", run:
sudo xattr -rd com.apple.quarantine "/Applications/Pi Session Manager.app"This is a standard Gatekeeper behavior for non-App-Store apps. No certificate is required for personal use.



