A local-first session manager for browsing, renaming, and deleting Codex and Claude CLI sessions, keeping the names shown in the Web UI in sync with what each CLI shows under /resume.
- Group sessions by workspace — sessions are organized under collapsible workspaces.
- Manual rename — click a session title in the detail header to edit it.
- Sync with Codex CLI — renames are written back to Codex's session index.
- Sync with Claude CLI — renames append an
ai-titleevent to the session jsonl. - Delete sessions — removes the session and cleans up the local index on both the CLI and keeper sides.
- Readable transcripts — conversation content is organized by user input and assistant output.
git clone https://github.com/sitJac/session-keeper.git
cd session-keeper
npm install
npm run serveThen open http://127.0.0.1:42110. npm run serve builds the runtime and Web UI, then starts the local API server.
npm run serve # build + start the local server
npm run web # start the Web UI dev server
npm run api # start the API only
npm run cli -- list # list sessions
npm run cli -- list --source claude # list Claude sessions only
npm run cli -- show --id <threadId> # show a session
npm run cli -- rename --id <threadId> --name "New name" # rename a sessionnpm run lint # ESLint/Biome, zero warnings allowed
npm run build # compile all TypeScript project references
npm run web:build # build the Vite dashboard
npm test # run the Vitest suite
npm run validate:full # CI-equivalent check before pushingpackages/core session scanning, indexing, writeback, and state management
packages/shared shared types and schemas across API, Web, and CLI
packages/api local HTTP API
packages/cli CLI entry point and serve launcher
packages/web Web UI
test Vitest regression tests
docs design notes and detailed documentation
scripts development helper scripts
See docs/ for detailed writeback mechanics.
MIT