A collection is a hand-picked tree
Hierarchical, cross-project, up to eight levels deep.
Project
Auto-derived from cwd. One per session. Coarse, immutable.
Tag
Flat #keyword labels. Many per session. Cross-project, auto-filterable.
Collection
Hand-picked tree, cross-project, up to 8 deep. Curated by you.
Three-layer durability
Every collection change is committed to three independent stores. If any one fails, the others can rebuild it. Same write path as tags, notes, and aliases.
- Speed
Live database
~/.recall/db.sqliteThe SQLite store that powers search, the UI, and every read. Append-only audit log of every collection change.
- Recoverability
Plain-text mirror
~/.recall/collections.jsonHuman-readable JSON, rewritten on every change. If the database is corrupted, the entire collection tree rebuilds from this file alone.
- Sacrosanct source
Original Claude files
~/.claude/projects/**Strictly read-only. Recall never writes, renames, or deletes them. Wipe everything else and your raw transcripts survive.
Collections
Tree shape and three-layer durability are above. Operational notes:
#URL sharing
Active collection lives in the URL hash as col=<uuid>. Paste anywhere; clicking opens the app filtered to that collection.
#Restoring after a wipe
If you delete ~/.recall/db.sqlite, your collections rebuild from ~/.recall/collections.json (the plain-text mirror). Future:
recall restore-collections # rebuild from JSON mirror (planned)Until that ships, the JSON mirror is your authoritative backup.
#What collections are NOT
Not tags (flat, keyword-ish). Not projects (auto from cwd). Not folders (nothing moves on disk). They cross project boundaries freely and are hand-picked by you.