Claude Transcripts docs GitHub
Work in progressUnder active development — not tested as ready for use. Breaking changes land without notice, stored data may need to be discarded between revisions, and there is no auth or security model.

Database and search choices

Keep CouchDB as the store. Keep Meilisearch for lexical search, and expect to add a vector index for agent recall. Both stay swappable because every consumer goes through the webapi. MongoDB, Elasticsearch and PostgreSQL were ruled out from the start.

CouchDB

Several CouchDB traits carry weight in this design (ADR 0007):

Weaknesses: JavaScript views are clunky and ad-hoc queries limited (Mango covers common cases; richer logic lives in the webapi), and heavy analytics is not its strength. If Tier 2 analytics hit that ceiling, the answer is an added analytical store, not a replacement.

Considered: SQLite/libSQL (small footprint, but no HTTP API or replication; fine for a local-only tool, which this isn't aiming to stay), SurrealDB (younger, different replication model), RethinkDB (dormant). PouchDB is a possible future complement for offline clients, since it speaks CouchDB's replication protocol.

Meilisearch

Fast, typo-tolerant, easy to self-host, and run as a per-node index derived from CouchDB rather than replicated (ADR 0009). Typesense would be a near drop-in alternative; it was never evaluated.

Agent recall is a semantic retrieval workload, and the projects below that do it reach for vector stores (Qdrant, Chroma, LanceDB). Meilisearch's hybrid mode may not be enough, so expect a vector index (Qdrant as a service, or LanceDB embedded) behind the same /api/search, rebuilt from CouchDB like the rest.

Prior art

A survey of twelve open-source projects (June 2026; per-project notes in issues #18–#29, indexed by #30):

ProjectStoreMemory modelRecall interfaceKeeps raw transcript?
claude-memSQLite + Chromacompressed summariesMCP + hooksno
claude-self-reflectSQLite (Rust)embeddings + decayMCPimports .jsonl
Mem0vector (+ graph)reconciled factsSDK/REST/MCPno
LettaPostgres/pgvectorRAM/disk tierstool callsyes (messages)
Zep/Graphitigraph DBbi-temporal graphREST/MCPsource episodes
Cogneevector + graphgraph + vectorsSDKno
Basic Memorymarkdown + SQLiteobservation/relation graphMCPno
KhojPostgres + pgvectorRAG over documentsweb/RESTn/a
Reor (archived)LanceDBsimilaritydesktop appn/a
LangfusePostgres + ClickHouse + S3trace/observationSDK/REST/UIinputs/outputs
Arize Phoenix (ELv2)SQLite/PostgresOTel spansGraphQL/REST/UIspans
LaminarPostgres + ClickHouse + QdrantspansSQL/SDK/UIspans

What it means for this project: