llm-memex
Personal conversation knowledge base. Import, search, and analyze conversations from ChatGPT, Claude, Gemini, and Claude Code. MCP-first for LLM agent access.
Install
pip install llm-memex
For development:
git clone https://github.com/queelius/llm-memex
cd llm-memex
pip install -e ".[dev]"
Quick Start
Import conversations:
llm-memex import conversations.json # auto-detects format
llm-memex import ~/.claude/projects/ # directory of Claude Code sessions
llm-memex import export.json --format openai # force format
Browse and search:
llm-memex show # list conversations
llm-memex show <id> # view a conversation
llm-memex show --search "topic" # full-text search
Query the database: use the MCP server (for LLM agents) or sqlite3 directly:
sqlite3 ~/.memex/conversations/conversations.db "SELECT count(*) FROM conversations"
Export:
llm-memex export output.md --format markdown
llm-memex export output.json --format json
llm-memex export ./archive --format arkiv # universal archive format
llm-memex export ./site --format html # self-contained HTML SPA
MCP server (for Claude Desktop, agent SDKs, etc.):
llm-memex mcp
Scripts:
llm-memex run --list # available scripts
llm-memex run redact --words "secret" --level word --apply
llm-memex run redact --pattern-file api_keys.txt --apply
llm-memex run enrich_trivial --apply
Supported Formats
| Format | Import | Export | Notes |
|---|---|---|---|
| OpenAI (ChatGPT) | Yes | - | JSON export |
| Anthropic (Claude) | Yes | - | JSON export |
| Gemini | Yes | - | JSON export |
| Claude Code | Yes | - | JSONL, conversation-only mode |
| Claude Code (full) | Yes | - | Full fidelity: tool_use, thinking, subagents |
| Markdown | - | Yes | |
| JSON | - | Yes | |
| HTML (SPA) | - | Yes | Self-contained, light/dark, librarian chat |
| Arkiv | - | Yes | Universal record format (JSONL + schema.yaml) |
HTML Export
The HTML exporter builds a self-contained single-page app that loads the SQLite database client-side via sql.js (Wasm). Features:
- Light/dark mode: follows OS preference with a manual toggle
- Full browser UI: conversation list, search, filter by source/tag, timeline sparkline
- Librarian chat: ask questions about your archive. An LLM queries the database via Anthropic tool use, using the
metafunctor-edgeproxy by default (no API key required). You can also configure a direct Anthropic endpoint. - Per-conversation resume chat: continue an existing conversation
- Marginalia: annotate messages and conversations with free-form notes, inline in the browser
Notes (Marginalia)
Annotate messages and conversations with free-form text notes. Notes are stored in a dedicated notes table with FTS5 search, and appear across all surfaces (CLI, MCP, HTML SPA, exporters).
llm-memex run note add --conv <id> "this was a turning point" --apply
llm-memex run note add --conv <id> --msg <id> "key insight here" --apply
llm-memex run note list --conv <id>
llm-memex run note search "turning point"
llm-memex run note delete <note_id> --apply
Notes are included in exports by default. Use --no-notes to strip them:
llm-memex export ./public --format html # includes notes
llm-memex export ./public --format html --no-notes # strips notes
In the HTML SPA, click the pencil icon on any message or conversation header to add a note inline. Notes persist in the browser's sql.js copy and are included when you download the DB.
Multi-Database Config
llm-memex supports multiple named databases via ~/.memex/config.yaml:
primary: conversations
databases:
conversations:
path: ~/.memex/conversations
claude_code_full:
path: ~/.memex/claude_code_full
sandbox:
path: ~/.memex/sandbox
All CLI commands and MCP tools accept --db <name> (CLI) or db=<name> (MCP) to target a specific database. The primary database is used when no name is specified.
MCP Tools
When running as an MCP server, llm-memex exposes 6 tools:
execute_sql: Primary read interface. All queries via SQL (read-only by default).get_conversation: Tree-aware retrieval + export (metadata, messages, markdown/JSON).get_conversations: Bulk retrieval with filters (tag, source, model, search, ids) and optional full messages.update_conversations: Modify properties, tags, and enrichments (bulk).append_message: Add messages to conversation trees.add_note: Annotate a message or conversation with a free-form text note.
Resources: llm-memex://schema (DDL + query patterns), llm-memex://databases (multi-db discovery + stats).
Development
pytest tests/llm_memex/ -v # run tests
pytest tests/llm_memex/ --cov=llm_memex # with coverage
License
MIT
Metadata
Release files for llm-memex 0.13.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| llm_memex-0.13.0.tar.gz | 449.6 kB | Without provenance | Details for llm_memex-0.13.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| llm_memex-0.13.0-py3-none-any.whl | Python 3 | none | any | Details for llm_memex-0.13.0-py3-none-any.whl |
Total release size: 909.1 kB
Release files / llm_memex-0.13.0.tar.gz
| Download URL | llm_memex-0.13.0.tar.gz |
|---|---|
| Size | 449.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ad564e0f8d61bdb9b64b1caebb764dc30a529e2a345ec4ba9edeb66118e63d02
|
|
BLAKE2b-256 checksum How to use checksums |
8afd06215f15990692537af069a691d9e859889f4daed65bbc287398168d21af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / llm_memex-0.13.0-py3-none-any.whl
| Download URL | llm_memex-0.13.0-py3-none-any.whl |
|---|---|
| Size | 459.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
03c898860a7b1ccf6ce98eea516207d2c53eedb129abdbd980283e329aec017e
|
|
BLAKE2b-256 checksum How to use checksums |
b37190e4882017bae2492cce0db387afc41b3cd0ca5f8c375e91cff683ba23ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Security for llm-memex 0.13.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.