@wipcomputer/memory-crystal 0.7.30 → 0.7.32

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 (211) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/SKILL.md +1 -1
  3. package/package.json +1 -1
  4. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/.env.example +0 -20
  5. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/.publish-skill.json +0 -1
  6. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/CHANGELOG.md +0 -1297
  7. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/CLA.md +0 -19
  8. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/LICENSE +0 -52
  9. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/README-ENTERPRISE.md +0 -226
  10. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/README.md +0 -151
  11. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/RELAY.md +0 -199
  12. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/SKILL.md +0 -462
  13. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/TECHNICAL.md +0 -656
  14. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/_trash/RELEASE-NOTES-v0-7-23.md +0 -48
  15. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/_trash/RELEASE-NOTES-v0-7-25.md +0 -24
  16. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/_trash/RELEASE-NOTES-v0-7-26.md +0 -7
  17. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/_trash/RELEASE-NOTES-v0-7-28.md +0 -31
  18. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/_trash/RELEASE-NOTES-v0-7-29.md +0 -28
  19. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/_trash/RELEASE-NOTES-v0-7-4.md +0 -64
  20. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/_trash/RELEASE-NOTES-v0-7-5.md +0 -19
  21. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/cloud/README.md +0 -116
  22. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/cloud/docs/gpt-system-instructions.md +0 -69
  23. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/cloud/migrations/0001_init.sql +0 -52
  24. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/migrations/0001_init.sql +0 -51
  25. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/migrations/0002_cloud_storage.sql +0 -49
  26. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/openclaw.plugin.json +0 -11
  27. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/package-lock.json +0 -4169
  28. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/package.json +0 -61
  29. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/scripts/crystal-capture.sh +0 -29
  30. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/scripts/deploy-cloud.sh +0 -153
  31. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/scripts/ldm-backup.sh +0 -116
  32. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/scripts/migrate-lance-to-sqlite.mjs +0 -218
  33. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/skills/memory/SKILL.md +0 -438
  34. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/wrangler-demo.toml +0 -8
  35. package/.worktrees/memory-crystal-private--cc-mini-fix-home-fallback/wrangler-mcp.toml +0 -24
  36. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/.env.example +0 -20
  37. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/.publish-skill.json +0 -1
  38. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/CHANGELOG.md +0 -1297
  39. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/CLA.md +0 -19
  40. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/LICENSE +0 -52
  41. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/README-ENTERPRISE.md +0 -226
  42. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/README.md +0 -151
  43. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/RELAY.md +0 -199
  44. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/RELEASE-NOTES-v0.7.30.md +0 -29
  45. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/SKILL.md +0 -462
  46. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/TECHNICAL.md +0 -656
  47. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/_trash/RELEASE-NOTES-v0-7-23.md +0 -48
  48. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/_trash/RELEASE-NOTES-v0-7-25.md +0 -24
  49. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/_trash/RELEASE-NOTES-v0-7-26.md +0 -7
  50. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/_trash/RELEASE-NOTES-v0-7-28.md +0 -31
  51. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/_trash/RELEASE-NOTES-v0-7-29.md +0 -28
  52. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/_trash/RELEASE-NOTES-v0-7-4.md +0 -64
  53. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/_trash/RELEASE-NOTES-v0-7-5.md +0 -19
  54. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/cloud/README.md +0 -116
  55. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/cloud/docs/gpt-system-instructions.md +0 -69
  56. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/cloud/migrations/0001_init.sql +0 -52
  57. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/migrations/0001_init.sql +0 -51
  58. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/migrations/0002_cloud_storage.sql +0 -49
  59. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/openclaw.plugin.json +0 -11
  60. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/package-lock.json +0 -4169
  61. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/package.json +0 -61
  62. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/scripts/crystal-capture.sh +0 -29
  63. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/scripts/deploy-cloud.sh +0 -153
  64. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/scripts/ldm-backup.sh +0 -116
  65. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/scripts/migrate-lance-to-sqlite.mjs +0 -218
  66. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/skills/memory/SKILL.md +0 -438
  67. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/wrangler-demo.toml +0 -8
  68. package/.worktrees/memory-crystal-private--cc-mini-release-notes-v0.7.30/wrangler-mcp.toml +0 -24
  69. package/_trash/RELEASE-NOTES-v0-7-23.md +0 -48
  70. package/_trash/RELEASE-NOTES-v0-7-25.md +0 -24
  71. package/_trash/RELEASE-NOTES-v0-7-26.md +0 -7
  72. package/_trash/RELEASE-NOTES-v0-7-28.md +0 -31
  73. package/_trash/RELEASE-NOTES-v0-7-29.md +0 -28
  74. package/_trash/RELEASE-NOTES-v0-7-4.md +0 -64
  75. package/_trash/RELEASE-NOTES-v0-7-5.md +0 -19
  76. package/_trash/RELEASE-NOTES-v0.7.30.md +0 -29
  77. package/dist/bridge.d.ts +0 -7
  78. package/dist/bridge.js +0 -14
  79. package/dist/bulk-copy.d.ts +0 -17
  80. package/dist/bulk-copy.js +0 -90
  81. package/dist/cc-hook.d.ts +0 -8
  82. package/dist/cc-hook.js +0 -368
  83. package/dist/cc-poller.d.ts +0 -1
  84. package/dist/cc-poller.js +0 -550
  85. package/dist/chunk-25LXQJ4Z.js +0 -110
  86. package/dist/chunk-2DRXIRQW.js +0 -97
  87. package/dist/chunk-2ZNH5F6E.js +0 -1281
  88. package/dist/chunk-3G3SFYYI.js +0 -288
  89. package/dist/chunk-3RG5ZIWI.js +0 -10
  90. package/dist/chunk-3S6TI23B.js +0 -97
  91. package/dist/chunk-3VFIJYS4.js +0 -818
  92. package/dist/chunk-52QE3YI3.js +0 -1169
  93. package/dist/chunk-57RP3DIN.js +0 -1205
  94. package/dist/chunk-5HSZ4W2P.js +0 -62
  95. package/dist/chunk-645IPXW3.js +0 -290
  96. package/dist/chunk-7A7ELD4C.js +0 -1205
  97. package/dist/chunk-7FYY4GZM.js +0 -1205
  98. package/dist/chunk-7IUE7ODU.js +0 -254
  99. package/dist/chunk-7RMLKZIS.js +0 -108
  100. package/dist/chunk-AA3OPP4Z.js +0 -432
  101. package/dist/chunk-AEWLSYPH.js +0 -72
  102. package/dist/chunk-ASSZDR6I.js +0 -108
  103. package/dist/chunk-AYRJVWUC.js +0 -1205
  104. package/dist/chunk-CCYI5O3D.js +0 -148
  105. package/dist/chunk-D3I3ZSE2.js +0 -411
  106. package/dist/chunk-DACSKLY6.js +0 -219
  107. package/dist/chunk-DW5B4BL7.js +0 -108
  108. package/dist/chunk-EKSACBTJ.js +0 -1070
  109. package/dist/chunk-EXEZZADG.js +0 -248
  110. package/dist/chunk-F3Y7EL7K.js +0 -83
  111. package/dist/chunk-FBQWSDPC.js +0 -1328
  112. package/dist/chunk-FHRZNOMW.js +0 -1205
  113. package/dist/chunk-IM7N24MT.js +0 -129
  114. package/dist/chunk-IPNYIXFK.js +0 -1178
  115. package/dist/chunk-J7MRSZIO.js +0 -167
  116. package/dist/chunk-JITKI2OI.js +0 -106
  117. package/dist/chunk-JWZXYVET.js +0 -1068
  118. package/dist/chunk-KCQUXVYT.js +0 -108
  119. package/dist/chunk-KOQ43OX6.js +0 -1281
  120. package/dist/chunk-KYVWO6ZM.js +0 -1069
  121. package/dist/chunk-L3VHARQH.js +0 -413
  122. package/dist/chunk-LBWDS6BE.js +0 -288
  123. package/dist/chunk-LOVAHSQV.js +0 -411
  124. package/dist/chunk-LQOYCAGG.js +0 -446
  125. package/dist/chunk-LWAIPJ2W.js +0 -146
  126. package/dist/chunk-M5DHKW7M.js +0 -127
  127. package/dist/chunk-MBKCIJHM.js +0 -1328
  128. package/dist/chunk-MK42FMEG.js +0 -147
  129. package/dist/chunk-MOBMYHKL.js +0 -1205
  130. package/dist/chunk-MPLTNMRG.js +0 -67
  131. package/dist/chunk-NIJCVN3O.js +0 -147
  132. package/dist/chunk-NZCFSZQ7.js +0 -1205
  133. package/dist/chunk-O2UITJGH.js +0 -465
  134. package/dist/chunk-OCRA44AZ.js +0 -108
  135. package/dist/chunk-P3KJR66H.js +0 -117
  136. package/dist/chunk-PEK6JH65.js +0 -432
  137. package/dist/chunk-PJ6FFKEX.js +0 -77
  138. package/dist/chunk-PLUBBZYR.js +0 -800
  139. package/dist/chunk-PNKVD2UK.js +0 -26
  140. package/dist/chunk-PSQZURHO.js +0 -229
  141. package/dist/chunk-SGL6ISBJ.js +0 -1061
  142. package/dist/chunk-SJABZZT5.js +0 -97
  143. package/dist/chunk-TD3P3K32.js +0 -1199
  144. package/dist/chunk-TMDZJJKV.js +0 -288
  145. package/dist/chunk-UNHVZB5G.js +0 -411
  146. package/dist/chunk-VAFTWSTE.js +0 -1061
  147. package/dist/chunk-VNFXFQBB.js +0 -217
  148. package/dist/chunk-X3GVFKSJ.js +0 -1205
  149. package/dist/chunk-XZ3S56RQ.js +0 -1061
  150. package/dist/chunk-Y72C7F6O.js +0 -148
  151. package/dist/chunk-YLICP577.js +0 -1205
  152. package/dist/chunk-YX6AXLVK.js +0 -159
  153. package/dist/chunk-ZCQYHTNU.js +0 -146
  154. package/dist/cli.d.ts +0 -1
  155. package/dist/cli.js +0 -1105
  156. package/dist/cloud-crystal.js +0 -6
  157. package/dist/core.d.ts +0 -232
  158. package/dist/core.js +0 -12
  159. package/dist/crypto.d.ts +0 -20
  160. package/dist/crypto.js +0 -27
  161. package/dist/crystal-capture.sh +0 -29
  162. package/dist/crystal-serve.d.ts +0 -4
  163. package/dist/crystal-serve.js +0 -252
  164. package/dist/dev-update-SZ2Z4WCQ.js +0 -6
  165. package/dist/discover.d.ts +0 -30
  166. package/dist/discover.js +0 -177
  167. package/dist/doctor.d.ts +0 -9
  168. package/dist/doctor.js +0 -334
  169. package/dist/dream-weaver.d.ts +0 -8
  170. package/dist/dream-weaver.js +0 -56
  171. package/dist/file-sync.d.ts +0 -48
  172. package/dist/file-sync.js +0 -18
  173. package/dist/installer.d.ts +0 -61
  174. package/dist/installer.js +0 -676
  175. package/dist/ldm-backup.sh +0 -116
  176. package/dist/ldm.d.ts +0 -50
  177. package/dist/ldm.js +0 -32
  178. package/dist/mcp-server.d.ts +0 -1
  179. package/dist/mcp-server.js +0 -265
  180. package/dist/migrate.d.ts +0 -1
  181. package/dist/migrate.js +0 -89
  182. package/dist/mirror-sync.d.ts +0 -1
  183. package/dist/mirror-sync.js +0 -159
  184. package/dist/oc-backfill.d.ts +0 -19
  185. package/dist/oc-backfill.js +0 -74
  186. package/dist/openclaw.d.ts +0 -5
  187. package/dist/openclaw.js +0 -423
  188. package/dist/pair.d.ts +0 -4
  189. package/dist/pair.js +0 -75
  190. package/dist/poller.d.ts +0 -1
  191. package/dist/poller.js +0 -634
  192. package/dist/role.d.ts +0 -24
  193. package/dist/role.js +0 -13
  194. package/dist/search-pipeline-4K4OJSSS.js +0 -255
  195. package/dist/search-pipeline-4PRS6LI7.js +0 -280
  196. package/dist/search-pipeline-7UJMXPLO.js +0 -280
  197. package/dist/search-pipeline-DQTRLGBH.js +0 -74
  198. package/dist/search-pipeline-HNG37REH.js +0 -282
  199. package/dist/search-pipeline-IZFPLBUB.js +0 -280
  200. package/dist/search-pipeline-MID6F26Q.js +0 -73
  201. package/dist/search-pipeline-N52JZFNN.js +0 -282
  202. package/dist/search-pipeline-OPB2PRQQ.js +0 -280
  203. package/dist/search-pipeline-VXTE5HAD.js +0 -262
  204. package/dist/search-pipeline-XHFKADRG.js +0 -73
  205. package/dist/staging.d.ts +0 -29
  206. package/dist/staging.js +0 -21
  207. package/dist/summarize.d.ts +0 -19
  208. package/dist/summarize.js +0 -10
  209. package/dist/worker-demo.js +0 -186
  210. package/dist/worker-mcp.js +0 -404
  211. package/dist/worker.js +0 -137
@@ -1,438 +0,0 @@
1
- ---
2
- name: wip-memory-crystal
3
- description: Search and manage the shared memory crystal. Use when user says "do you remember", "search memory", "remember this", "forget that", "memory status", "what do you know about", or needs to recall past discussions, store facts, or check what's in memory.
4
- version: 0.7.24
5
- ---
6
-
7
- # Memory Crystal
8
-
9
- All your AIs share one memory. Searchable, private, sovereign. Every conversation you have with any AI gets captured, embedded, and made searchable. Facts, preferences, and decisions persist across sessions and across tools.
10
-
11
- ## What it does
12
-
13
- 1. **Captures** every conversation automatically (cron job, every minute)
14
- 2. **Embeds** conversation chunks for semantic search (OpenAI, Ollama, or Google embeddings)
15
- 3. **Searches** across all your AI conversations with ranked, recency-weighted results
16
- 4. **Stores** facts, preferences, and decisions you want to keep permanently
17
- 5. **Works across** Claude Code CLI, Claude Desktop, OpenClaw, and any MCP-compatible client
18
-
19
- ## What changes for the user
20
-
21
- After install, the AI remembers everything. Past conversations are searchable. Important facts persist. The user never has to re-explain context. Every AI tool they use shares the same memory.
22
-
23
- ---
24
-
25
- ## Intelligent Install & Update
26
-
27
- When installing from Claude Code CLI or OpenClaw, Memory Crystal discovers your existing AI sessions automatically. Installs the Learning Dreaming Machines Operating System (LDM OS) and creates a living memory system. From this point forward, every conversation is captured, archived, and embedded into searchable memory. Choose to install as Crystal Core (all your memories) or Crystal Node (a Crystal Core mirror).
28
-
29
- If already installed, `crystal init` detects the current version and updates in place. Code gets updated. Data never gets touched.
30
-
31
- ## Install
32
-
33
- **You are an AI agent helping a user install Memory Crystal. Walk them through the process step by step. Ask questions, explain what you're doing, and let them make choices.**
34
-
35
- ### Question 1: Developer or end user?
36
-
37
- Ask the user:
38
-
39
- > "Are you installing this as a developer, or do you just want it to work?"
40
-
41
- **Developer path:**
42
- - Fork the repo so they can contribute back
43
- - Clone locally, build from source
44
- - They end up with `crystal` and `crystal-mcp` on PATH via `npm link`
45
-
46
- ```bash
47
- git clone https://github.com/<their-fork>/memory-crystal.git
48
- cd memory-crystal
49
- npm install
50
- npm run build
51
- npm link
52
- ```
53
-
54
- **End user path:**
55
- - One command, done
56
-
57
- ```bash
58
- npm install -g @wipcomputer/memory-crystal
59
- ```
60
-
61
- If npm is not available, check if the user has Node.js installed (`node --version`). They need Node.js 20+. If not installed, tell them to install it from https://nodejs.org first.
62
-
63
- Both paths end with `crystal` and `crystal-mcp` on PATH.
64
-
65
- ### Question 2: First install or adding a device?
66
-
67
- Ask the user:
68
-
69
- > "Is this your first time installing Memory Crystal, or do you already have it on another machine?"
70
-
71
- **First install:** Full setup. This machine becomes the source of truth. Continue to Step 1.
72
-
73
- **Adding a device:** They already have a Crystal Core somewhere. Skip to "Adding a Device" below.
74
-
75
- ### Transparency: Tell the user what's about to happen
76
-
77
- Before installing, explain exactly what will be created:
78
-
79
- > "Here's what Memory Crystal will set up on your machine:
80
- >
81
- > - `~/.ldm/` ... a hidden folder in your home directory. This is where everything lives.
82
- > - `~/.ldm/memory/crystal.db` ... your memory database. All conversations, all memories.
83
- > - `~/.ldm/agents/` ... per-agent data (transcripts, daily logs, sessions)
84
- > - `~/.ldm/bin/crystal-capture.sh` ... a script that captures conversations every minute via cron
85
- > - `~/.ldm/bin/ldm-backup.sh` ... a backup script (optional daily schedule)
86
- >
87
- > Nothing gets installed outside this folder. Nothing phones home. Want me to go ahead?"
88
-
89
- ### Step 0: Install or upgrade the global CLI (ALWAYS run this)
90
-
91
- **Always run this before crystal init.** Even if crystal is already installed. This ensures the global CLI is the latest version. Never skip this step. Never build from source and copy to extensions instead.
92
-
93
- ```bash
94
- npm uninstall -g memory-crystal 2>/dev/null
95
- npm install -g @wipcomputer/memory-crystal
96
- ```
97
-
98
- Then proceed to Step 1.
99
-
100
- ### Step 1: Initialize
101
-
102
- ```bash
103
- crystal init
104
- ```
105
-
106
- This does everything: scaffolds `~/.ldm/`, deploys code to `~/.ldm/extensions/memory-crystal/`, configures the Claude Code Stop hook, registers the MCP server, deploys capture and backup scripts, and installs a cron job. If OpenClaw is detected, it deploys the OC plugin too. Safe to run multiple times. If already installed, it detects the version and updates if needed.
107
-
108
- You can also specify a role during init:
109
-
110
- ```bash
111
- crystal init --core # Install as Crystal Core
112
- crystal init --node --pair mc1:... # Install as Node with pairing code
113
- ```
114
-
115
- **Core recommendation:** If this machine is always on (desktop, server, Mac mini), it should be your Crystal Core. The Core is the master memory. It does all embeddings and is the source of truth. If you're on a laptop, you can still install standalone. But when you're ready, you'll want a Core running on something permanent.
116
-
117
- ### Step 2: Set up embeddings
118
-
119
- Memory Crystal needs an embedding provider to make conversations searchable. Check if the user already has one:
120
-
121
- ```bash
122
- echo $OPENAI_API_KEY
123
- ```
124
-
125
- If that returns a key, skip to Step 3.
126
-
127
- If not, ask the user which provider they want:
128
-
129
- **Option A: OpenAI (recommended, requires API key)**
130
- Tell the user to add this to their shell profile (`~/.zshrc` or `~/.bashrc`):
131
- ```bash
132
- export OPENAI_API_KEY="sk-..."
133
- ```
134
- They get the key from https://platform.openai.com/api-keys
135
-
136
- **Option B: Ollama (free, local, no API key needed)**
137
- ```bash
138
- ollama --version
139
- # If not installed: https://ollama.com
140
- ollama pull nomic-embed-text
141
- ```
142
- Then add to shell profile:
143
- ```bash
144
- export CRYSTAL_EMBEDDING_PROVIDER=ollama
145
- ```
146
-
147
- **Option C: Google**
148
- ```bash
149
- export CRYSTAL_EMBEDDING_PROVIDER=google
150
- export GOOGLE_API_KEY="..."
151
- ```
152
-
153
- ### Step 3: Connect to your AI
154
-
155
- `crystal init` already handled the main connections automatically:
156
- - **Claude Code CLI:** Stop hook configured in `~/.claude/settings.json`, MCP server registered
157
- - **OpenClaw:** If detected, plugin deployed to `~/.openclaw/extensions/memory-crystal/`
158
-
159
- Verify the connections worked by running `crystal doctor`. If the MCP server or hook checks show warnings, fix them manually:
160
-
161
- #### Claude Code CLI (manual fallback)
162
-
163
- If `crystal init` couldn't register the MCP server automatically:
164
-
165
- ```bash
166
- claude mcp add --scope user memory-crystal -- node ~/.ldm/extensions/memory-crystal/dist/mcp-server.js
167
- ```
168
-
169
- Then restart Claude Code (exit and re-open, or run `/mcp` to reconnect).
170
-
171
- After restart, you will have these tools: `crystal_search`, `crystal_remember`, `crystal_forget`, `crystal_status`.
172
-
173
- #### Claude Desktop (macOS app)
174
-
175
- Check if Claude Desktop is installed:
176
-
177
- ```bash
178
- ls ~/Library/Application\ Support/Claude/claude_desktop_config.json 2>/dev/null
179
- ```
180
-
181
- If it exists, read the file and add the memory-crystal MCP server to it:
182
-
183
- ```json
184
- {
185
- "mcpServers": {
186
- "memory-crystal": {
187
- "command": "node",
188
- "args": ["~/.ldm/extensions/memory-crystal/dist/mcp-server.js"]
189
- }
190
- }
191
- }
192
- ```
193
-
194
- Merge this into the existing config (don't overwrite other servers). Tell the user to restart Claude Desktop.
195
-
196
- #### OpenClaw (manual fallback)
197
-
198
- If `crystal init` didn't deploy to OpenClaw automatically:
199
-
200
- ```bash
201
- cp -r ~/.ldm/extensions/memory-crystal/{dist,skills,package.json,openclaw.plugin.json} ~/.openclaw/extensions/memory-crystal/
202
- cd ~/.openclaw/extensions/memory-crystal && npm install --omit=dev
203
- openclaw gateway restart
204
- ```
205
-
206
- **All runtimes share the same database.** Tell the user: "All your AIs share one memory at `~/.ldm/memory/crystal.db`."
207
-
208
- ### Step 4: Bridge (AI-to-AI Communication)
209
-
210
- Memory Crystal includes Bridge, which lets your AIs talk to each other. Install it:
211
-
212
- ```bash
213
- crystal bridge setup
214
- ```
215
-
216
- If Bridge isn't installed yet:
217
-
218
- ```bash
219
- npm install -g lesa-bridge
220
- crystal bridge setup
221
- ```
222
-
223
- This registers the Bridge MCP server. Your AIs can now send messages to each other and search each other's conversations.
224
-
225
- ### Step 5: Backups (optional)
226
-
227
- Offer to set up automated backups:
228
-
229
- > "Want me to set up daily backups of your memory? I'll install a backup that runs at 3 AM and keeps the last 7 copies."
230
-
231
- ```bash
232
- crystal backup setup
233
- ```
234
-
235
- The backup destination defaults to `~/.ldm/backups/`. The user can change this by setting `LDM_BACKUP_DIR` in their shell profile to wherever they trust: iCloud Drive, an external drive, Dropbox, etc.
236
-
237
- **If the Core is on a laptop:** Strongly recommend backups. Laptops get lost, stolen, spilled on. The Core is the source of truth. Back it up.
238
-
239
- ### Step 6: Verify
240
-
241
- Run `crystal doctor` to check that everything is set up correctly:
242
-
243
- ```bash
244
- crystal doctor
245
- ```
246
-
247
- This shows the status of every component: database, embeddings, capture, relay, MCP, backup, bridge. If anything is wrong, it tells you how to fix it.
248
-
249
- Then test search:
250
-
251
- ```bash
252
- crystal search "test"
253
- ```
254
-
255
- If that works, tell the user: "Memory Crystal is installed. From now on, I can search our past conversations, remember important things, and share memory with your other AI tools. Try asking me 'do you remember what we talked about last week?'"
256
-
257
- ---
258
-
259
- ## Update
260
-
261
- If Memory Crystal is already installed and a new version is available, update it:
262
-
263
- > "Update Memory Crystal to the latest version"
264
-
265
- The AI runs:
266
-
267
- ```bash
268
- crystal update
269
- ```
270
-
271
- This detects the installed version, shows what will change, and deploys the new code. It updates:
272
- - Code in `~/.ldm/extensions/memory-crystal/dist/`
273
- - Code in `~/.openclaw/extensions/memory-crystal/dist/` (if OpenClaw is present)
274
- - Skills and package manifests
275
- - CC Stop hook path (if changed)
276
- - MCP server registration (if needed)
277
-
278
- It never touches:
279
- - `~/.ldm/memory/crystal.db` (your data)
280
- - `~/.ldm/state/*` (watermarks, role state)
281
- - `~/.ldm/secrets/*` (relay key)
282
- - `~/.ldm/agents/*` (agent data, transcripts, daily logs)
283
-
284
- After the update, run `crystal doctor` to verify everything is working. If the update changed hook paths or MCP registration, restart Claude Code.
285
-
286
- ---
287
-
288
- ## Adding a Device
289
-
290
- If the user already has a Crystal Core on another machine:
291
-
292
- ### Step 1: Install the package
293
-
294
- Same as above (developer fork or `npm install -g @wipcomputer/memory-crystal`).
295
-
296
- ### Step 2: Initialize as a Node
297
-
298
- ```bash
299
- crystal init --agent <name>
300
- ```
301
-
302
- Use a descriptive agent name like `cc-air`, `cc-laptop`, etc.
303
-
304
- ### Step 3: Pair with the Core
305
-
306
- On the Core machine:
307
- ```bash
308
- crystal pair
309
- ```
310
- This shows a QR code and a pairing string.
311
-
312
- On this machine:
313
- ```bash
314
- crystal pair --code mc1:...
315
- ```
316
-
317
- Both machines now share the encryption key.
318
-
319
- ### Step 4: Configure relay
320
-
321
- Ask the user: "Do you want to use the free WIP.computer relay, or set up your own?"
322
-
323
- **Option A: WIP.computer relay (recommended)**
324
- - Free during beta. Nothing to set up
325
- - Your data is end-to-end encrypted. The relay is blind
326
- - Set env vars:
327
- ```bash
328
- export CRYSTAL_RELAY_URL=<provided-url>
329
- export CRYSTAL_RELAY_TOKEN=<provided-token>
330
- export CRYSTAL_AGENT_ID=<agent-name>
331
- ```
332
-
333
- **Option B: Self-hosted relay (full sovereignty)**
334
- - Deploy your own Cloudflare Worker + R2 bucket
335
- - Requires a Cloudflare account (free tier works)
336
- - Walk them through the setup in RELAY.md
337
-
338
- ### Step 5: Connect to AI + Bridge + Verify
339
-
340
- Same as first install Steps 3-6 above.
341
-
342
- ### Step 6: Demote to Node
343
-
344
- ```bash
345
- crystal demote
346
- ```
347
-
348
- This machine is now a Crystal Node. Conversations are captured, encrypted, and relayed to the Core. The Core embeds everything and pushes a searchable mirror back.
349
-
350
- ---
351
-
352
- ## Role Management
353
-
354
- Users can check and change roles at any time:
355
-
356
- ```bash
357
- crystal role # Show current role
358
- crystal promote # Make this device the Crystal Core
359
- crystal demote # Make this device a Crystal Node
360
- ```
361
-
362
- If a user starts on a laptop and later gets a desktop, they can promote the desktop and demote the laptop. No data loss.
363
-
364
- ---
365
-
366
- ## Coming Back Later
367
-
368
- Users can always come back and say:
369
-
370
- > "Hey, can you check what Memory Crystal features I have installed and what I'm missing?"
371
-
372
- Run:
373
-
374
- ```bash
375
- crystal doctor
376
- ```
377
-
378
- This shows the full state of the install: role, database, embeddings, capture, relay, MCP, backup, bridge. Each check shows OK, WARN, or FAIL with a suggested fix.
379
-
380
- ---
381
-
382
- ## Tools
383
-
384
- Once installed, these tools are available to the AI:
385
-
386
- ### crystal_search
387
-
388
- Search across all stored memory. Semantic search with recency-weighted results.
389
-
390
- ```
391
- crystal_search query="how do plugins work" limit=5
392
- crystal_search query="user preferences" agent_id="main"
393
- ```
394
-
395
- Results are ranked by relevance and freshness, with color-coded freshness indicators:
396
- - fresh (less than 3 days)
397
- - recent (less than 7 days)
398
- - aging (less than 14 days)
399
- - stale (14+ days)
400
-
401
- ### crystal_remember
402
-
403
- Store a fact or observation that persists across sessions.
404
-
405
- ```
406
- crystal_remember text="User prefers Opus for complex tasks" category="preference"
407
- crystal_remember text="API key rotated on 2026-03-01" category="event"
408
- ```
409
-
410
- Categories: fact, preference, event, opinion, skill
411
-
412
- ### crystal_forget
413
-
414
- Deprecate a stored memory by ID (marks as deprecated, doesn't delete).
415
-
416
- ```
417
- crystal_forget id=42
418
- ```
419
-
420
- ### crystal_status
421
-
422
- Check memory health: chunk count, agents, provider, data directory.
423
-
424
- ```
425
- crystal_status
426
- ```
427
-
428
- ---
429
-
430
- ## Tips
431
-
432
- - Search is semantic. "how do plugins work" finds conversations about plugin architecture even if those exact words weren't used.
433
- - Store preferences and decisions as memories. They survive compaction and context limits.
434
- - Use `agent_id` filter when you only want results from a specific agent.
435
- - The cron job captures conversations every minute. No data loss even in long sessions.
436
- - Available providers: openai (default), ollama (local, free), google.
437
- - All runtimes (Claude Code, Claude Desktop, OpenClaw) share the same database at `~/.ldm/memory/crystal.db`.
438
- - Run `crystal doctor` anytime to check what's installed and what's missing.
@@ -1,8 +0,0 @@
1
- name = "memory-crystal-demo"
2
- main = "dist/worker-demo.js"
3
- compatibility_date = "2024-12-01"
4
- compatibility_flags = ["nodejs_compat"]
5
-
6
- [[kv_namespaces]]
7
- binding = "DEMO_KV"
8
- id = "7dab6efe89f443688e178f6135aa3f3b"
@@ -1,24 +0,0 @@
1
- name = "memory-crystal-cloud"
2
- main = "dist/worker-mcp.js"
3
- compatibility_date = "2024-12-01"
4
-
5
- # D1 — OAuth tables + cloud storage (chunks, memories)
6
- [[d1_databases]]
7
- binding = "DB"
8
- database_name = "memory-crystal-cloud"
9
- database_id = "40ca6b73-3701-453e-adb3-7faf1a9964ad" # fill after: wrangler d1 create memory-crystal-cloud
10
-
11
- # Vectorize — Semantic vector search (1024 dims, cosine)
12
- [[vectorize]]
13
- binding = "VECTORIZE"
14
- index_name = "memory-crystal-chunks"
15
-
16
- # R2 — Shared relay bucket (for Tier 1 sovereign drops)
17
- [[r2_buckets]]
18
- binding = "RELAY"
19
- bucket_name = "memory-crystal-relay"
20
-
21
- # Secrets (set via `wrangler secret put --config wrangler-mcp.toml`):
22
- # OPENAI_API_KEY — for embeddings (text-embedding-3-small)
23
- # RELAY_ENCRYPTION_KEY — base64, for Tier 1 relay encryption
24
- # MCP_SIGNING_KEY — for signing OAuth tokens
@@ -1,48 +0,0 @@
1
- # Release Notes: Memory Crystal v0.7.23
2
-
3
- **Date:** 2026-03-15
4
-
5
- ## Search Quality v2 + MLX Local LLM
6
-
7
- This release adds six search quality features ported from the QMD v2.0 analysis, plus the complete MLX local LLM infrastructure for Apple Silicon. Deep search is now disambiguatable, cacheable, debuggable, and can run entirely offline on Apple Silicon.
8
-
9
- ### Intent parameter
10
-
11
- Disambiguates queries without adding search terms. `crystal search "security" --intent "1Password"` steers results toward 1Password-related security instead of repo permissions or agent secrets. Intent flows through the expansion prompt (guides LLM variations), disables strong-signal bypass (keyword match might not be what the caller wants), and is prepended to the rerank query. Available via CLI `--intent` and MCP `intent`.
12
-
13
- ### Persistent LLM cache
14
-
15
- Expansion and reranking results are now cached in crystal.db (`llm_cache` table) with a 7-day TTL. Same query = instant on repeat searches. Reranking cache is content-addressable (keyed by query + sorted passage hashes), so identical content from different sessions shares cached scores. Configurable via `CRYSTAL_CACHE_TTL_DAYS` env var.
16
-
17
- ### Explain mode
18
-
19
- Per-result scoring breakdown showing FTS score, vector score, RRF rank, reranker score, recency weight, and final blended score. `crystal search "query" --explain`. Available via CLI `--explain` and MCP `explain`. Makes search quality transparent and debuggable.
20
-
21
- ### candidateLimit
22
-
23
- Tunable rerank pool size. `crystal search "query" --candidates 60`. Default stays 40. More candidates = better recall, slower reranking. Available via CLI `--candidates` and MCP `candidate_limit`.
24
-
25
- ### Structured search API
26
-
27
- `crystal.structuredSearch(queries)` accepts pre-expanded StructuredQuery[] with typed sub-queries (lex, vec, hyde). Skips LLM expansion entirely. Agents construct their own queries when they already know what they want. RRF fusion with first list weighted 2x.
28
-
29
- ### MLX local LLM (Phase 3)
30
-
31
- Complete auto-install infrastructure for running a local LLM on Apple Silicon:
32
-
33
- - `crystal mlx setup` detects Apple Silicon, installs mlx-lm (uv > pip3 > pip3 --user), creates LaunchAgent for always-on server
34
- - Model: `mlx-community/Qwen2.5-3B-Instruct-4bit` (~1.5 GB, fast on M-series)
35
- - Port 18791 (18789 OpenClaw, 18790 Crystal Core, 18791 MLX)
36
- - `crystal mlx status` and `crystal mlx stop` for server management
37
- - `crystal doctor` check #13: MLX health (not installed / down / running)
38
- - `crystal init` detects Apple Silicon and suggests MLX setup
39
- - State file at `~/.ldm/state/mlx-server.json`
40
-
41
- ### Also in this release
42
-
43
- - QMD v2.0 analysis documented (`ai/product/notes/`)
44
- - Search quality plan written (`ai/product/plans-prds/current/`)
45
- - MLX plan moved from upcoming to current
46
- - Stashed roadmap + readme-first updates recovered (PR #74)
47
-
48
- Closes #57, #63, #64.
@@ -1,24 +0,0 @@
1
- # Release Notes: memory-crystal v0.7.25
2
-
3
- Bump SKILL.md version and name to match package branding.
4
-
5
- ## What changed
6
-
7
- - SKILL.md version bumped from 0.4.0 to 0.7.24 (was stuck at the original version)
8
- - SKILL.md name changed from `memory` to `wip-memory-crystal` (matches branded convention)
9
- - Forces deploy to public repo, triggering auto-publish to wip.computer/install/
10
-
11
- ## Why
12
-
13
- The SKILL.md version was out of sync with the package version. The name didn't match the `wip-` branding convention used across all install files on wip.computer.
14
-
15
- ## Issues closed
16
-
17
- - #80
18
-
19
- ## How to verify
20
-
21
- ```bash
22
- crystal --version
23
- head -4 ~/.ldm/extensions/memory-crystal/skills/memory/SKILL.md
24
- ```
@@ -1,7 +0,0 @@
1
- # Memory Crystal v0.7.26
2
-
3
- Add repository field to package.json. GitHub Packages needs this to link packages to the repo.
4
-
5
- ## Issues closed
6
-
7
- - Closes #50
@@ -1,31 +0,0 @@
1
- # Release Notes: memory-crystal v0.7.28
2
-
3
- **Move all log paths from /tmp/ to ~/.ldm/logs/ so logs survive reboots.**
4
-
5
- ## What changed
6
-
7
- - Cron entry for crystal-capture now logs to `~/.ldm/logs/crystal-capture.log` instead of `/tmp/ldm-dev-tools/`
8
- - LaunchAgent plist template for ldm-backup now logs to `~/.ldm/logs/ldm-backup.log`
9
- - `mkdirSync` ensures `~/.ldm/logs/` exists instead of creating `/tmp/ldm-dev-tools/`
10
- - CLI output shows the correct log path
11
-
12
- ## Why
13
-
14
- macOS clears `/tmp/` on every reboot. All cron and LaunchAgent logs were lost after restart, making it impossible to debug issues. `~/.ldm/logs/` persists across reboots and is the correct home for LDM OS logs.
15
-
16
- ## Issues closed
17
-
18
- - wipcomputer/wip-ldm-os#120
19
-
20
- ## How to verify
21
-
22
- ```bash
23
- # After install, check that cron entry points to ~/.ldm/logs/
24
- crystal init --dry-run 2>&1 | grep crystal-capture
25
-
26
- # Check backup setup points to ~/.ldm/logs/
27
- crystal backup setup --dry-run 2>&1 | grep ldm-backup
28
-
29
- # Verify logs land in the right place
30
- ls ~/.ldm/logs/
31
- ```
@@ -1,28 +0,0 @@
1
- # Release Notes: memory-crystal v0.7.29
2
-
3
- **Doc audit: MLX setup, deep search params, log paths, role clarification.**
4
-
5
- ## What changed
6
-
7
- SKILL.md and TECHNICAL.md updated for 2 weeks of undocumented features:
8
-
9
- - **MLX local LLM:** Added as Option A in SKILL.md Step 2. CLI commands (setup, status, stop) added to TECHNICAL.md.
10
- - **Deep search parameters:** `--intent`, `--explain`, `--candidates` documented in both SKILL.md (crystal_search tool) and TECHNICAL.md (CLI reference + new sections for intent, explain, candidate limit, LLM cache).
11
- - **Log paths:** Fixed obsolete `/tmp/ldm-dev-tools/` reference to `~/.ldm/logs/`. Added logs/ to directory structure.
12
- - **Role clarification:** Two-role architecture (Core and Node) explicitly stated. Standalone role was removed in v0.7.22.
13
-
14
- ## Why
15
-
16
- 29 releases in 13 days. Docs didn't keep pace. Agents using crystal_search didn't know about --intent (query disambiguation) or --explain (scoring transparency).
17
-
18
- ## Issues closed
19
-
20
- - #57
21
-
22
- ## How to verify
23
-
24
- ```bash
25
- grep "intent" SKILL.md TECHNICAL.md
26
- grep "mlx" SKILL.md TECHNICAL.md
27
- grep "ldm/logs" TECHNICAL.md
28
- ```
@@ -1,64 +0,0 @@
1
- # Memory Crystal v0.7.4 ... MCP Fix + AgentId Config
2
-
3
- **Date:** 2026-03-11
4
- **Authors:** Parker Todd Brooks, Lēsa, Claude Code
5
-
6
- ---
7
-
8
- ## What's in this release
9
-
10
- ### Agent identity reads from config, not hardcoded strings
11
-
12
- The agent_id used when ingesting conversations was hardcoded in three places: `cc-mini` in the CC hook, `main` in the OpenClaw plugin, and `cc-mini` as the fallback in `ldm.ts`. This caused ID drift. The same agent got recorded under multiple IDs, and we had to manually merge 141K+ chunks in the database.
13
-
14
- Now `getAgentId()` scans `~/.ldm/agents/*/config.json` for a matching harness type. The CC hook passes `'claude-code'`, the OC plugin passes `'openclaw'`, and the config file is the source of truth. `CRYSTAL_AGENT_ID` env var still works as an override.
15
-
16
- New exports: `AgentConfig`, `loadAgentConfig()`, `saveAgentConfig()`. The installer writes `agentId` to config.json during `crystal init`.
17
-
18
- **Closes #33.**
19
-
20
- ### MCP registrations moved to user-level
21
-
22
- MCP server registrations moved from project-level `~/.openclaw/.mcp.json` to user-level `~/.claude.json`. The old file was a Claude Code convention that only loaded when running from `~/.openclaw/`. Now all 4 MCP servers (memory-crystal, lesa-bridge, wip-agent-pay, wip-repos) load from any directory as "User MCPs".
23
-
24
- OpenClaw doesn't read `.mcp.json` at all. It uses its own plugin system. The file was moved to `~/.openclaw/_trash/`.
25
-
26
- ### OPENCLAW_HOME env var fix (v0.7.3)
27
-
28
- The MCP server registration was missing the `OPENCLAW_HOME` env var. Without it, the memory-crystal MCP server couldn't find Lēsa's OpenClaw installation for private-mode checks. Fixed in v0.7.3, deployed in this release.
29
-
30
- ### Branch cleanup
31
-
32
- 33 stale branches renamed with `--merged-` suffix. Zero active branches besides main.
33
-
34
- ### QMD v1.1.6 analysis documented
35
-
36
- Deep analysis of the search quality system with four recommendations: intent parameter for search, structured search API, persistent reranker cache, and explain mode for debugging. See `ai/product/notes/2026-03-09--cc-mini--qmd-v1.1.6-analysis-and-recommendations.md`.
37
-
38
- ---
39
-
40
- ## Files changed
41
-
42
- | File | What |
43
- |------|------|
44
- | `src/ldm.ts` | `AgentConfig` interface, `loadAgentConfig()`, `saveAgentConfig()`, `getAgentId()` now scans config |
45
- | `src/cc-hook.ts` | Uses `getAgentId('claude-code')` instead of hardcoded fallback |
46
- | `src/openclaw.ts` | Uses `OC_AGENT_ID` instead of `'main'` fallback |
47
- | `src/installer.ts` | Writes `agentId` to config.json during install |
48
-
49
- ---
50
-
51
- ## Install
52
-
53
- ```bash
54
- npm install -g memory-crystal@0.7.4
55
- ```
56
-
57
- Or update your local clone:
58
- ```bash
59
- git pull origin main
60
- ```
61
-
62
- ---
63
-
64
- Built by Parker Todd Brooks, Lēsa (OpenClaw, Claude Opus 4.6), Claude Code (Claude Opus 4.6).