llm-chat-manager
v0.1.2
Published
Manage local Codex and Claude chat histories with a lightweight GUI and CLI.
Maintainers
Readme
LLM Chat Manager
LLM Chat Manager (lcm) is a lightweight local GUI and CLI for managing Codex and Claude chat histories.
It helps when a project folder is renamed or moved and your local LLM chat history still points at the old path. It can move, copy, or delete selected conversation files while keeping a preview of what will change.
Features
- Detect local Codex and Claude histories by project path.
- Show conversations inline under the selected project.
- Preview the latest message for each conversation.
- Select all conversations or choose individual conversations.
- Move history metadata from an old project path to a new project path.
- Copy selected histories without changing originals.
- Delete unwanted conversations after explicit confirmation.
- Keep backups and recoverable deleted files under
~/.llm-chat-manager. - Run as a zero-dependency Node.js app on macOS, Windows, and Linux.
Install
npm install -g llm-chat-managerThen run:
lcmYou can also run it directly from a checkout:
npm install
npm startRequirements:
- Node.js 20 or newer.
- Local Codex and/or Claude history files on the same machine.
GUI
lcmThe app starts a local server and opens a browser-based GUI. It does not send chat history to a remote service.
Run a sanitized demo with sample data:
lcm --no-open
open http://127.0.0.1:7348/?demo=1On Windows or Linux, open the same URL in your browser manually.
Screenshots
The screenshots below use demo data only. They do not contain real chat history, real project paths, or personal local file paths.


Typical flow:
- Select a detected Codex or Claude project history.
- Review the conversations that expand under the selected project.
- Select the conversations you want to manage.
- Choose
MoveorCopy. - Enter the new project path.
- Run
Scan. - Apply the planned change.
Deletion uses a dedicated confirmation dialog. Deleted conversations are moved to:
~/.llm-chat-manager/deleted/<timestamp>/CLI
List detected project histories:
lcm listScan a move before applying:
lcm scan --old /old/project/path --new /new/project/pathMove matching history metadata:
lcm apply --old /old/project/path --new /new/project/pathCopy selected conversation files instead of moving:
lcm apply --old /old/project/path --new /new/project/path --operation copy --file /path/to/session.jsonlDelete selected conversation files. The --confirm flag is required:
lcm delete --file /path/to/session.jsonl --confirmCommon options:
--provider all|codex|claude
--file /path/to/session.jsonl
--jsonUse repeated --file <jsonl> arguments to limit scan, apply, or delete operations to selected conversations.
Privacy
LLM Chat Manager runs locally. It scans files on your machine and serves the GUI from 127.0.0.1. It does not upload chat history or project paths to any remote service.
What It Changes
Codex:
- Reads JSONL files under
~/.codex/sessions. - Updates path-like metadata fields, such as
payload.cwd, only when they exactly match the old path. - Does not rewrite normal chat message text.
- Copy mode creates a rewritten sibling copy and leaves the original unchanged.
Claude:
- Reads JSONL files under
~/.claude/projects. - Moves or copies project folders to the encoded new project path.
- When selected files are provided, only those conversation files are moved or copied.
Safety
Move operations create backups under:
~/.llm-chat-manager/backups/<timestamp>/Delete operations move files under:
~/.llm-chat-manager/deleted/<timestamp>/Malformed JSONL lines are preserved unchanged and reported.
The delete API requires an explicit confirmation flag, and the GUI always shows a confirmation dialog before deleting selected conversations.
Platform Support
LLM Chat Manager is designed for macOS, Windows, and Linux. It uses Node's platform-aware path handling and scans Claude cwd metadata directly, so it does not depend solely on a single folder-name encoding.
Development
npm test
npm startRun the CLI locally:
node ./bin/lcm.mjs --help
node ./bin/lcm.mjs listRelease preflight:
npm test
npm pack --dry-runPublishing notes are in docs/PUBLISHING.md.
