@clauderecallhq/cli 0.12.1 → 0.61.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/LICENSE +37 -17
  2. package/README.md +316 -106
  3. package/dist/cli.js +1641 -361
  4. package/dist/daemon/entrypoint.js +1872 -54
  5. package/dist/mcp-server.js +930 -0
  6. package/dist/share/fonts/Inter-Bold.woff +0 -0
  7. package/dist/share/fonts/Inter-Regular.woff +0 -0
  8. package/dist/share/fonts/JetBrainsMono-Regular.woff +0 -0
  9. package/dist/web/assets/_brand-Bw9uSB4O.js +1 -0
  10. package/dist/web/assets/captureNode-9CVj9vYC.js +2 -0
  11. package/dist/web/assets/card-a-minimal-ujNERzX7.js +1 -0
  12. package/dist/web/assets/card-b-terminal-DpJ_tVpg.js +1 -0
  13. package/dist/web/assets/card-c-gradient-CZXVGuNd.js +1 -0
  14. package/dist/web/assets/card-d-dashboard-CHKD-PnB.js +1 -0
  15. package/dist/web/assets/dist-CWaokT35.js +56 -0
  16. package/dist/web/assets/index-B-HrjaDy.css +1 -0
  17. package/dist/web/assets/index-BZYcD76T.js +633 -0
  18. package/dist/web/assets/jetbrains-mono-latin-700-normal-D3wTyLJW.woff +0 -0
  19. package/dist/web/assets/patterns-BPeZb9N0.js +1 -0
  20. package/dist/web/assets/stats-BSwqSiFU.js +1 -0
  21. package/dist/web/assets/thread-D2AXyhOx.js +1 -0
  22. package/dist/web/index.html +8 -2
  23. package/package.json +57 -16
  24. package/scripts/postinstall.mjs +38 -0
  25. package/dist/cli.js.map +0 -1
  26. package/dist/commands/activate.js +0 -69
  27. package/dist/commands/activate.js.map +0 -1
  28. package/dist/commands/audit-secrets.js +0 -103
  29. package/dist/commands/audit-secrets.js.map +0 -1
  30. package/dist/commands/blame.js +0 -35
  31. package/dist/commands/blame.js.map +0 -1
  32. package/dist/commands/config-verification.js +0 -18
  33. package/dist/commands/config-verification.js.map +0 -1
  34. package/dist/commands/context.js +0 -144
  35. package/dist/commands/context.js.map +0 -1
  36. package/dist/commands/correlate.js +0 -70
  37. package/dist/commands/correlate.js.map +0 -1
  38. package/dist/commands/digest.js +0 -78
  39. package/dist/commands/digest.js.map +0 -1
  40. package/dist/commands/health.js +0 -62
  41. package/dist/commands/health.js.map +0 -1
  42. package/dist/commands/index.js +0 -247
  43. package/dist/commands/index.js.map +0 -1
  44. package/dist/commands/install-extension.js +0 -138
  45. package/dist/commands/install-extension.js.map +0 -1
  46. package/dist/commands/installs.js +0 -128
  47. package/dist/commands/installs.js.map +0 -1
  48. package/dist/commands/license.js +0 -39
  49. package/dist/commands/license.js.map +0 -1
  50. package/dist/commands/list.js +0 -47
  51. package/dist/commands/list.js.map +0 -1
  52. package/dist/commands/mcp.js +0 -29
  53. package/dist/commands/mcp.js.map +0 -1
  54. package/dist/commands/open.js +0 -28
  55. package/dist/commands/open.js.map +0 -1
  56. package/dist/commands/paste.js +0 -154
  57. package/dist/commands/paste.js.map +0 -1
  58. package/dist/commands/projects.js +0 -36
  59. package/dist/commands/projects.js.map +0 -1
  60. package/dist/commands/search.js +0 -67
  61. package/dist/commands/search.js.map +0 -1
  62. package/dist/commands/semantic.js +0 -173
  63. package/dist/commands/semantic.js.map +0 -1
  64. package/dist/commands/show.js +0 -121
  65. package/dist/commands/show.js.map +0 -1
  66. package/dist/commands/start.js +0 -47
  67. package/dist/commands/start.js.map +0 -1
  68. package/dist/commands/stats.js +0 -133
  69. package/dist/commands/stats.js.map +0 -1
  70. package/dist/commands/status.js +0 -45
  71. package/dist/commands/status.js.map +0 -1
  72. package/dist/commands/stop.js +0 -29
  73. package/dist/commands/stop.js.map +0 -1
  74. package/dist/commands/thread.js +0 -396
  75. package/dist/commands/thread.js.map +0 -1
  76. package/dist/context/formatter.js +0 -103
  77. package/dist/context/formatter.js.map +0 -1
  78. package/dist/daemon/auto-tag-config.js +0 -103
  79. package/dist/daemon/auto-tag-config.js.map +0 -1
  80. package/dist/daemon/auto-tag-config.test.js +0 -72
  81. package/dist/daemon/auto-tag-config.test.js.map +0 -1
  82. package/dist/daemon/auto-title-config.js +0 -70
  83. package/dist/daemon/auto-title-config.js.map +0 -1
  84. package/dist/daemon/bulk-title-jobs.js +0 -170
  85. package/dist/daemon/bulk-title-jobs.js.map +0 -1
  86. package/dist/daemon/correlator.js +0 -320
  87. package/dist/daemon/correlator.js.map +0 -1
  88. package/dist/daemon/discover.js +0 -316
  89. package/dist/daemon/discover.js.map +0 -1
  90. package/dist/daemon/editor-detection.js +0 -186
  91. package/dist/daemon/editor-detection.js.map +0 -1
  92. package/dist/daemon/entrypoint.js.map +0 -1
  93. package/dist/daemon/git-correlator.js +0 -256
  94. package/dist/daemon/git-correlator.js.map +0 -1
  95. package/dist/daemon/mcp-installer.js +0 -108
  96. package/dist/daemon/mcp-installer.js.map +0 -1
  97. package/dist/daemon/onboarding-state.js +0 -140
  98. package/dist/daemon/onboarding-state.js.map +0 -1
  99. package/dist/daemon/pidfile.js +0 -57
  100. package/dist/daemon/pidfile.js.map +0 -1
  101. package/dist/daemon/ports.js +0 -48
  102. package/dist/daemon/ports.js.map +0 -1
  103. package/dist/daemon/scanProgressRegistry.js +0 -62
  104. package/dist/daemon/scanProgressRegistry.js.map +0 -1
  105. package/dist/daemon/server.js +0 -2010
  106. package/dist/daemon/server.js.map +0 -1
  107. package/dist/daemon/tag-scanner/anthropic-client.js +0 -40
  108. package/dist/daemon/tag-scanner/anthropic-client.js.map +0 -1
  109. package/dist/daemon/tag-scanner/autopilot.js +0 -131
  110. package/dist/daemon/tag-scanner/autopilot.js.map +0 -1
  111. package/dist/daemon/tag-scanner/claude-cli-driver.js +0 -250
  112. package/dist/daemon/tag-scanner/claude-cli-driver.js.map +0 -1
  113. package/dist/daemon/tag-scanner/orchestrator.js +0 -88
  114. package/dist/daemon/tag-scanner/orchestrator.js.map +0 -1
  115. package/dist/daemon/tag-scanner/prompt.js +0 -46
  116. package/dist/daemon/tag-scanner/prompt.js.map +0 -1
  117. package/dist/daemon/tag-scanner/prompt.test.js +0 -48
  118. package/dist/daemon/tag-scanner/prompt.test.js.map +0 -1
  119. package/dist/daemon/tag-scanner/scan-state.js +0 -49
  120. package/dist/daemon/tag-scanner/scan-state.js.map +0 -1
  121. package/dist/daemon/tag-scanner/session-fetcher.js +0 -82
  122. package/dist/daemon/tag-scanner/session-fetcher.js.map +0 -1
  123. package/dist/daemon/tag-scanner/session-fetcher.test.js +0 -34
  124. package/dist/daemon/tag-scanner/session-fetcher.test.js.map +0 -1
  125. package/dist/daemon/tag-scanner/validator.js +0 -50
  126. package/dist/daemon/tag-scanner/validator.js.map +0 -1
  127. package/dist/daemon/tag-scanner/validator.test.js +0 -41
  128. package/dist/daemon/tag-scanner/validator.test.js.map +0 -1
  129. package/dist/daemon/terminal-registry.js +0 -443
  130. package/dist/daemon/terminal-registry.js.map +0 -1
  131. package/dist/daemon/ui.js +0 -64
  132. package/dist/daemon/ui.js.map +0 -1
  133. package/dist/daemon/watcher.js +0 -256
  134. package/dist/daemon/watcher.js.map +0 -1
  135. package/dist/db/client.js +0 -22
  136. package/dist/db/client.js.map +0 -1
  137. package/dist/db/schema.js +0 -496
  138. package/dist/db/schema.js.map +0 -1
  139. package/dist/license/api-base.js +0 -13
  140. package/dist/license/api-base.js.map +0 -1
  141. package/dist/license/manager.js +0 -43
  142. package/dist/license/manager.js.map +0 -1
  143. package/dist/license/public-key.js +0 -19
  144. package/dist/license/public-key.js.map +0 -1
  145. package/dist/license/storage.js +0 -27
  146. package/dist/license/storage.js.map +0 -1
  147. package/dist/license/verify.js +0 -23
  148. package/dist/license/verify.js.map +0 -1
  149. package/dist/mcp/audit.js +0 -126
  150. package/dist/mcp/audit.js.map +0 -1
  151. package/dist/mcp/prompts.js +0 -180
  152. package/dist/mcp/prompts.js.map +0 -1
  153. package/dist/mcp/server.js +0 -502
  154. package/dist/mcp/server.js.map +0 -1
  155. package/dist/mcp/thread-tools.js +0 -363
  156. package/dist/mcp/thread-tools.js.map +0 -1
  157. package/dist/mcp/write-tools.js +0 -239
  158. package/dist/mcp/write-tools.js.map +0 -1
  159. package/dist/parser/jsonl.js +0 -150
  160. package/dist/parser/jsonl.js.map +0 -1
  161. package/dist/semantic/chunker.js +0 -47
  162. package/dist/semantic/chunker.js.map +0 -1
  163. package/dist/semantic/config.js +0 -74
  164. package/dist/semantic/config.js.map +0 -1
  165. package/dist/semantic/embedder.js +0 -54
  166. package/dist/semantic/embedder.js.map +0 -1
  167. package/dist/semantic/fusion.js +0 -38
  168. package/dist/semantic/fusion.js.map +0 -1
  169. package/dist/semantic/model-download.js +0 -69
  170. package/dist/semantic/model-download.js.map +0 -1
  171. package/dist/semantic/pipeline.js +0 -375
  172. package/dist/semantic/pipeline.js.map +0 -1
  173. package/dist/semantic/query.js +0 -42
  174. package/dist/semantic/query.js.map +0 -1
  175. package/dist/semantic/worker.js +0 -78
  176. package/dist/semantic/worker.js.map +0 -1
  177. package/dist/stats/backfill.js +0 -151
  178. package/dist/stats/backfill.js.map +0 -1
  179. package/dist/stats/health.js +0 -102
  180. package/dist/stats/health.js.map +0 -1
  181. package/dist/stats/query.js +0 -385
  182. package/dist/stats/query.js.map +0 -1
  183. package/dist/utils/aliases.js +0 -107
  184. package/dist/utils/aliases.js.map +0 -1
  185. package/dist/utils/autoCollections.js +0 -635
  186. package/dist/utils/autoCollections.js.map +0 -1
  187. package/dist/utils/autoTitle.js +0 -348
  188. package/dist/utils/autoTitle.js.map +0 -1
  189. package/dist/utils/collections.js +0 -446
  190. package/dist/utils/collections.js.map +0 -1
  191. package/dist/utils/format.js +0 -46
  192. package/dist/utils/format.js.map +0 -1
  193. package/dist/utils/notes.js +0 -270
  194. package/dist/utils/notes.js.map +0 -1
  195. package/dist/utils/paths.js +0 -50
  196. package/dist/utils/paths.js.map +0 -1
  197. package/dist/utils/pricing.js +0 -257
  198. package/dist/utils/pricing.js.map +0 -1
  199. package/dist/utils/secret-scanner.js +0 -166
  200. package/dist/utils/secret-scanner.js.map +0 -1
  201. package/dist/utils/sessionLabel.js +0 -64
  202. package/dist/utils/sessionLabel.js.map +0 -1
  203. package/dist/utils/tags.js +0 -97
  204. package/dist/utils/tags.js.map +0 -1
  205. package/dist/utils/thread-context.js +0 -129
  206. package/dist/utils/thread-context.js.map +0 -1
  207. package/dist/utils/threadFilter.js +0 -18
  208. package/dist/utils/threadFilter.js.map +0 -1
  209. package/dist/utils/threads-titler.js +0 -298
  210. package/dist/utils/threads-titler.js.map +0 -1
  211. package/dist/utils/threads.js +0 -383
  212. package/dist/utils/threads.js.map +0 -1
  213. package/dist/utils/usage.js +0 -76
  214. package/dist/utils/usage.js.map +0 -1
  215. package/dist/verification/compute.js +0 -88
  216. package/dist/verification/compute.js.map +0 -1
  217. package/dist/verification/config.js +0 -34
  218. package/dist/verification/config.js.map +0 -1
  219. package/dist/web/assets/index-CIr6J4Fw.js +0 -1201
  220. package/dist/web/assets/index-Ctc8g9Jw.css +0 -1
package/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
  <div align="center">
2
2
 
3
3
  <picture>
4
- <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/clauderecallhq/.github/main/profile/assets/wordmark-dark.svg">
5
- <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/clauderecallhq/.github/main/profile/assets/wordmark-light.svg">
6
- <img src="https://raw.githubusercontent.com/clauderecallhq/.github/main/profile/assets/wordmark-dark.svg" alt="Claude Recall" width="400">
4
+ <source media="(prefers-color-scheme: dark)" srcset="https://clauderecall.com/wordmark-dark.svg">
5
+ <source media="(prefers-color-scheme: light)" srcset="https://clauderecall.com/wordmark-light.svg">
6
+ <img src="https://clauderecall.com/wordmark-dark.svg" alt="Claude Recall" width="400">
7
7
  </picture>
8
8
 
9
9
  <br />
@@ -15,8 +15,13 @@ Claude Recall indexes every Claude Code session you've ever run, surfaces what m
15
15
 
16
16
  <br />
17
17
 
18
+ <img src="https://clauderecall.com/hero/brand-morph.gif" alt="Claude Recall — memory tree morphing into the wordmark" width="700">
19
+
20
+ <br />
21
+ <br />
22
+
18
23
  [![npm](https://img.shields.io/npm/v/@clauderecallhq/cli?style=flat-square&color=f97316&label=npm)](https://www.npmjs.com/package/@clauderecallhq/cli)
19
- [![Node](https://img.shields.io/badge/node-%E2%89%A522-43853d?style=flat-square&logo=node.js&logoColor=white)](https://nodejs.org)
24
+ [![Node](https://img.shields.io/badge/node-%E2%89%A520-43853d?style=flat-square&logo=node.js&logoColor=white)](https://nodejs.org)
20
25
  [![TypeScript](https://img.shields.io/badge/typescript-strict-3178c6?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
21
26
  [![Local-first](https://img.shields.io/badge/local--first-127.0.0.1%20only-0b0c0f?style=flat-square)](#privacy--security)
22
27
  [![License](https://img.shields.io/badge/license-proprietary-1a1a2e?style=flat-square)](#license)
@@ -101,23 +106,50 @@ Claude picks up where you left off instead of asking you to explain it again.
101
106
  <tr>
102
107
  <td width="50%" valign="top">
103
108
 
104
- ### Search Everything
105
- Full-text search across 100,000+ messages in milliseconds. BM25 ranking, highlighted snippets, inline `#tag` filters.
109
+ ### Context Re-injection &nbsp;<sub>← the moat</sub>
110
+ Pipe any past session straight into a new Claude Code conversation as condensed markdown. Claude picks up where you left off instead of asking you to re-explain it. **Nothing else in this category has it.**
111
+
112
+ ```bash
113
+ recall context <id> | claude
114
+ recall context <id> --prelude "continue this" | claude
115
+ recall context <id> --since 2h | claude
116
+ ```
117
+
118
+ </td>
119
+ <td width="50%" valign="top">
120
+
121
+ ### Threads &nbsp;<sub>NEW · v0.15a</sub>
122
+ Group related sessions into a DAG you can see, rename, and walk. Drag-to-reparent in the graph view. Right-click rename. Bulk-generate coherent titles across an entire thread with one click.
123
+
124
+ ```bash
125
+ recall thread list
126
+ recall thread create "auth-refactor"
127
+ recall thread add <thread> <session>
128
+ ```
129
+
130
+ </td>
131
+ </tr>
132
+ <tr>
133
+ <td width="50%" valign="top">
134
+
135
+ ### Full-Text Search
136
+ FTS5 BM25 ranking across every message, every session, in milliseconds. Highlighted snippets, inline `#tag` filters, project + date scoping.
106
137
 
107
138
  ```bash
108
139
  recall search "zod schema"
109
- recall search "auth #auth-fix"
140
+ recall search "auth #auth-fix" -p Pest-Control
110
141
  ```
111
142
 
112
143
  </td>
113
144
  <td width="50%" valign="top">
114
145
 
115
- ### Context Re-injection
116
- The core feature. Pipe any past session into a new Claude Code conversation as condensed markdown. Runs locally, never touches the network.
146
+ ### On-Device Vector Search &nbsp;<sub>Pro</sub>
147
+ Local **768-dimension embeddings** via `bge-base-en-v1.5` ONNX. Three-lane RRF fusion (BM25 + summary + vectors) finds sessions by *meaning*, not keywords. Your code never leaves your laptop.
148
+
149
+ The embedder model (~110MB) auto-downloads on `npm install`. Skip with `RECALL_SKIP_MODEL_DOWNLOAD=1`.
117
150
 
118
151
  ```bash
119
- recall context <id> | claude
120
- recall context <id> --prelude "continue this" | claude
152
+ recall similar <session-id>
121
153
  ```
122
154
 
123
155
  </td>
@@ -130,8 +162,7 @@ Per-session and per-project token + dollar totals. Daily sparkline. Top-10 heavi
130
162
 
131
163
  ```bash
132
164
  recall stats <id>
133
- recall stats --project Tools
134
- recall stats --days 7
165
+ recall stats --project Tools --days 7
135
166
  ```
136
167
 
137
168
  </td>
@@ -150,19 +181,14 @@ recall blame <sha>
150
181
  <tr>
151
182
  <td width="50%" valign="top">
152
183
 
153
- ### Semantic Search
154
- Conceptual search powered by your local `claude` CLI. Find "the session where I debugged the worker memory leak" without remembering exact words.
155
-
156
- ```bash
157
- recall semantic on
158
- recall semantic backfill
159
- ```
184
+ ### Auto-Tagging
185
+ Let Claude label your sessions automatically. Two modes: **MCP mode** (zero-setup, runs through your existing Claude Code subscription at no extra cost) or **BYOK** (paste your own Anthropic API key). Off by default, fully opt-in.
160
186
 
161
187
  </td>
162
188
  <td width="50%" valign="top">
163
189
 
164
- ### MCP Server
165
- Expose Recall to Claude Desktop, Claude Code, or any MCP client as native tools. Read-only by default, opt-in write tools with rate limiting and audit logging.
190
+ ### MCP Server &nbsp;<sub>31 tools</sub>
191
+ Expose Recall to Claude Desktop, Claude Code, or any MCP client as native tools. **13 read tools always on**, **18 write tools** opt-in with rate limiting and append-only audit logging.
166
192
 
167
193
  ```bash
168
194
  recall mcp
@@ -174,14 +200,36 @@ recall mcp --allow-writes
174
200
  <tr>
175
201
  <td width="50%" valign="top">
176
202
 
177
- ### Collections & Tags
178
- Hand-curated hierarchical groupings of sessions that cut across projects. Human-readable aliases. Auto-tagging via your Anthropic API key or Claude CLI (zero extra cost).
203
+ ### Collections, Tags & Notes
204
+ Hand-curated hierarchical collections that cut across projects. Flat tags. Markdown notes per session. Aliases. Pins. Cross-session diff. Every write is reversible -- three-layer durability with plain-text mirrors on disk.
179
205
 
180
206
  </td>
181
207
  <td width="50%" valign="top">
182
208
 
183
209
  ### Web UI
184
- Beautiful dark-mode three-pane layout. Virtualized transcript rendering (10,000-message sessions open instantly). `Cmd+K` command palette. Multi-select. Export to markdown, HTML, or PDF.
210
+ Dark-mode three-pane layout. **Virtualized transcript** (10,000-message sessions open instantly). `Cmd+K` command palette. Cross-session diff. First-60-seconds onboarding tour. Export to markdown, HTML, or print-ready PDF.
211
+
212
+ </td>
213
+ </tr>
214
+ <tr>
215
+ <td width="50%" valign="top">
216
+
217
+ ### Rediscovery &nbsp;<sub>"For you"</sub>
218
+ Three rotating cards in the left pane surface forgotten sessions worth revisiting: a 60+-day-old session that overlaps with what you've been working on, your top-cost session this week, and the session that authored your current `HEAD`.
219
+
220
+ ```bash
221
+ recall digest
222
+ ```
223
+
224
+ </td>
225
+ <td width="50%" valign="top">
226
+
227
+ ### IDE Extension
228
+ **VS Code · Cursor · Windsurf · VS Code Insiders.** Tag terminal tabs from inside your editor -- terminal names sync to Recall so sessions get meaningful aliases with zero CLI ceremony, live as you rename tabs.
229
+
230
+ ```bash
231
+ recall install-extension
232
+ ```
185
233
 
186
234
  </td>
187
235
  </tr>
@@ -190,16 +238,17 @@ Beautiful dark-mode three-pane layout. Virtualized transcript rendering (10,000-
190
238
  <br />
191
239
 
192
240
  <details>
193
- <summary><strong>More: VS Code extension, cross-session diff, onboarding, keyboard shortcuts...</strong></summary>
241
+ <summary><strong>More: secrets redaction, memory health, audit log, keyboard shortcuts...</strong></summary>
194
242
 
195
243
  <br />
196
244
 
197
- - **VS Code / Cursor / Windsurf extension** -- auto-names sessions using terminal tab names via process-tree matching
198
- - **Cross-session diff** -- split view of two transcripts with shareable `cmp=` URL
199
- - **First-run onboarding** -- a 3-step tour that demos the moat in the first 60 seconds
200
- - **Multi-select sessions** -- `Cmd+Click` to toggle, `Shift+Click` for range, right-click to copy IDs
201
- - **Export** -- condensed markdown, full markdown, self-contained dark-mode HTML, print-ready PDF
202
- - **Cmd+K command palette** -- jump to any session, action, or setting in one keystroke
245
+ - **Secrets redaction** -- API keys, auth tokens, passwords, private-key blobs are detected by pattern and replaced with placeholders **before** text lands in the searchable index or any export. Original JSONLs untouched.
246
+ - **Memory health scores** -- every session gets a freshness score; surfaces stale data so you know when to re-run a backfill.
247
+ - **MCP audit log** -- every write tool call lands in `mcp_audit_events` with status (ok / error / rate_limited). Pure local, no telemetry.
248
+ - **First-60-seconds onboarding** -- 3-step modal demos the moat (`recall context <id> | claude`) the moment you open the web UI.
249
+ - **Cmd+K command palette** -- jump to any session, action, or setting in one keystroke.
250
+ - **Multi-select sessions** -- `Cmd+Click` toggle, `Shift+Click` range, right-click to copy IDs.
251
+ - **Three-layer durability** -- every write goes to SQLite + an append-only history column + a plain-text mirror on disk. Source JSONLs at `~/.claude/projects/` are strictly read-only.
203
252
 
204
253
  #### Keyboard Shortcuts
205
254
 
@@ -242,6 +291,19 @@ recall open
242
291
 
243
292
  The daemon watches `~/.claude/projects/` for new and changed session files, indexes them into a local SQLite database at `~/.recall/db.sqlite`, and serves the web UI on a random `127.0.0.1` port.
244
293
 
294
+ ### Browse
295
+
296
+ Two interactive surfaces, both work without the daemon (they read SQLite directly):
297
+
298
+ ```bash
299
+ recall # smart welcome dashboard with status + slash command palette
300
+ recall tui # full terminal UI: arrow-key browse, live search, preview pane
301
+ ```
302
+
303
+ `recall` (no args) prints a branded splash with version / daemon / sessions / license status and drops into a slash-aware prompt; type `/` to browse 60+ commands grouped by purpose (Setup, Browse, Pipe to Claude, Threads, Inference, Analytics, Daemon, Diagnostics, Integrations, Sharing, Feedback, Pro).
304
+
305
+ `recall tui` mounts an Ink-based terminal app modeled on `lazygit` and `k9s`. Arrow keys to navigate, `/` to filter, `enter` to view the full transcript, `o` to open the selected session in the browser, `q` to quit.
306
+
245
307
  ### Explore
246
308
 
247
309
  ```bash
@@ -265,6 +327,44 @@ recall context abc12345 --prelude "continue where we left off" | claude
265
327
  recall context abc12345 --since 2h | claude
266
328
  ```
267
329
 
330
+ ### How Claude Recall integrates with Claude Code
331
+
332
+ Don't think of Claude Recall as a *separate* tool you context-switch to. It's **Claude Code's memory layer** — you reach it from inside any session through four surfaces, in increasing power:
333
+
334
+ **1. Bash tool — always available, zero setup.**
335
+
336
+ Inside any Claude Code conversation, just say *"run `recall search auth bug`"* (or any other recall command). The Bash tool executes it; output lands in the conversation. Works the moment you `npm install -g @clauderecallhq/cli` — no config.
337
+
338
+ **2. Slash commands (skills) — one-tap workflows.**
339
+
340
+ When Claude Recall is installed as a Claude Code plugin, typing `/` in Claude Code surfaces ready-made workflows:
341
+
342
+ | Slash command | What it does |
343
+ |---|---|
344
+ | `/claude-recall:recall <query>` | Search past sessions and pull relevant ones in as context |
345
+ | `/claude-recall:context <id>` | Load one specific session's full transcript |
346
+ | `/claude-recall:neighborhood <id>` | Bundle parents + children + citations + similar |
347
+ | `/claude-recall:tag <id> <tag>` | Tag a session for later retrieval |
348
+ | `/claude-recall:alias <id> <name>` | Rename a session |
349
+ | `/claude-recall:threads-sync` | Capture currently active terminals into a thread |
350
+ | `/claude-recall:thread-scan` | Auto-detect threads across historical sessions |
351
+ | `/claude-recall:setup` | Verify installation and MCP connection |
352
+
353
+ **3. MCP server — the model calls Recall directly.**
354
+
355
+ The most powerful surface. With `recall mcp` registered as an MCP server in Claude Code, the model itself decides when to call Recall mid-conversation. Ask *"have I solved this auth bug before?"* and Claude calls `search` autonomously, gets results, and uses them. Ask *"pull yesterday's context"* and it calls `context_for_session`. No commands, no slash menu — pure intent.
356
+
357
+ **4. Piping into a fresh `claude` — start tomorrow with yesterday's context.**
358
+
359
+ The cross-session continuation pattern, run from your shell:
360
+
361
+ ```bash
362
+ recall neighborhood abc12345 | claude # bundle related sessions, start fresh chat
363
+ recall context abc12345 | claude # one specific session, start fresh chat
364
+ ```
365
+
366
+ Use case: you finish work Monday night, restart Tuesday morning with a clean Claude Code window, and want it to know what happened yesterday without re-explaining.
367
+
268
368
  ### MCP Server
269
369
 
270
370
  Point any MCP client at Recall and the model calls it as native tools:
@@ -280,11 +380,11 @@ Point any MCP client at Recall and the model calls it as native tools:
280
380
  ```
281
381
 
282
382
  <details>
283
- <summary><strong>Available MCP tools (31 total)</strong></summary>
383
+ <summary><strong>Available MCP tools (33 total)</strong></summary>
284
384
 
285
385
  <br />
286
386
 
287
- **Read tools (13 -- always available):**
387
+ **Read tools (14 -- always available):**
288
388
 
289
389
  | Tool | Purpose |
290
390
  |---|---|
@@ -298,11 +398,12 @@ Point any MCP client at Recall and the model calls it as native tools:
298
398
  | `semantic_status` | Health snapshot: model, worker, queue depth (Pro) |
299
399
  | `get_session` | Full transcript (accepts 8+ char id prefix) |
300
400
  | `context_for_session` | Condensed markdown export, ready to inject |
401
+ | `recall_neighborhood` | Bundle parents/children/citations/similar as one budget-bounded markdown blob |
301
402
  | `thread_list` | All threads, newest first; can exclude archived |
302
403
  | `thread_get` | Full thread detail with every session edge |
303
404
  | `thread_for_session` | Non-archived threads referencing a session |
304
405
 
305
- **Write tools (18 -- opt-in via `--allow-writes`):**
406
+ **Write tools (19 -- opt-in via `--allow-writes`):**
306
407
 
307
408
  | Tool | Purpose |
308
409
  |---|---|
@@ -321,6 +422,7 @@ Point any MCP client at Recall and the model calls it as native tools:
321
422
  | `thread_archive` | Soft-delete thread; hidden by default |
322
423
  | `thread_merge` | Move all edges from source to dest, delete source |
323
424
  | `thread_split` | Peel sessions into new thread |
425
+ | `sync_active_sessions` | Capture currently-active terminals in a repo into a thread (Captain Code Pattern) |
324
426
  | `generate_thread_titles` | Generate coherent titles for sessions in thread DAG |
325
427
 
326
428
  All writes are rate-limited (default 60/min), zod-validated, and audited to `~/.recall/audit/`.
@@ -336,27 +438,34 @@ All writes are rate-limited (default 60/min), zod-validated, and audited to `~/.
336
438
  ## How It Works
337
439
 
338
440
  ```
339
- ~/.claude/projects/**/*.jsonl <-- Claude Code's session files (read-only)
441
+ ~/.claude/projects/**/*.jsonl <-- Claude Code's session files (read-only to Recall)
340
442
  |
341
443
  v chokidar file watcher
342
- ~/.recall/db.sqlite <-- indexed database (FTS5 full-text search)
444
+ ~/.recall/db.sqlite <-- indexed database (FTS5 + sqlite-vec 768d)
445
+ |
446
+ +-- background embedding worker (idle-aware, transactional)
447
+ +-- git correlator (read-only `git log` scoped to session cwd)
448
+ +-- semantic / auto-tag scanner (opt-in, off by default)
343
449
  |
344
450
  +-----+-----+
345
451
  | |
346
452
  CLI HTTP server (Hono, 127.0.0.1 only)
347
453
  | |
348
- recall ... Web UI (React + Tailwind SPA)
454
+ recall ... Web UI (React + Tailwind SPA, Vite-bundled)
455
+ MCP server (stdio, 31 tools, opt-in writes)
349
456
  ```
350
457
 
351
458
  ### Data stays local
352
459
 
353
460
  | Path | What |
354
461
  |---|---|
355
- | `~/.recall/db.sqlite` | Indexed database (projects, sessions, messages, FTS5, aliases, notes, tags, collections, semantic summaries, commit links, usage rollups, audit logs) |
462
+ | `~/.recall/db.sqlite` | Indexed database (projects, sessions, messages, FTS5, vectors, aliases, notes, tags, collections, threads, semantic summaries, commit links, usage rollups, audit logs) |
356
463
  | `~/.recall/aliases.json` | Plain-text mirror of every alias with full edit history |
357
464
  | `~/.recall/notes/<session>.md` | One markdown file per session note |
358
465
  | `~/.recall/tags.json` | Current tag state + append-only event log |
359
466
  | `~/.recall/collections.json` | Current tree state + append-only event log |
467
+ | `~/.recall/semantic/<id>.json` | Per-session summary + keywords (semantic mode) |
468
+ | `~/.recall/license.jwt` | Activated Pro license (offline-validatable, dead-man clause) |
360
469
 
361
470
  <br />
362
471
 
@@ -368,8 +477,16 @@ All writes are rate-limited (default 60/min), zod-validated, and audited to `~/.
368
477
 
369
478
  Claude Recall is **local-first by design**, not as an afterthought.
370
479
 
371
- - The daemon binds to **`127.0.0.1` only**. Never `0.0.0.0`, never a public interface.
372
- - **No telemetry.** No analytics. No outbound network calls. The only exception is a one-time license check when you activate a Pro key.
480
+ - **The daemon binds to `127.0.0.1` only.** Never `0.0.0.0`, never a public interface.
481
+ - **No telemetry. No analytics. No background phone-home.** The daemon, file watcher, indexer, and web UI never make outbound network calls. Your session content never leaves your machine.
482
+ - **The only outbound calls are user-initiated**, never automatic, and never transmit your session data:
483
+
484
+ | Command | Endpoint | What it sends | What it gets |
485
+ |---|---|---|---|
486
+ | `recall activate <key>` | `clauderecall.com` | The license key only | A signed JWT for offline validation |
487
+ | `recall semantic install` | `huggingface.co` | Nothing about you | The `bge-base-en-v1.5` ONNX model file |
488
+
489
+ Both are optional and not required for core indexing, search, or context re-injection. Skip them and Recall is fully air-gapped.
373
490
  - **No cloud. No account.** Your data lives at `~/.recall/` and nowhere else.
374
491
  - **Source sessions are never modified.** Claude Code's JSONL files at `~/.claude/projects/` are strictly read-only to Recall.
375
492
  - **Never-delete-data invariant.** Every write enforces three independent durability layers: SQLite with history columns, plain-text mirror on disk, and source JSONLs untouched. Renaming, clearing, or removing anything is always additive -- the prior value is archived, never destroyed.
@@ -388,6 +505,10 @@ Claude Recall is **local-first by design**, not as an afterthought.
388
505
  <br />
389
506
 
390
507
  ```bash
508
+ # Surfaces
509
+ recall # smart welcome dashboard + slash command palette (no args)
510
+ recall tui # interactive terminal UI for browsing and search
511
+
391
512
  # Lifecycle
392
513
  recall start # start daemon (watcher + local HTTP)
393
514
  recall stop # stop daemon
@@ -433,14 +554,38 @@ recall stats --backfill # one-shot usage backfill
433
554
  recall correlate # link sessions to commits
434
555
  recall blame <sha> # commit -> session reverse lookup
435
556
 
436
- # Semantic search
437
- recall semantic on # enable conceptual search
438
- recall semantic status # backfill progress
439
- recall semantic backfill # run now
557
+ # Semantic / vector search (Pro)
558
+ # Embedder model auto-installs on `npm install`; manual install also available.
559
+ recall semantic install # download on-device embedding model (auto-runs on npm install)
560
+ recall semantic status # model + backfill progress + auto-extract state
561
+ recall semantic reindex # re-embed everything
562
+ recall semantic auto-extract on # daemon nibbles un-extracted sessions through Claude (Pro)
563
+ recall similar <id> # cosine kNN over session chunks
564
+
565
+ # Threads (v0.15a)
566
+ recall thread list # all threads, newest first
567
+ recall thread create <name> # new thread
568
+ recall thread add <t> <s> # attach session to thread
569
+
570
+ # Rediscovery
571
+ recall digest # today's "For you" picks
572
+ recall digest --json # machine-readable
440
573
 
441
574
  # MCP server
442
575
  recall mcp # stdio, read-only
443
576
  recall mcp --allow-writes # opt-in write tools
577
+
578
+ # Pro license
579
+ recall activate <key> # one-time activation, offline forever
580
+ recall license # show license status
581
+
582
+ # IDE extension
583
+ recall install-extension # auto-install for VS Code / Cursor / Windsurf
584
+
585
+ # Maintenance
586
+ recall health # memory health scores per project
587
+ recall paste # archive clipboard content into Recall (opt-in)
588
+ recall audit-secrets # scan index for residual secrets
444
589
  ```
445
590
 
446
591
  </details>
@@ -455,13 +600,16 @@ recall mcp --allow-writes # opt-in write tools
455
600
 
456
601
  | Layer | Technology |
457
602
  |---|---|
458
- | CLI + daemon | TypeScript 5 (strict), Node 22+, ESM |
603
+ | CLI + daemon | TypeScript (strict), Node 20+, ESM |
459
604
  | HTTP server | Hono + @hono/node-server |
460
605
  | Database | better-sqlite3 with FTS5 full-text search |
606
+ | Vector store | sqlite-vec (768d, on-device) |
607
+ | Embeddings | @huggingface/transformers (`bge-base-en-v1.5` ONNX) |
461
608
  | File watcher | chokidar |
462
609
  | CLI parsing | commander |
463
610
  | MCP server | @modelcontextprotocol/sdk (stdio) |
464
611
  | Validation | zod |
612
+ | Auth | jose (offline-validatable signed JWT licenses) |
465
613
  | Web UI | Vite 8 + React 19 + Tailwind CSS |
466
614
  | Data fetching | @tanstack/react-query |
467
615
  | Virtualization | @tanstack/react-virtual |
@@ -473,80 +621,136 @@ recall mcp --allow-writes # opt-in write tools
473
621
 
474
622
  <br />
475
623
 
624
+ ## Supported Platforms
625
+
626
+ Claude Recall is a Node.js CLI with a few native dependencies (`better-sqlite3`, `sqlite-vec`, and the optional `@huggingface/transformers` for semantic search). npm picks the right prebuilt binary for your platform automatically; no compile toolchain required.
627
+
628
+ | Platform | Tier | Status |
629
+ |---|---|---|
630
+ | **macOS** arm64 (Apple Silicon, M1+) | Tier 1 | Tested in pre-publish smoke test |
631
+ | **macOS** x64 (Intel) | Tier 1 | Tested in pre-publish smoke test |
632
+ | **Linux** x64 (glibc, kernel 4.x+) | Tier 1 | Tested on every CI run (Node 22, 24) |
633
+ | **Linux** arm64 (glibc) | Tier 2 | Best-effort. Native deps ship arm64 prebuilds; report issues if you hit one |
634
+ | **Windows** x64 (Windows 10+) | Tier 1 | Tested in pre-publish smoke test |
635
+ | Windows arm64 / Linux musl (Alpine) / 32-bit | Unsupported | Native deps lack reliable prebuilds; install will be rejected |
636
+
637
+ **Node:** 22 LTS or 24 LTS. Node 20 and earlier are unsupported (declared in `engines.node`).
638
+
639
+ **Semantic search is optional.** The on-device embedder is the only feature that loads the native ONNX runtime. The model auto-downloads (~110MB) on `npm install`; skip with `RECALL_SKIP_MODEL_DOWNLOAD=1` and install later via `recall semantic install`. Core CLI features — search, list, context, daemon, MCP — work on every supported platform regardless of whether the embedder is installed. If the embedder fails to load on your platform, you get a clear error pointing here, and the rest of Claude Recall keeps working.
640
+
641
+ <br />
642
+
643
+ ---
644
+
645
+ <br />
646
+
476
647
  ## Distribution
477
648
 
478
649
  Claude Recall ships on every surface a developer already works in.
479
650
 
480
- | Surface | Identity | Version | Install |
481
- |---|---|---|---|
482
- | **npm** (CLI + MCP) | [`@clauderecallhq/cli`](https://www.npmjs.com/package/@clauderecallhq/cli) | v0.12.0 | `npm i -g @clauderecallhq/cli` |
483
- | **VS Code Marketplace** | [`clauderecallhq.clauderecall-vscode`](https://marketplace.visualstudio.com/items?itemName=clauderecallhq.clauderecall-vscode) | v0.8.3 | Search "Claude Recall" in Extensions |
484
- | **MCP Registry** | [`io.github.clauderecallhq/recall`](https://registry.modelcontextprotocol.io/v0.1/servers/io.github.clauderecallhq%2Frecall/versions/0.12.0) | v0.12.0 | Auto-discovered by MCP clients |
485
- | **Plugin Hub** | `claude-recall` | -- | `/plugin install claude-recall` in Claude Code |
486
- | **Website** | [clauderecall.com](https://clauderecall.com) | v0.4.0 | -- |
651
+ | Surface | Identity | Install |
652
+ |---|---|---|
653
+ | **npm** (CLI + MCP) | [`@clauderecallhq/cli`](https://www.npmjs.com/package/@clauderecallhq/cli) | `npm i -g @clauderecallhq/cli` |
654
+ | **VS Code Marketplace** | [`clauderecallhq.clauderecall-vscode`](https://marketplace.visualstudio.com/items?itemName=clauderecallhq.clauderecall-vscode) | Search "Claude Recall" in Extensions |
655
+ | **MCP Registry** | [`io.github.clauderecallhq/recall`](https://registry.modelcontextprotocol.io/) | Auto-discovered by MCP clients |
656
+ | **Claude Code Plugin Hub** | `claude-recall` | `/plugin install claude-recall` in Claude Code |
657
+ | **Website** | [clauderecall.com](https://clauderecall.com) | -- |
487
658
 
488
- ### How the pieces connect
659
+ The npm package ships **the CLI and the MCP server**. The VS Code extension is a thin companion that talks to the local daemon over `127.0.0.1`. The MCP Registry and Claude Code Plugin Hub both point back to the npm package -- one source of truth, one update pipeline.
489
660
 
490
- ```
491
- npm package (@clauderecallhq/cli)
492
- |
493
- +-- CLI binary: `recall`
494
- +-- MCP server: `recall mcp` (stdio transport)
495
- |
496
- +-- MCP Registry points here via npx
497
- +-- Plugin Hub points here via npx
498
- |
499
- VS Code extension (independent)
500
- +-- Talks to daemon over HTTP (127.0.0.1)
501
- +-- Does NOT run MCP tools
502
- |
503
- Website (clauderecall.com)
504
- +-- Auto-deploys on push via GitHub Actions
505
- +-- Marketing, docs, /metrics dashboard
506
- ```
661
+ <br />
507
662
 
508
- ### Tracking installs
663
+ ---
664
+
665
+ <br />
666
+
667
+ ## Pricing
668
+
669
+ One tier is free forever. One tier is a **one-time** purchase that works offline for life, even if we disappear. One tier is a conversation.
670
+
671
+ <table>
672
+ <tr>
673
+ <td width="33%" valign="top">
674
+
675
+ ### Free
676
+
677
+ **$0**
678
+ Forever. No signup. No credit card.
679
+
680
+ - Full indexing of every `~/.claude/projects/` JSON-L
681
+ - CLI: `list`, `show`, `projects`, `status`
682
+ - Web UI: browse projects, read transcripts, copy code
683
+ - Three-layer durability
509
684
 
510
685
  ```bash
511
- recall installs # npm downloads + VS Code installs in one view
512
- recall installs --json # machine-readable output
686
+ npm install -g @clauderecallhq/cli
513
687
  ```
514
688
 
515
- Live dashboard: [clauderecall.com/metrics](https://clauderecall.com/metrics)
689
+ </td>
690
+ <td width="33%" valign="top">
516
691
 
517
- ### Publishing checklist (for maintainers)
692
+ ### Pro &nbsp;<sub>← daily driver</sub>
518
693
 
519
- 1. **npm**: `npm publish --access public` (2FA required, bin entries show warning but work via `npx -p @clauderecallhq/cli recall`)
520
- 2. **VS Code**: Build .vsix in `extensions/vscode/`, upload at [marketplace.visualstudio.com/manage](https://marketplace.visualstudio.com/manage/publishers/clauderecallhq)
521
- 3. **MCP Registry**: `cd plugin && mcp-publisher publish` (requires GitHub OAuth, org membership must be Public)
522
- 4. **Plugin Hub**: Web form at `claude.ai/settings/plugins/submit`
523
- 5. **Website**: Push to `main` -- auto-deploys
694
+ **$29.69 one-time** through May 2026 (Founder pricing)
695
+ **$49.69 one-time** from June 2026 (standard)
696
+ Pay once. Offline forever. Lifetime updates. Dead-man clause included. Never a subscription.
524
697
 
525
- ### Known issue: npx scoped bin resolution
698
+ - Full-text search (FTS5 BM25)
699
+ - On-device semantic vector search (768d, RRF fusion)
700
+ - `recall context` re-injection, **the moat**
701
+ - MCP server (Claude Desktop / Claude Code native tools)
702
+ - VS Code / Cursor / Windsurf extension
703
+ - Aliases, tags, markdown notes, pins, date filters, cross-session diff
704
+ - Export: clean markdown, self-contained dark-mode HTML, print-ready
705
+ - Virtualized transcript (10k+ message sessions open instantly)
706
+ - Auto-tagging (API-key + MCP modes)
707
+ - Secrets redaction (client-side scrub of keys, tokens, passwords pre-index)
708
+ - **Every future personal-use feature.** One price, lifetime updates.
526
709
 
527
- `npx -y @clauderecallhq/cli mcp` fails because npx looks for a bin named `cli` (the unscoped package name). Workaround: `npx -p @clauderecallhq/cli recall mcp`. The MCP config in docs uses the workaround syntax.
710
+ [**Buy Pro for $29.69 (Founder pricing through May) →**](https://clauderecall.com/pricing)
711
+
712
+ </td>
713
+ <td width="33%" valign="top">
714
+
715
+ ### Enterprise
716
+
717
+ **Contact us**
718
+ Built for 50+ developer organizations.
719
+
720
+ - Shared session library with end-to-end encrypted team sync
721
+ - Team-wide tag conventions
722
+ - Local audit log (compliance-grade, not surveillance)
723
+ - SSO + per-project access control
724
+ - Priority support, named engineer
725
+ - Optional on-prem deployment
726
+
727
+ [hello@clauderecall.com](mailto:hello@clauderecall.com)
728
+
729
+ </td>
730
+ </tr>
731
+ </table>
528
732
 
529
733
  <br />
530
734
 
531
- ---
735
+ ### How it compares to what you already pay
736
+
737
+ | Tool | Price |
738
+ |---|---|
739
+ | **Claude Recall** | **$29.69 one-time** through May 2026, **$49.69 one-time** from June |
740
+ | Claude Code | $20 / mo |
741
+ | Cursor | $20 / mo |
742
+ | Raycast Pro | $8 to $16 / mo |
743
+ | GitHub Copilot | $10 / mo |
744
+
745
+ <sub>Prices as of May 2026.</sub>
532
746
 
533
747
  <br />
534
748
 
535
- ## Pricing
749
+ ### The dead-man clause
536
750
 
537
- | | Free | Pro |
538
- |---|---|---|
539
- | **Search** | Unlimited | Unlimited |
540
- | **Context re-injection** | Unlimited | Unlimited |
541
- | **Sessions indexed** | Unlimited | Unlimited |
542
- | **Cost analytics** | Unlimited | Unlimited |
543
- | **Git correlation** | Unlimited | Unlimited |
544
- | **MCP server** | Read-only | Read + Write |
545
- | **Semantic search** | -- | Included |
546
- | **Auto-tagging** | -- | Included |
547
- | **Price** | $0 | **$29.69 one-time** |
751
+ Your Pro license validates against our server exactly once, at activation. After that, Recall works **offline forever**. If `clauderecall.com` ever disappears, every existing license stays valid -- we'll publish the validation secret if we ever shut down, so you're never stranded.
548
752
 
549
- No subscriptions. No recurring fees. Pay once, own it forever.
753
+ Full pricing FAQ: **[clauderecall.com/pricing](https://clauderecall.com/pricing)**
550
754
 
551
755
  <br />
552
756
 
@@ -563,15 +767,21 @@ No subscriptions. No recurring fees. Pay once, own it forever.
563
767
  - [x] VS Code / Cursor / Windsurf extension
564
768
  - [x] MCP server (read-only)
565
769
  - [x] Collections (hierarchical, cross-project)
566
- - [x] Auto-tagging
770
+ - [x] Auto-tagging (MCP + BYOK modes)
567
771
  - [x] Cost / token analytics
568
772
  - [x] Git correlation
569
- - [x] Semantic search
570
773
  - [x] Cmd+K command palette
571
- - [x] Bidirectional MCP write tools
572
- - [x] First-run onboarding
774
+ - [x] Bidirectional MCP write tools (rate-limited + audited)
775
+ - [x] First-60-seconds onboarding
776
+ - [x] Rediscovery surface ("For you" cards)
777
+ - [x] **On-device vector search** (768d ONNX embeddings, RRF fusion)
778
+ - [x] **Threads** -- DAG view, drag-to-reparent, bulk title generation
779
+ - [x] **Pro license + dead-man clause** (offline-validatable JWT)
780
+ - [x] Memory health scores
781
+ - [x] Claude Code plugin manifest
573
782
  - [ ] Public launch at clauderecall.com
574
- - [ ] Team features
783
+ - [ ] Team features (E2E-encrypted sync, SSO, audit log)
784
+ - [ ] Enterprise tier (on-prem, named-engineer support)
575
785
 
576
786
  <br />
577
787
 
@@ -582,8 +792,8 @@ No subscriptions. No recurring fees. Pay once, own it forever.
582
792
  <div align="center">
583
793
 
584
794
  <picture>
585
- <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/clauderecallhq/.github/main/profile/assets/mark-scrollback-dark.svg">
586
- <img src="https://raw.githubusercontent.com/clauderecallhq/.github/main/profile/assets/mark-scrollback-dark.svg" alt="Claude Recall" width="48">
795
+ <source media="(prefers-color-scheme: dark)" srcset="https://clauderecall.com/mark-scrollback-dark.svg">
796
+ <img src="https://clauderecall.com/mark-scrollback-dark.svg" alt="Claude Recall" width="48">
587
797
  </picture>
588
798
 
589
799
  <br />
@@ -591,10 +801,10 @@ No subscriptions. No recurring fees. Pay once, own it forever.
591
801
 
592
802
  **Claude Recall** -- the memory layer for the agent you're steering.
593
803
 
594
- [Website](https://clauderecall.com) &nbsp;&middot;&nbsp; [Install](https://www.npmjs.com/package/@clauderecallhq/cli) &nbsp;&middot;&nbsp; [Issues](https://github.com/clauderecallhq/.github/issues)
804
+ [Website](https://clauderecall.com) &nbsp;&middot;&nbsp; [Install](https://www.npmjs.com/package/@clauderecallhq/cli) &nbsp;&middot;&nbsp; [Issues](https://gitlab.com/clauderecallhq/clauderecallhq/-/issues)
595
805
 
596
806
  <br />
597
807
 
598
- <sub>Built by <a href="https://github.com/clauderecallhq">@clauderecallhq</a></sub>
808
+ <sub>Built by <a href="https://gitlab.com/clauderecallhq">@clauderecallhq</a></sub>
599
809
 
600
810
  </div>