A terminal UI for browsing and managing AI chat sessions from multiple sources - Claude Code, Claude.ai exports, OpenCode, and Memorizer.
Built with Bun, OpenTUI, and TypeScript.
- Browse sessions from 4 sources in a single TUI
- Filter sessions by source and text search
- Full-text content search (
g) with SQLite FTS5 index - Multi-select sessions and copy as Markdown to target folders
- Markdown preview with syntax highlighting
- Configurable targets for organizing exported sessions
- Incremental search index - only new/changed sessions are re-indexed on startup
| Source | Format | Location |
|---|---|---|
| Claude Code | JSONL | ~/.claude/projects/**/*.jsonl |
| Claude.ai Export | ZIP / conversations.json |
Configurable path |
| OpenCode | JSON shards | ~/.local/share/opencode/storage/ |
| Memorizer | REST API | Configurable URL |
bun install -g github:AlexZeitler/session-md
session-mdgit clone https://github.com/AlexZeitler/session-md.git
cd session-md
bun install
bun src/index.tssession-md updatesession-md --versionConfig file: ~/.config/session-md/config.toml
A default config is created on first run.
default_target = "~/notes/claude-chats"
[targets]
vault = "~/notes/claude-chats"
work = "~/work/claude-sessions"
archive = "~/archive/claude"
[sources]
claude_code = "~/.claude/projects"
opencode = "~/.local/share/opencode/storage"
# claude_export = "~/Downloads/conversations.zip"
# memorizer_url = "http://localhost:5001"| Key | Action |
|---|---|
Tab |
Cycle focus: Sources → Sessions → Detail |
Shift+Tab |
Cycle focus backward |
j / k |
Navigate list / scroll detail |
gg |
Jump to top (list or detail) |
G |
Jump to bottom (list or detail) |
Ctrl+d / Ctrl+u |
Page down / up in detail |
Esc |
Back to sessions from detail |
| Key | Action |
|---|---|
Space |
Toggle selection |
/ |
Open text filter |
g |
Full-text content search (grep) |
c |
Copy selected sessions to target |
q |
Quit |
| Key | Action |
|---|---|
| Type | Filter sessions by title/project |
Enter |
Move to filtered results (filter stays active) |
/ |
Return to filter input |
Esc |
Close filter |
| Key | Action |
|---|---|
| Type | Search within session content (FTS5) |
Enter |
Move to results / open selected result |
/ |
Return to search input |
Esc |
Close search |
Content search uses a SQLite FTS5 index stored at ~/.config/session-md/search-index.sqlite. The index is built incrementally on startup - only new or changed sessions are indexed.
To rebuild the index from scratch:
session-md reindex- Bun >= 1.0
MIT