@agentmemory/agentmemory 0.9.30 → 0.9.31

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 (331) hide show
  1. package/.env.example +39 -33
  2. package/AGENTS.md +8 -8
  3. package/README.md +173 -558
  4. package/dist/.env.example +39 -33
  5. package/dist/cli.d.mts.map +1 -1
  6. package/dist/cli.mjs +1741 -966
  7. package/dist/cli.mjs.map +1 -1
  8. package/dist/compression-recovery-CnhLQC6N.mjs +5912 -0
  9. package/dist/compression-recovery-CnhLQC6N.mjs.map +1 -0
  10. package/dist/{connect-B4_ca6BD.mjs → connect-BSLIAMpw.mjs} +874 -267
  11. package/dist/connect-BSLIAMpw.mjs.map +1 -0
  12. package/dist/hooks/_capture.d.mts +5 -2
  13. package/dist/hooks/_capture.d.mts.map +1 -1
  14. package/dist/hooks/_capture.mjs +55 -19
  15. package/dist/hooks/_capture.mjs.map +1 -1
  16. package/dist/hooks/notification.mjs +20 -6
  17. package/dist/hooks/notification.mjs.map +1 -1
  18. package/dist/hooks/post-commit.mjs +25 -5
  19. package/dist/hooks/post-commit.mjs.map +1 -1
  20. package/dist/hooks/post-tool-failure.mjs +12 -4
  21. package/dist/hooks/post-tool-failure.mjs.map +1 -1
  22. package/dist/hooks/post-tool-use.mjs +12 -4
  23. package/dist/hooks/post-tool-use.mjs.map +1 -1
  24. package/dist/hooks/pre-compact.mjs +37 -10
  25. package/dist/hooks/pre-compact.mjs.map +1 -1
  26. package/dist/hooks/pre-tool-use.mjs +25 -5
  27. package/dist/hooks/pre-tool-use.mjs.map +1 -1
  28. package/dist/hooks/prompt-submit.mjs +12 -4
  29. package/dist/hooks/prompt-submit.mjs.map +1 -1
  30. package/dist/hooks/session-end.mjs +47 -16
  31. package/dist/hooks/session-end.mjs.map +1 -1
  32. package/dist/hooks/session-start.mjs +37 -10
  33. package/dist/hooks/session-start.mjs.map +1 -1
  34. package/dist/hooks/stop.mjs +74 -72
  35. package/dist/hooks/stop.mjs.map +1 -1
  36. package/dist/hooks/subagent-start.mjs +13 -5
  37. package/dist/hooks/subagent-start.mjs.map +1 -1
  38. package/dist/hooks/subagent-stop.mjs +18 -6
  39. package/dist/hooks/subagent-stop.mjs.map +1 -1
  40. package/dist/hooks/task-completed.mjs +13 -5
  41. package/dist/hooks/task-completed.mjs.map +1 -1
  42. package/dist/{image-refs-T_urbwHM.mjs → image-refs-Cyta4Lf9.mjs} +2 -2
  43. package/dist/{image-refs-T_urbwHM.mjs.map → image-refs-Cyta4Lf9.mjs.map} +1 -1
  44. package/dist/index.mjs +8539 -4203
  45. package/dist/index.mjs.map +1 -1
  46. package/dist/integrations/dsh.d.mts +55 -0
  47. package/dist/integrations/dsh.d.mts.map +1 -0
  48. package/dist/integrations/dsh.mjs +1145 -0
  49. package/dist/integrations/dsh.mjs.map +1 -0
  50. package/dist/{keyed-mutex-DchXsyfP.mjs → keyed-mutex-DCUh7PG-.mjs} +58 -9
  51. package/dist/keyed-mutex-DCUh7PG-.mjs.map +1 -0
  52. package/dist/{secret-store-BnY3A50C.mjs → secret-store-D9GwO0xp.mjs} +535 -434
  53. package/dist/secret-store-D9GwO0xp.mjs.map +1 -0
  54. package/dist/session-arguments-zxsbbd8y.mjs +113 -0
  55. package/dist/session-arguments-zxsbbd8y.mjs.map +1 -0
  56. package/dist/{src-Jsq9LCeH.mjs → src-DaMtDzt_.mjs} +4087 -3788
  57. package/dist/src-DaMtDzt_.mjs.map +1 -0
  58. package/dist/{standalone-DKCdrf1d.mjs → standalone-BlqshyZ5.mjs} +213 -56
  59. package/dist/standalone-BlqshyZ5.mjs.map +1 -0
  60. package/dist/standalone.d.mts +1 -1
  61. package/dist/standalone.d.mts.map +1 -1
  62. package/dist/standalone.mjs +626 -73
  63. package/dist/standalone.mjs.map +1 -1
  64. package/dist/viewer/index.html +288 -140
  65. package/integrations/hermes/README.md +84 -0
  66. package/integrations/hermes/__init__.py +669 -0
  67. package/integrations/hermes/plugin.yaml +27 -0
  68. package/integrations/omp/LICENSE +190 -0
  69. package/integrations/omp/README.md +76 -0
  70. package/integrations/omp/capture.ts +1 -0
  71. package/integrations/omp/dist/index.mjs +1450 -0
  72. package/integrations/omp/index.ts +488 -0
  73. package/integrations/omp/package.json +13 -0
  74. package/integrations/omp/security.ts +67 -0
  75. package/integrations/omp/skills/agentmemory-agents/REFERENCE.md +32 -0
  76. package/integrations/omp/skills/agentmemory-agents/SKILL.md +48 -0
  77. package/integrations/omp/skills/agentmemory-agents/TROUBLESHOOTING.md +70 -0
  78. package/integrations/omp/skills/agentmemory-architecture/SKILL.md +33 -0
  79. package/integrations/omp/skills/agentmemory-architecture/TROUBLESHOOTING.md +70 -0
  80. package/integrations/omp/skills/agentmemory-config/REFERENCE.md +90 -0
  81. package/integrations/omp/skills/agentmemory-config/SKILL.md +78 -0
  82. package/integrations/omp/skills/agentmemory-config/TROUBLESHOOTING.md +70 -0
  83. package/integrations/omp/skills/agentmemory-hooks/REFERENCE.md +20 -0
  84. package/integrations/omp/skills/agentmemory-hooks/SKILL.md +49 -0
  85. package/integrations/omp/skills/agentmemory-hooks/TROUBLESHOOTING.md +70 -0
  86. package/integrations/omp/skills/agentmemory-mcp-tools/REFERENCE.md +66 -0
  87. package/integrations/omp/skills/agentmemory-mcp-tools/SKILL.md +42 -0
  88. package/integrations/omp/skills/agentmemory-mcp-tools/TROUBLESHOOTING.md +70 -0
  89. package/integrations/omp/skills/agentmemory-rest-api/REFERENCE.md +158 -0
  90. package/integrations/omp/skills/agentmemory-rest-api/SKILL.md +49 -0
  91. package/integrations/omp/skills/agentmemory-rest-api/TROUBLESHOOTING.md +70 -0
  92. package/integrations/omp/skills/commit-context/EXAMPLES.md +71 -0
  93. package/integrations/omp/skills/commit-context/SKILL.md +64 -0
  94. package/integrations/omp/skills/commit-context/TROUBLESHOOTING.md +70 -0
  95. package/integrations/omp/skills/commit-history/EXAMPLES.md +71 -0
  96. package/integrations/omp/skills/commit-history/SKILL.md +62 -0
  97. package/integrations/omp/skills/commit-history/TROUBLESHOOTING.md +70 -0
  98. package/integrations/omp/skills/forget/EXAMPLES.md +40 -0
  99. package/integrations/omp/skills/forget/SKILL.md +73 -0
  100. package/integrations/omp/skills/forget/TROUBLESHOOTING.md +70 -0
  101. package/integrations/omp/skills/handoff/EXAMPLES.md +57 -0
  102. package/integrations/omp/skills/handoff/SKILL.md +75 -0
  103. package/integrations/omp/skills/handoff/TROUBLESHOOTING.md +70 -0
  104. package/integrations/omp/skills/lesson/SKILL.md +64 -0
  105. package/integrations/omp/skills/lesson/TROUBLESHOOTING.md +70 -0
  106. package/integrations/omp/skills/memory-discipline/SKILL.md +65 -0
  107. package/integrations/omp/skills/memory-discipline/TROUBLESHOOTING.md +70 -0
  108. package/integrations/omp/skills/recall/EXAMPLES.md +74 -0
  109. package/integrations/omp/skills/recall/SKILL.md +74 -0
  110. package/integrations/omp/skills/recall/TROUBLESHOOTING.md +70 -0
  111. package/integrations/omp/skills/recap/EXAMPLES.md +62 -0
  112. package/integrations/omp/skills/recap/SKILL.md +68 -0
  113. package/integrations/omp/skills/recap/TROUBLESHOOTING.md +70 -0
  114. package/integrations/omp/skills/remember/EXAMPLES.md +67 -0
  115. package/integrations/omp/skills/remember/SKILL.md +66 -0
  116. package/integrations/omp/skills/remember/TROUBLESHOOTING.md +70 -0
  117. package/integrations/omp/skills/session-history/EXAMPLES.md +59 -0
  118. package/integrations/omp/skills/session-history/SKILL.md +67 -0
  119. package/integrations/omp/skills/session-history/TROUBLESHOOTING.md +70 -0
  120. package/integrations/omp/skills/write-agentmemory-skill/SKILL.md +41 -0
  121. package/integrations/omp/skills/write-agentmemory-skill/TROUBLESHOOTING.md +70 -0
  122. package/integrations/openclaw/LICENSE +190 -0
  123. package/integrations/openclaw/README.md +88 -0
  124. package/integrations/openclaw/openclaw.plugin.json +71 -0
  125. package/integrations/openclaw/package.json +38 -0
  126. package/integrations/openclaw/plugin.mjs +425 -0
  127. package/integrations/openclaw/plugin.yaml +26 -0
  128. package/integrations/openclaw/skills/agentmemory-agents/REFERENCE.md +32 -0
  129. package/integrations/openclaw/skills/agentmemory-agents/SKILL.md +48 -0
  130. package/integrations/openclaw/skills/agentmemory-agents/TROUBLESHOOTING.md +70 -0
  131. package/integrations/openclaw/skills/agentmemory-architecture/SKILL.md +33 -0
  132. package/integrations/openclaw/skills/agentmemory-architecture/TROUBLESHOOTING.md +70 -0
  133. package/integrations/openclaw/skills/agentmemory-config/REFERENCE.md +90 -0
  134. package/integrations/openclaw/skills/agentmemory-config/SKILL.md +78 -0
  135. package/integrations/openclaw/skills/agentmemory-config/TROUBLESHOOTING.md +70 -0
  136. package/integrations/openclaw/skills/agentmemory-hooks/REFERENCE.md +20 -0
  137. package/integrations/openclaw/skills/agentmemory-hooks/SKILL.md +49 -0
  138. package/integrations/openclaw/skills/agentmemory-hooks/TROUBLESHOOTING.md +70 -0
  139. package/integrations/openclaw/skills/agentmemory-mcp-tools/REFERENCE.md +66 -0
  140. package/integrations/openclaw/skills/agentmemory-mcp-tools/SKILL.md +42 -0
  141. package/integrations/openclaw/skills/agentmemory-mcp-tools/TROUBLESHOOTING.md +70 -0
  142. package/integrations/openclaw/skills/agentmemory-rest-api/REFERENCE.md +158 -0
  143. package/integrations/openclaw/skills/agentmemory-rest-api/SKILL.md +49 -0
  144. package/integrations/openclaw/skills/agentmemory-rest-api/TROUBLESHOOTING.md +70 -0
  145. package/integrations/openclaw/skills/commit-context/EXAMPLES.md +71 -0
  146. package/integrations/openclaw/skills/commit-context/SKILL.md +64 -0
  147. package/integrations/openclaw/skills/commit-context/TROUBLESHOOTING.md +70 -0
  148. package/integrations/openclaw/skills/commit-history/EXAMPLES.md +71 -0
  149. package/integrations/openclaw/skills/commit-history/SKILL.md +62 -0
  150. package/integrations/openclaw/skills/commit-history/TROUBLESHOOTING.md +70 -0
  151. package/integrations/openclaw/skills/forget/EXAMPLES.md +40 -0
  152. package/integrations/openclaw/skills/forget/SKILL.md +73 -0
  153. package/integrations/openclaw/skills/forget/TROUBLESHOOTING.md +70 -0
  154. package/integrations/openclaw/skills/handoff/EXAMPLES.md +57 -0
  155. package/integrations/openclaw/skills/handoff/SKILL.md +75 -0
  156. package/integrations/openclaw/skills/handoff/TROUBLESHOOTING.md +70 -0
  157. package/integrations/openclaw/skills/lesson/SKILL.md +64 -0
  158. package/integrations/openclaw/skills/lesson/TROUBLESHOOTING.md +70 -0
  159. package/integrations/openclaw/skills/memory-discipline/SKILL.md +65 -0
  160. package/integrations/openclaw/skills/memory-discipline/TROUBLESHOOTING.md +70 -0
  161. package/integrations/openclaw/skills/recall/EXAMPLES.md +74 -0
  162. package/integrations/openclaw/skills/recall/SKILL.md +74 -0
  163. package/integrations/openclaw/skills/recall/TROUBLESHOOTING.md +70 -0
  164. package/integrations/openclaw/skills/recap/EXAMPLES.md +62 -0
  165. package/integrations/openclaw/skills/recap/SKILL.md +68 -0
  166. package/integrations/openclaw/skills/recap/TROUBLESHOOTING.md +70 -0
  167. package/integrations/openclaw/skills/remember/EXAMPLES.md +67 -0
  168. package/integrations/openclaw/skills/remember/SKILL.md +66 -0
  169. package/integrations/openclaw/skills/remember/TROUBLESHOOTING.md +70 -0
  170. package/integrations/openclaw/skills/session-history/EXAMPLES.md +59 -0
  171. package/integrations/openclaw/skills/session-history/SKILL.md +67 -0
  172. package/integrations/openclaw/skills/session-history/TROUBLESHOOTING.md +70 -0
  173. package/integrations/openclaw/skills/write-agentmemory-skill/SKILL.md +41 -0
  174. package/integrations/openclaw/skills/write-agentmemory-skill/TROUBLESHOOTING.md +70 -0
  175. package/integrations/pi/LICENSE +190 -0
  176. package/integrations/pi/README.md +45 -51
  177. package/integrations/pi/dist/index.mjs +1379 -0
  178. package/integrations/pi/index.ts +138 -171
  179. package/integrations/pi/package.json +16 -6
  180. package/integrations/pi/security.ts +6 -26
  181. package/integrations/pi/skills/agentmemory-agents/REFERENCE.md +32 -0
  182. package/integrations/pi/skills/agentmemory-agents/SKILL.md +48 -0
  183. package/integrations/pi/skills/agentmemory-agents/TROUBLESHOOTING.md +70 -0
  184. package/integrations/pi/skills/agentmemory-architecture/SKILL.md +33 -0
  185. package/integrations/pi/skills/agentmemory-architecture/TROUBLESHOOTING.md +70 -0
  186. package/integrations/pi/skills/agentmemory-config/REFERENCE.md +90 -0
  187. package/integrations/pi/skills/agentmemory-config/SKILL.md +78 -0
  188. package/integrations/pi/skills/agentmemory-config/TROUBLESHOOTING.md +70 -0
  189. package/integrations/pi/skills/agentmemory-hooks/REFERENCE.md +20 -0
  190. package/integrations/pi/skills/agentmemory-hooks/SKILL.md +49 -0
  191. package/integrations/pi/skills/agentmemory-hooks/TROUBLESHOOTING.md +70 -0
  192. package/integrations/pi/skills/agentmemory-mcp-tools/REFERENCE.md +66 -0
  193. package/integrations/pi/skills/agentmemory-mcp-tools/SKILL.md +42 -0
  194. package/integrations/pi/skills/agentmemory-mcp-tools/TROUBLESHOOTING.md +70 -0
  195. package/integrations/pi/skills/agentmemory-rest-api/REFERENCE.md +158 -0
  196. package/integrations/pi/skills/agentmemory-rest-api/SKILL.md +49 -0
  197. package/integrations/pi/skills/agentmemory-rest-api/TROUBLESHOOTING.md +70 -0
  198. package/integrations/pi/skills/commit-context/EXAMPLES.md +71 -0
  199. package/integrations/pi/skills/commit-context/SKILL.md +64 -0
  200. package/integrations/pi/skills/commit-context/TROUBLESHOOTING.md +70 -0
  201. package/integrations/pi/skills/commit-history/EXAMPLES.md +71 -0
  202. package/integrations/pi/skills/commit-history/SKILL.md +62 -0
  203. package/integrations/pi/skills/commit-history/TROUBLESHOOTING.md +70 -0
  204. package/integrations/pi/skills/forget/EXAMPLES.md +40 -0
  205. package/integrations/pi/skills/forget/SKILL.md +73 -0
  206. package/integrations/pi/skills/forget/TROUBLESHOOTING.md +70 -0
  207. package/integrations/pi/skills/handoff/EXAMPLES.md +57 -0
  208. package/integrations/pi/skills/handoff/SKILL.md +75 -0
  209. package/integrations/pi/skills/handoff/TROUBLESHOOTING.md +70 -0
  210. package/integrations/pi/skills/lesson/SKILL.md +64 -0
  211. package/integrations/pi/skills/lesson/TROUBLESHOOTING.md +70 -0
  212. package/integrations/pi/skills/memory-discipline/SKILL.md +65 -0
  213. package/integrations/pi/skills/memory-discipline/TROUBLESHOOTING.md +70 -0
  214. package/integrations/pi/skills/recall/EXAMPLES.md +74 -0
  215. package/integrations/pi/skills/recall/SKILL.md +74 -0
  216. package/integrations/pi/skills/recall/TROUBLESHOOTING.md +70 -0
  217. package/integrations/pi/skills/recap/EXAMPLES.md +62 -0
  218. package/integrations/pi/skills/recap/SKILL.md +68 -0
  219. package/integrations/pi/skills/recap/TROUBLESHOOTING.md +70 -0
  220. package/integrations/pi/skills/remember/EXAMPLES.md +67 -0
  221. package/integrations/pi/skills/remember/SKILL.md +66 -0
  222. package/integrations/pi/skills/remember/TROUBLESHOOTING.md +70 -0
  223. package/integrations/pi/skills/session-history/EXAMPLES.md +59 -0
  224. package/integrations/pi/skills/session-history/SKILL.md +67 -0
  225. package/integrations/pi/skills/session-history/TROUBLESHOOTING.md +70 -0
  226. package/integrations/pi/skills/write-agentmemory-skill/SKILL.md +41 -0
  227. package/integrations/pi/skills/write-agentmemory-skill/TROUBLESHOOTING.md +70 -0
  228. package/package.json +32 -11
  229. package/plugin/.claude-plugin/plugin.json +1 -1
  230. package/plugin/.codex-plugin/plugin.json +4 -3
  231. package/plugin/.devin-plugin/plugin.json +5 -3
  232. package/plugin/cursor/hooks.json +23 -8
  233. package/plugin/hooks.json +67 -0
  234. package/plugin/opencode/README.md +1 -1
  235. package/plugin/opencode/agentmemory-capture.ts +25 -11
  236. package/plugin/opencode/plugin.json +1 -1
  237. package/plugin/plugin.json +1 -1
  238. package/plugin/scripts/_capture.d.mts +5 -2
  239. package/plugin/scripts/_capture.d.mts.map +1 -1
  240. package/plugin/scripts/_capture.mjs +55 -19
  241. package/plugin/scripts/_capture.mjs.map +1 -1
  242. package/plugin/scripts/cursor/run-detached.d.mts +1 -0
  243. package/plugin/scripts/cursor/run-detached.mjs +786 -0
  244. package/plugin/scripts/cursor/run-detached.mjs.map +1 -0
  245. package/plugin/scripts/cursor/run-hook.d.mts +1 -0
  246. package/plugin/scripts/cursor/run-hook.mjs +704 -0
  247. package/plugin/scripts/cursor/run-hook.mjs.map +1 -0
  248. package/plugin/scripts/notification.mjs +20 -6
  249. package/plugin/scripts/notification.mjs.map +1 -1
  250. package/plugin/scripts/plugin-bridge.mjs +37 -6
  251. package/plugin/scripts/post-commit.mjs +25 -5
  252. package/plugin/scripts/post-commit.mjs.map +1 -1
  253. package/plugin/scripts/post-tool-failure.mjs +12 -4
  254. package/plugin/scripts/post-tool-failure.mjs.map +1 -1
  255. package/plugin/scripts/post-tool-use.mjs +12 -4
  256. package/plugin/scripts/post-tool-use.mjs.map +1 -1
  257. package/plugin/scripts/pre-compact.mjs +37 -10
  258. package/plugin/scripts/pre-compact.mjs.map +1 -1
  259. package/plugin/scripts/pre-tool-use.mjs +25 -5
  260. package/plugin/scripts/pre-tool-use.mjs.map +1 -1
  261. package/plugin/scripts/prompt-submit.mjs +12 -4
  262. package/plugin/scripts/prompt-submit.mjs.map +1 -1
  263. package/plugin/scripts/session-end.mjs +47 -16
  264. package/plugin/scripts/session-end.mjs.map +1 -1
  265. package/plugin/scripts/session-start.mjs +37 -10
  266. package/plugin/scripts/session-start.mjs.map +1 -1
  267. package/plugin/scripts/stop.mjs +74 -72
  268. package/plugin/scripts/stop.mjs.map +1 -1
  269. package/plugin/scripts/subagent-start.mjs +13 -5
  270. package/plugin/scripts/subagent-start.mjs.map +1 -1
  271. package/plugin/scripts/subagent-stop.mjs +18 -6
  272. package/plugin/scripts/subagent-stop.mjs.map +1 -1
  273. package/plugin/scripts/task-completed.mjs +13 -5
  274. package/plugin/scripts/task-completed.mjs.map +1 -1
  275. package/plugin/skills/_shared/TROUBLESHOOTING.md +21 -7
  276. package/plugin/skills/agentmemory-agents/REFERENCE.md +7 -6
  277. package/plugin/skills/agentmemory-agents/SKILL.md +19 -5
  278. package/plugin/skills/agentmemory-agents/TROUBLESHOOTING.md +70 -0
  279. package/plugin/skills/agentmemory-architecture/SKILL.md +4 -4
  280. package/plugin/skills/agentmemory-architecture/TROUBLESHOOTING.md +70 -0
  281. package/plugin/skills/agentmemory-config/REFERENCE.md +12 -15
  282. package/plugin/skills/agentmemory-config/SKILL.md +7 -3
  283. package/plugin/skills/agentmemory-config/TROUBLESHOOTING.md +70 -0
  284. package/plugin/skills/agentmemory-hooks/SKILL.md +15 -5
  285. package/plugin/skills/agentmemory-hooks/TROUBLESHOOTING.md +70 -0
  286. package/plugin/skills/agentmemory-mcp-tools/REFERENCE.md +4 -4
  287. package/plugin/skills/agentmemory-mcp-tools/SKILL.md +6 -3
  288. package/plugin/skills/agentmemory-mcp-tools/TROUBLESHOOTING.md +70 -0
  289. package/plugin/skills/agentmemory-rest-api/REFERENCE.md +9 -1
  290. package/plugin/skills/agentmemory-rest-api/SKILL.md +12 -6
  291. package/plugin/skills/agentmemory-rest-api/TROUBLESHOOTING.md +70 -0
  292. package/plugin/skills/commit-context/SKILL.md +1 -1
  293. package/plugin/skills/commit-context/TROUBLESHOOTING.md +70 -0
  294. package/plugin/skills/commit-history/SKILL.md +1 -1
  295. package/plugin/skills/commit-history/TROUBLESHOOTING.md +70 -0
  296. package/plugin/skills/forget/EXAMPLES.md +19 -54
  297. package/plugin/skills/forget/SKILL.md +16 -12
  298. package/plugin/skills/forget/TROUBLESHOOTING.md +70 -0
  299. package/plugin/skills/handoff/EXAMPLES.md +5 -4
  300. package/plugin/skills/handoff/SKILL.md +10 -5
  301. package/plugin/skills/handoff/TROUBLESHOOTING.md +70 -0
  302. package/plugin/skills/lesson/SKILL.md +1 -1
  303. package/plugin/skills/lesson/TROUBLESHOOTING.md +70 -0
  304. package/plugin/skills/memory-discipline/SKILL.md +1 -1
  305. package/plugin/skills/memory-discipline/TROUBLESHOOTING.md +70 -0
  306. package/plugin/skills/recall/SKILL.md +18 -7
  307. package/plugin/skills/recall/TROUBLESHOOTING.md +70 -0
  308. package/plugin/skills/recap/EXAMPLES.md +5 -3
  309. package/plugin/skills/recap/SKILL.md +11 -6
  310. package/plugin/skills/recap/TROUBLESHOOTING.md +70 -0
  311. package/plugin/skills/remember/EXAMPLES.md +3 -3
  312. package/plugin/skills/remember/SKILL.md +1 -1
  313. package/plugin/skills/remember/TROUBLESHOOTING.md +70 -0
  314. package/plugin/skills/session-history/EXAMPLES.md +2 -2
  315. package/plugin/skills/session-history/SKILL.md +10 -4
  316. package/plugin/skills/session-history/TROUBLESHOOTING.md +70 -0
  317. package/plugin/skills/write-agentmemory-skill/SKILL.md +2 -1
  318. package/plugin/skills/write-agentmemory-skill/TROUBLESHOOTING.md +70 -0
  319. package/dist/connect-B4_ca6BD.mjs.map +0 -1
  320. package/dist/docker-compose.yml +0 -73
  321. package/dist/iii-config.docker.yaml +0 -53
  322. package/dist/iii-config.yaml +0 -63
  323. package/dist/keyed-mutex-DchXsyfP.mjs.map +0 -1
  324. package/dist/secret-store-BnY3A50C.mjs.map +0 -1
  325. package/dist/src-Jsq9LCeH.mjs.map +0 -1
  326. package/dist/standalone-DKCdrf1d.mjs.map +0 -1
  327. package/dist/status-IRz7ta8-.mjs +0 -2344
  328. package/dist/status-IRz7ta8-.mjs.map +0 -1
  329. package/docker-compose.yml +0 -73
  330. package/iii-config.docker.yaml +0 -53
  331. package/iii-config.yaml +0 -63
@@ -1 +1 @@
1
- {"version":3,"file":"task-completed.mjs","names":[],"sources":["../../src/hooks/_project.ts","../../src/hooks/task-completed.ts"],"sourcesContent":["import { execSync } from \"node:child_process\";\nimport { basename } from \"node:path\";\n\n// Resolution order: AGENTMEMORY_PROJECT_NAME env → git toplevel basename → cwd basename.\nexport function resolveProject(cwd?: string): string {\n const explicit = process.env[\"AGENTMEMORY_PROJECT_NAME\"];\n if (explicit && explicit.trim()) return explicit.trim();\n const dir = cwd && cwd.trim() ? cwd : process.cwd();\n try {\n const top = execSync(\"git rev-parse --show-toplevel\", {\n cwd: dir,\n stdio: [\"ignore\", \"pipe\", \"ignore\"],\n timeout: 500,\n })\n .toString()\n .trim();\n if (top) return basename(top);\n } catch {}\n return basename(dir);\n}\n\nexport function hookCwd(data: Record<string, unknown> | null | undefined): string | undefined {\n if (!data || typeof data !== \"object\") return undefined;\n if (typeof data.cwd === \"string\" && data.cwd.trim()) return data.cwd;\n const roots = data.workspace_roots;\n if (Array.isArray(roots)) {\n for (const root of roots) {\n if (typeof root === \"string\" && root.trim()) return root;\n }\n }\n const projectDir =\n process.env[\"DEVIN_PROJECT_DIR\"] || process.env[\"CLAUDE_PROJECT_DIR\"];\n if (projectDir && projectDir.trim()) return projectDir;\n return undefined;\n}\n","#!/usr/bin/env node\nimport { resolveProject, hookCwd } from \"./_project.js\";\nimport { captureObservation, isDrainChild, runDrainChild, withEventId } from \"./_capture.js\";\n\nfunction isSdkChildContext(payload: unknown): boolean {\n if (process.env[\"AGENTMEMORY_SDK_CHILD\"] === \"1\") return true;\n if (!payload || typeof payload !== \"object\") return false;\n return (payload as { entrypoint?: unknown }).entrypoint === \"sdk-ts\";\n}\n\nconst OBSERVE_TIMEOUT_MS = 2000;\nconst EXIT_CAP_MS = 2500;\n\nasync function main() {\n if (isDrainChild()) return runDrainChild();\n let input = \"\";\n for await (const chunk of process.stdin) {\n input += chunk;\n }\n\n let data: Record<string, unknown>;\n try {\n data = JSON.parse(input);\n } catch {\n return;\n }\n\n if (!data || typeof data !== \"object\") return;\n if (isSdkChildContext(data)) return;\n\n const sessionId = ((data.session_id || data.sessionId || data.conversation_id) as string) || \"unknown\";\n\n const cwd = hookCwd(data) || process.cwd();\n\n void captureObservation(\n withEventId(\n {\n hookType: \"task_completed\",\n sessionId,\n project: resolveProject(cwd),\n cwd,\n timestamp: new Date().toISOString(),\n data: {\n task_id: data.task_id,\n task_subject: data.task_subject,\n task_description: typeof data.task_description === \"string\"\n ? data.task_description.slice(0, 2000)\n : \"\",\n teammate_name: data.teammate_name,\n team_name: data.team_name,\n },\n },\n data,\n ),\n OBSERVE_TIMEOUT_MS,\n );\n setTimeout(() => process.exit(0), EXIT_CAP_MS).unref();\n}\n\nmain().catch(() => process.exit(0));\n"],"mappings":";;;;;AAIA,SAAgB,eAAe,KAAsB;CACnD,MAAM,WAAW,QAAQ,IAAI;AAC7B,KAAI,YAAY,SAAS,MAAM,CAAE,QAAO,SAAS,MAAM;CACvD,MAAM,MAAM,OAAO,IAAI,MAAM,GAAG,MAAM,QAAQ,KAAK;AACnD,KAAI;EACF,MAAM,MAAM,SAAS,iCAAiC;GACpD,KAAK;GACL,OAAO;IAAC;IAAU;IAAQ;IAAS;GACnC,SAAS;GACV,CAAC,CACC,UAAU,CACV,MAAM;AACT,MAAI,IAAK,QAAO,SAAS,IAAI;SACvB;AACR,QAAO,SAAS,IAAI;;AAGtB,SAAgB,QAAQ,MAAsE;AAC5F,KAAI,CAAC,QAAQ,OAAO,SAAS,SAAU,QAAO,KAAA;AAC9C,KAAI,OAAO,KAAK,QAAQ,YAAY,KAAK,IAAI,MAAM,CAAE,QAAO,KAAK;CACjE,MAAM,QAAQ,KAAK;AACnB,KAAI,MAAM,QAAQ,MAAM;OACjB,MAAM,QAAQ,MACjB,KAAI,OAAO,SAAS,YAAY,KAAK,MAAM,CAAE,QAAO;;CAGxD,MAAM,aACJ,QAAQ,IAAI,wBAAwB,QAAQ,IAAI;AAClD,KAAI,cAAc,WAAW,MAAM,CAAE,QAAO;;;;AC5B9C,SAAS,kBAAkB,SAA2B;AACpD,KAAI,QAAQ,IAAI,6BAA6B,IAAK,QAAO;AACzD,KAAI,CAAC,WAAW,OAAO,YAAY,SAAU,QAAO;AACpD,QAAQ,QAAqC,eAAe;;AAG9D,MAAM,qBAAqB;AAC3B,MAAM,cAAc;AAEpB,eAAe,OAAO;AACpB,KAAI,cAAc,CAAE,QAAO,eAAe;CAC1C,IAAI,QAAQ;AACZ,YAAW,MAAM,SAAS,QAAQ,MAChC,UAAS;CAGX,IAAI;AACJ,KAAI;AACF,SAAO,KAAK,MAAM,MAAM;SAClB;AACN;;AAGF,KAAI,CAAC,QAAQ,OAAO,SAAS,SAAU;AACvC,KAAI,kBAAkB,KAAK,CAAE;CAE7B,MAAM,YAAc,KAAK,cAAc,KAAK,aAAa,KAAK,mBAA+B;CAE7F,MAAM,MAAM,QAAQ,KAAK,IAAI,QAAQ,KAAK;AAErC,oBACH,YACE;EACE,UAAU;EACV;EACA,SAAS,eAAe,IAAI;EAC5B;EACA,4BAAW,IAAI,MAAM,EAAC,aAAa;EACnC,MAAM;GACJ,SAAS,KAAK;GACd,cAAc,KAAK;GACnB,kBAAkB,OAAO,KAAK,qBAAqB,WAC/C,KAAK,iBAAiB,MAAM,GAAG,IAAK,GACpC;GACJ,eAAe,KAAK;GACpB,WAAW,KAAK;GACjB;EACF,EACD,KACD,EACD,mBACD;AACD,kBAAiB,QAAQ,KAAK,EAAE,EAAE,YAAY,CAAC,OAAO;;AAGxD,MAAM,CAAC,YAAY,QAAQ,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"task-completed.mjs","names":[],"sources":["../../src/hooks/_project.ts","../../src/hooks/task-completed.ts"],"sourcesContent":["import { execSync } from \"node:child_process\";\nimport { realpathSync } from \"node:fs\";\nimport { basename, dirname, resolve } from \"node:path\";\n\n// Resolution order: AGENTMEMORY_PROJECT_NAME env → git repository basename → cwd basename.\nexport function resolveProject(cwd?: string): string {\n const explicit = process.env[\"AGENTMEMORY_PROJECT_NAME\"];\n if (explicit && explicit.trim()) return explicit.trim();\n const dir = cwd && cwd.trim() ? cwd : process.cwd();\n try {\n const [top, gitDir, commonDir] = execSync(\n \"git rev-parse --show-toplevel --git-dir --git-common-dir\",\n {\n cwd: dir,\n stdio: [\"ignore\", \"pipe\", \"ignore\"],\n timeout: 500,\n },\n )\n .toString()\n .trim()\n .split(/\\r?\\n/);\n if (top) return basename(repositoryRoot(dir, top, gitDir, commonDir));\n } catch {}\n return basename(dir);\n}\n\nfunction repositoryRoot(dir: string, top: string, gitDir?: string, commonDir?: string): string {\n if (!gitDir || !commonDir) return top;\n const physical = realpathSync(dir);\n const common = resolve(physical, commonDir);\n if (resolve(physical, gitDir) === common || basename(common) !== \".git\") return top;\n return dirname(common);\n}\n\nexport function hookCwd(data: Record<string, unknown> | null | undefined): string | undefined {\n if (!data || typeof data !== \"object\") return undefined;\n if (typeof data.cwd === \"string\" && data.cwd.trim()) return data.cwd;\n const roots = data.workspace_roots;\n if (Array.isArray(roots)) {\n for (const root of roots) {\n if (typeof root === \"string\" && root.trim()) return root;\n }\n }\n const projectDir =\n process.env[\"DEVIN_PROJECT_DIR\"] || process.env[\"CLAUDE_PROJECT_DIR\"];\n if (projectDir && projectDir.trim()) return projectDir;\n return undefined;\n}\n","#!/usr/bin/env node\nimport { resolveProject, hookCwd } from \"./_project.js\";\nimport { captureObservation, isDrainChild, runDrainChild, withEventId } from \"./_capture.js\";\n\nfunction isSdkChildContext(payload: unknown): boolean {\n if (process.env[\"AGENTMEMORY_SDK_CHILD\"] === \"1\") return true;\n if (!payload || typeof payload !== \"object\") return false;\n return (payload as { entrypoint?: unknown }).entrypoint === \"sdk-ts\";\n}\n\nconst OBSERVE_TIMEOUT_MS = 2000;\nconst EXIT_CAP_MS = 2500;\n\nasync function main() {\n if (isDrainChild()) return runDrainChild();\n let input = \"\";\n for await (const chunk of process.stdin) {\n input += chunk;\n }\n\n let data: Record<string, unknown>;\n try {\n data = JSON.parse(input);\n } catch {\n return;\n }\n\n if (!data || typeof data !== \"object\") return;\n if (isSdkChildContext(data)) return;\n\n const sessionId = ((data.session_id || data.sessionId || data.conversation_id) as string) || \"unknown\";\n\n const cwd = hookCwd(data) || process.cwd();\n\n void captureObservation(\n withEventId(\n {\n hookType: \"task_completed\",\n sessionId,\n project: resolveProject(cwd),\n cwd,\n timestamp: new Date().toISOString(),\n data: {\n task_id: data.task_id,\n task_subject: data.task_subject,\n task_description: typeof data.task_description === \"string\"\n ? data.task_description.slice(0, 2000)\n : \"\",\n teammate_name: data.teammate_name,\n team_name: data.team_name,\n },\n },\n {},\n undefined,\n { stable: Boolean(data.task_id) },\n ),\n OBSERVE_TIMEOUT_MS,\n );\n setTimeout(() => process.exit(0), EXIT_CAP_MS).unref();\n}\n\nmain().catch(() => process.exit(0));\n"],"mappings":";;;;;;AAKA,SAAgB,eAAe,KAAsB;CACnD,MAAM,WAAW,QAAQ,IAAI;AAC7B,KAAI,YAAY,SAAS,MAAM,CAAE,QAAO,SAAS,MAAM;CACvD,MAAM,MAAM,OAAO,IAAI,MAAM,GAAG,MAAM,QAAQ,KAAK;AACnD,KAAI;EACF,MAAM,CAAC,KAAK,QAAQ,aAAa,SAC/B,4DACA;GACE,KAAK;GACL,OAAO;IAAC;IAAU;IAAQ;IAAS;GACnC,SAAS;GACV,CACF,CACE,UAAU,CACV,MAAM,CACN,MAAM,QAAQ;AACjB,MAAI,IAAK,QAAO,SAAS,eAAe,KAAK,KAAK,QAAQ,UAAU,CAAC;SAC/D;AACR,QAAO,SAAS,IAAI;;AAGtB,SAAS,eAAe,KAAa,KAAa,QAAiB,WAA4B;AAC7F,KAAI,CAAC,UAAU,CAAC,UAAW,QAAO;CAClC,MAAM,WAAW,aAAa,IAAI;CAClC,MAAM,SAAS,QAAQ,UAAU,UAAU;AAC3C,KAAI,QAAQ,UAAU,OAAO,KAAK,UAAU,SAAS,OAAO,KAAK,OAAQ,QAAO;AAChF,QAAO,QAAQ,OAAO;;AAGxB,SAAgB,QAAQ,MAAsE;AAC5F,KAAI,CAAC,QAAQ,OAAO,SAAS,SAAU,QAAO,KAAA;AAC9C,KAAI,OAAO,KAAK,QAAQ,YAAY,KAAK,IAAI,MAAM,CAAE,QAAO,KAAK;CACjE,MAAM,QAAQ,KAAK;AACnB,KAAI,MAAM,QAAQ,MAAM;OACjB,MAAM,QAAQ,MACjB,KAAI,OAAO,SAAS,YAAY,KAAK,MAAM,CAAE,QAAO;;CAGxD,MAAM,aACJ,QAAQ,IAAI,wBAAwB,QAAQ,IAAI;AAClD,KAAI,cAAc,WAAW,MAAM,CAAE,QAAO;;;;ACzC9C,SAAS,kBAAkB,SAA2B;AACpD,KAAI,QAAQ,IAAI,6BAA6B,IAAK,QAAO;AACzD,KAAI,CAAC,WAAW,OAAO,YAAY,SAAU,QAAO;AACpD,QAAQ,QAAqC,eAAe;;AAG9D,MAAM,qBAAqB;AAC3B,MAAM,cAAc;AAEpB,eAAe,OAAO;AACpB,KAAI,cAAc,CAAE,QAAO,eAAe;CAC1C,IAAI,QAAQ;AACZ,YAAW,MAAM,SAAS,QAAQ,MAChC,UAAS;CAGX,IAAI;AACJ,KAAI;AACF,SAAO,KAAK,MAAM,MAAM;SAClB;AACN;;AAGF,KAAI,CAAC,QAAQ,OAAO,SAAS,SAAU;AACvC,KAAI,kBAAkB,KAAK,CAAE;CAE7B,MAAM,YAAc,KAAK,cAAc,KAAK,aAAa,KAAK,mBAA+B;CAE7F,MAAM,MAAM,QAAQ,KAAK,IAAI,QAAQ,KAAK;AAErC,oBACH,YACE;EACE,UAAU;EACV;EACA,SAAS,eAAe,IAAI;EAC5B;EACA,4BAAW,IAAI,MAAM,EAAC,aAAa;EACnC,MAAM;GACJ,SAAS,KAAK;GACd,cAAc,KAAK;GACnB,kBAAkB,OAAO,KAAK,qBAAqB,WAC/C,KAAK,iBAAiB,MAAM,GAAG,IAAK,GACpC;GACJ,eAAe,KAAK;GACpB,WAAW,KAAK;GACjB;EACF,EACD,EAAE,EACF,KAAA,GACA,EAAE,QAAQ,QAAQ,KAAK,QAAQ,EAAE,CAClC,EACD,mBACD;AACD,kBAAiB,QAAQ,KAAK,EAAE,EAAE,YAAY,CAAC,OAAO;;AAGxD,MAAM,CAAC,YAAY,QAAQ,KAAK,EAAE,CAAC"}
@@ -1,17 +1,23 @@
1
1
  # Troubleshooting agentmemory skills
2
2
 
3
- Shared recovery steps for all user-invocable agentmemory skills. Each skill's
4
- Troubleshooting section points here instead of duplicating the block.
3
+ Recovery steps for separately installed skills. This document is generated into
4
+ each skill directory so native skill readers can open it without parent traversal.
5
5
 
6
6
  ## "MCP tool not available"
7
7
 
8
8
  Missing tools can mean a stopped MCP process, a disconnected daemon, or an
9
9
  explicitly reduced tool surface. Walk these in order:
10
10
 
11
- 1. Run `/plugin list` in the host and confirm `agentmemory` shows as enabled.
12
- 2. Restart the host. The plugin's `.mcp.json` is only read on startup, so a
13
- freshly installed or re-enabled plugin will not register tools mid-session.
14
- 3. Check `/mcp` and confirm the `agentmemory` server shows a live connection.
11
+ 1. Identify the host. In Claude Code, inspect `/plugin list` and `/mcp`.
12
+ In Hermes, inspect the configured memory provider and `mcp_servers` separately.
13
+ In OpenClaw, validate the host configuration and inspect its MCP servers and
14
+ native plugins separately. In Pi or OMP, inspect `/agentmemory-status` and the
15
+ MCP inventory separately; native save/search does not prove the broader tools
16
+ are connected. Do not run another host's setup commands.
17
+ 2. Restart or reload the affected host connection after configuration changes.
18
+ 3. Inspect the connected tool inventory. Hermes may namespace MCP tools; invoke
19
+ the actual advertised names and schemas. A native memory provider is not
20
+ proof that every MCP tool or shared skill is available.
15
21
  4. Check `agentmemory status` and the daemon's `AGENTMEMORY_TOOLS` setting.
16
22
  Codex's bundled bridge lists the daemon's enabled tools. The standalone shim
17
23
  used by other hosts can fall back to seven basic tools with a separate store.
@@ -19,6 +25,12 @@ explicitly reduced tool surface. Walk these in order:
19
25
  5. If `agentmemory connect codex` and the Codex plugin are both enabled, choose
20
26
  one MCP connection. Check `/hooks` before adding global hook fallbacks.
21
27
 
28
+ Hermes, OpenClaw, Pi and OMP connector installations bundle skills; other hosts
29
+ may install them separately. Check the host's skill inventory and open this file
30
+ from the installed skill directory. Test automatic capture with a real turn and
31
+ a recorded observation; tool connectivity alone does not establish lifecycle
32
+ capture.
33
+
22
34
  An outage or timeout is not an empty search result. Report the failure. A write
23
35
  may have committed before the response was lost; inspect state before retrying.
24
36
 
@@ -32,9 +44,11 @@ API directly:
32
44
  `AGENTMEMORY_SECRET`; for loopback URLs only, fall back to the secret in
33
45
  `~/.agentmemory/.env` and then `~/.agentmemory/secret`. Load the value locally
34
46
  without displaying it. Never send a local-file secret to a remote URL.
47
+ If `AGENTMEMORY_CREDENTIAL_MODE=explicit`, require the explicit host credential
48
+ and do not read local credential files.
35
49
  Authenticated REST fallback requests require HTTPS for non-loopback
36
50
  URLs; HTTP is allowed for loopback URLs (`localhost`, `127.0.0.0/8`, or `[::1]`).
37
- Do not print or save the secret.
51
+ Reject redirects on authenticated requests. Do not print or save the secret.
38
52
 
39
53
  Endpoint map by skill:
40
54
 
@@ -3,7 +3,7 @@
3
3
  Generated from `src/cli/connect/index.ts`. Do not edit the block below by hand; run `npm run skills:gen` after adding or removing an adapter.
4
4
 
5
5
  <!-- AUTOGEN:agents START - generated by scripts/skills/generate.ts, do not edit by hand -->
6
- `agentmemory connect <agent>` wires the memory server into a host agent. 21 adapters:
6
+ `agentmemory connect <agent>` wires the memory server into a host agent. 22 adapters:
7
7
 
8
8
  | Agent | Name | Protocol |
9
9
  | --- | --- | --- |
@@ -14,17 +14,18 @@ Generated from `src/cli/connect/index.ts`. Do not edit the block below by hand;
14
14
  | Codex CLI | `codex` | Using MCP. Hooks ship via the Codex plugin; on Codex Desktop, also pass --with-hooks to install the global hooks.json workaround. |
15
15
  | Continue | `continue` | Using MCP via ~/.continue/config.yaml (preferred) or config.json (legacy, only when no yaml). |
16
16
  | GitHub Copilot CLI | `copilot-cli` | Using MCP. Install the plugin too for full hooks/skills coverage. |
17
- | Cursor | `cursor` | Using MCP (the only protocol Cursor speaks). Memory bridge runs at :3111 underneath. |
17
+ | Cursor | `cursor` | Using MCP. Lifecycle hooks ship in the Cursor plugin: Settings → Plugins → Add marketplace → this repo, then enable agentmemory. |
18
18
  | Devin CLI | `devin` | Using MCP via the user config. Devin CLI migrates mcpServers into mcp_config.json on newer builds. Pass --with-hooks for native auto-capture. |
19
19
  | Droid (Factory.ai) | `droid` | Using MCP via ~/.factory/mcp.json. The `/mcp` slash command inside droid lists configured servers. Pass --with-hooks to also install the native ~/.factory/hooks.json auto-capture hooks. |
20
- | DeepSeek Harness | `dsh` | Using MCP via $DSH_HOME/cordis.patch.yml (the home-level patch layer every profile loads). Tools appear as mcp__agentmemory__*. Pass --with-hooks to also wire auto-capture through Harness's Claude Code hook bridge. |
20
+ | DeepSeek Harness | `dsh` | Using MCP via $DSH_HOME/cordis.patch.yml (the home-level patch layer every profile loads). Tools appear as mcp__agentmemory__*. Pass --with-hooks to also wire auto-capture with the bundled native DSH plugin. |
21
21
  | Gemini CLI | `gemini-cli` | Using MCP (the only protocol Gemini CLI speaks). Memory bridge runs at :3111 underneath. |
22
- | Hermes Agent | `hermes` | Using MCP. Hooks are also available, see https://github.com/rohitg00/agentmemory/tree/main/integrations/hermes. |
22
+ | Hermes Agent | `hermes` | Installs the native memory provider and bundled skills into the active Hermes profile. Credentials stay managed by Hermes. |
23
23
  | Kiro | `kiro` | Using MCP via ~/.kiro/settings/mcp.json (user-level). Workspace overrides live in .kiro/settings/mcp.json. |
24
- | OpenClaw | `openclaw` | Using MCP. Hooks are also available, see https://github.com/rohitg00/agentmemory/tree/main/integrations/openclaw. |
24
+ | Oh My Pi | `omp` | Installs native recall, capture and skills. Add --with-mcp for the full memory toolset. |
25
+ | OpenClaw | `openclaw` | Installs native recall/capture and bundled skills into the active OpenClaw state directory. MCP tools are opt-in with --with-mcp. |
25
26
  | OpenCode | `opencode` | Using MCP via ~/.config/opencode/opencode.json (top-level `mcp` key). For full auto-capture, also install the bundled plugin in plugin/opencode/. |
26
27
  | OpenHuman | `openhuman` | Using native hooks (REST API at :3111). MCP not required. |
27
- | pi | `pi` | Using native lifecycle hooks against the REST API at :3111 (recall on agent start, capture on agent end, memory tools). MCP not required. |
28
+ | Pi | `pi` | Installs native recall, capture and skills. Add --with-mcp for the full memory toolset. |
28
29
  | Qwen Code | `qwen` | Using MCP via ~/.qwen/settings.json. Qwen Code's hook system can also be wired separately, see docs. |
29
30
  | Warp | `warp` | Using MCP via ~/.warp/.mcp.json. Skills auto-discover from .claude/skills/ if the Claude Code plugin is also installed. |
30
31
  | Zed | `zed` | Using MCP via ~/.config/zed/settings.json (key: context_servers). |
@@ -12,18 +12,32 @@ user-invocable: false
12
12
  agentmemory connect claude-code # or cursor, codex, gemini-cli, ...
13
13
  ```
14
14
 
15
- After wiring, restart the host or run its MCP reload (for example `/mcp` in Claude Code) so it picks up the server. Then confirm the agent lists agentmemory's tools.
15
+ After wiring, restart the host or run its MCP reload (for example `/mcp` in Claude Code, or a new session after `devin mcp list` in Devin CLI) so it picks up the server. Then confirm the agent lists agentmemory's tools.
16
+
17
+ Devin CLI and Devin Desktop can also install the whole plugin with `devin plugins install rohitg00/agentmemory#plugin`, which adds the skills, the MCP server, and the capture hooks in one step. Cloud Devin sessions cannot reach a local agentmemory server, so the plugin is for local sessions only.
18
+
19
+ For Pi, Oh My Pi, or DeepSeek Harness, start the daemon and choose the matching command:
20
+
21
+ ```bash
22
+ agentmemory connect pi --with-mcp
23
+ agentmemory connect omp --with-mcp
24
+ agentmemory connect dsh --with-hooks
25
+ ```
26
+
27
+ Pi and OMP install native recall, capture and bundled skills; `--with-mcp` adds the tools needed by the broader workflows. Reload Pi with `/reload`, or restart OMP, then run `/agentmemory-status`. Restart DSH after enabling its bundled capture plugin. Re-run the matching connector after upgrading or moving AgentMemory so installed runtime paths stay current.
28
+
29
+ Cursor's connector configures MCP. Install and enable the Cursor plugin through Settings → Plugins → Add marketplace → this repository for lifecycle capture; do not add a second global hook copy.
16
30
 
17
31
  ## Workflow
18
32
 
19
- 1. Detect the calling agent. If unknown, default to `claude-code`.
33
+ 1. Detect the calling agent. If unknown, ask which host to configure before changing files.
20
34
  2. Run `agentmemory connect <name>` using a name from the table in REFERENCE.md.
21
- 3. Verify: the host should show the full tool set with a server running. Only 7 tools means the MCP shim could not reach a server (see ../_shared/TROUBLESHOOTING.md).
35
+ 3. Read the command result: an adapter that prints manual setup instructions has not completed installation. Restart the configured host, inspect its actual tool inventory, and perform an authorized save/recall check. A native memory provider and an MCP connection are separate surfaces (see [TROUBLESHOOTING.md](TROUBLESHOOTING.md)).
22
36
 
23
37
  ## Notes
24
38
 
25
- - The action skills (remember, recall, and the rest) are installed separately with `npx skills add rohitg00/agentmemory`. `connect` makes tools available; skills teach the agent when to use them.
26
- - Windows: use WSL2. Native Windows runs the server but `connect` is not supported there.
39
+ - Hermes, OpenClaw, Pi and OMP connectors bundle skills. For a separate skills installation, use `npx skills@1.7.1 add rohitg00/agentmemory --agent hermes-agent --skill '*'` or `--agent openclaw`. Choose the intended host; add `--global` only for a user-wide installation. Avoid duplicate skill installations when a native package already bundles them. Verify skill discovery and read a skill's local support file in that host.
40
+ - Native Windows supports `agentmemory connect copilot-cli`. Other automated connectors require macOS, Linux or a host running in the same WSL2 environment; use the host's manual setup instructions otherwise.
27
41
 
28
42
  ## See also
29
43
 
@@ -0,0 +1,70 @@
1
+ <!-- AUTOGEN:troubleshooting START - generated by scripts/skills/generate.ts, do not edit by hand -->
2
+ # Troubleshooting agentmemory skills
3
+
4
+ Recovery steps for separately installed skills. This document is generated into
5
+ each skill directory so native skill readers can open it without parent traversal.
6
+
7
+ ## "MCP tool not available"
8
+
9
+ Missing tools can mean a stopped MCP process, a disconnected daemon, or an
10
+ explicitly reduced tool surface. Walk these in order:
11
+
12
+ 1. Identify the host. In Claude Code, inspect `/plugin list` and `/mcp`.
13
+ In Hermes, inspect the configured memory provider and `mcp_servers` separately.
14
+ In OpenClaw, validate the host configuration and inspect its MCP servers and
15
+ native plugins separately. In Pi or OMP, inspect `/agentmemory-status` and the
16
+ MCP inventory separately; native save/search does not prove the broader tools
17
+ are connected. Do not run another host's setup commands.
18
+ 2. Restart or reload the affected host connection after configuration changes.
19
+ 3. Inspect the connected tool inventory. Hermes may namespace MCP tools; invoke
20
+ the actual advertised names and schemas. A native memory provider is not
21
+ proof that every MCP tool or shared skill is available.
22
+ 4. Check `agentmemory status` and the daemon's `AGENTMEMORY_TOOLS` setting.
23
+ Codex's bundled bridge lists the daemon's enabled tools. The standalone shim
24
+ used by other hosts can fall back to seven basic tools with a separate store.
25
+ Do not claim full daemon functionality based on those seven tools.
26
+ 5. If `agentmemory connect codex` and the Codex plugin are both enabled, choose
27
+ one MCP connection. Check `/hooks` before adding global hook fallbacks.
28
+
29
+ Hermes, OpenClaw, Pi and OMP connector installations bundle skills; other hosts
30
+ may install them separately. Check the host's skill inventory and open this file
31
+ from the installed skill directory. Test automatic capture with a real turn and
32
+ a recorded observation; tool connectivity alone does not establish lifecycle
33
+ capture.
34
+
35
+ An outage or timeout is not an empty search result. Report the failure. A write
36
+ may have committed before the response was lost; inspect state before retrying.
37
+
38
+ ## REST fallback
39
+
40
+ When the MCP tools stay unavailable but the daemon is running, call the REST
41
+ API directly:
42
+
43
+ 1. Set `AGENTMEMORY_URL` to the daemon base URL (default `http://localhost:3111`).
44
+ 2. The REST API requires a bearer credential by default. Use the host's explicit
45
+ `AGENTMEMORY_SECRET`; for loopback URLs only, fall back to the secret in
46
+ `~/.agentmemory/.env` and then `~/.agentmemory/secret`. Load the value locally
47
+ without displaying it. Never send a local-file secret to a remote URL.
48
+ If `AGENTMEMORY_CREDENTIAL_MODE=explicit`, require the explicit host credential
49
+ and do not read local credential files.
50
+ Authenticated REST fallback requests require HTTPS for non-loopback
51
+ URLs; HTTP is allowed for loopback URLs (`localhost`, `127.0.0.0/8`, or `[::1]`).
52
+ Reject redirects on authenticated requests. Do not print or save the secret.
53
+
54
+ Endpoint map by skill:
55
+
56
+ | Skill | REST call |
57
+ | --------------- | --------------------------------------------------------------- |
58
+ | remember | `POST /agentmemory/remember` |
59
+ | recall | `POST /agentmemory/smart-search` |
60
+ | recap | `GET /agentmemory/sessions` + `POST /agentmemory/smart-search` |
61
+ | handoff | `GET /agentmemory/sessions` + `POST /agentmemory/smart-search` |
62
+ | session-history | `GET /agentmemory/sessions` |
63
+ | commit-context | `GET /agentmemory/session/by-commit?sha=<sha>` |
64
+ | commit-history | `GET /agentmemory/commits` (URL-encode every query param) |
65
+
66
+ The MCP host reads the plugin MCP configuration. Restart the daemon after
67
+ changing its configuration, then restart or reconnect the host MCP process after
68
+ changing its URL or explicit secret. The local bridge reads the credential files
69
+ for each request; it does not inherit other daemon `.env` settings.
70
+ <!-- AUTOGEN:troubleshooting END -->
@@ -4,7 +4,7 @@ description: How agentmemory is built, the iii engine primitives it runs on, its
4
4
  user-invocable: false
5
5
  ---
6
6
 
7
- agentmemory is a memory server for coding agents. It runs locally, captures observations, indexes them for hybrid retrieval, and serves them back over REST and MCP. It is built on the iii engine.
7
+ agentmemory is a memory server for coding agents. It runs locally, captures observations, indexes them for hybrid retrieval, and serves them back over REST and MCP. Worker Compose runs the pinned iii engine with AgentMemory and the registry `state` and `http` workers. The state worker uses a file-backed KV store by default, with Redis available by configuration; it is not SQLite.
8
8
 
9
9
  ## iii primitives
10
10
 
@@ -12,7 +12,7 @@ Everything is a function, a trigger, or worker state on the iii engine. There is
12
12
 
13
13
  ## Retrieval model
14
14
 
15
- Recall is hybrid: BM25 keyword search plus vector similarity plus graph expansion over linked concepts. The default install needs no API key because embeddings run on-device and BM25 needs none. An LLM provider only adds richer summaries and auto-injection, both opt-in.
15
+ Recall combines BM25 keyword search with configured vector similarity and graph expansion. A clean installation without an embedding provider uses BM25 without an API key. Set `EMBEDDING_PROVIDER=local` to enable on-device embeddings, which may download a model, or configure a remote provider. LLM compression and summaries require a configured provider and their relevant options.
16
16
 
17
17
  ## Storage and lifecycle
18
18
 
@@ -20,11 +20,11 @@ Memories carry content, concepts, files, importance, and timestamps, grouped int
20
20
 
21
21
  ## Ports
22
22
 
23
- REST is the anchor at 3111. Streams = N+1 (3112), viewer = N+2 (3113), engine = N+46023 (49134). `--instance N` shifts the whole block by N*100.
23
+ REST defaults to port `3111`, the viewer to `3113`, and the internal engine WebSocket to `49134`. Use `--port <N>` or `--instance <N>` to select another local runtime.
24
24
 
25
25
  ## Viewer
26
26
 
27
- A real-time web viewer at `http://localhost:3113` shows memory building as sessions run. Useful for demos and for confirming capture is working.
27
+ A real-time web viewer at `http://localhost:3113` shows memory building as sessions run, with authenticated SSE updates over the REST port. Useful for demos and for confirming capture is working.
28
28
 
29
29
  ## See also
30
30
 
@@ -0,0 +1,70 @@
1
+ <!-- AUTOGEN:troubleshooting START - generated by scripts/skills/generate.ts, do not edit by hand -->
2
+ # Troubleshooting agentmemory skills
3
+
4
+ Recovery steps for separately installed skills. This document is generated into
5
+ each skill directory so native skill readers can open it without parent traversal.
6
+
7
+ ## "MCP tool not available"
8
+
9
+ Missing tools can mean a stopped MCP process, a disconnected daemon, or an
10
+ explicitly reduced tool surface. Walk these in order:
11
+
12
+ 1. Identify the host. In Claude Code, inspect `/plugin list` and `/mcp`.
13
+ In Hermes, inspect the configured memory provider and `mcp_servers` separately.
14
+ In OpenClaw, validate the host configuration and inspect its MCP servers and
15
+ native plugins separately. In Pi or OMP, inspect `/agentmemory-status` and the
16
+ MCP inventory separately; native save/search does not prove the broader tools
17
+ are connected. Do not run another host's setup commands.
18
+ 2. Restart or reload the affected host connection after configuration changes.
19
+ 3. Inspect the connected tool inventory. Hermes may namespace MCP tools; invoke
20
+ the actual advertised names and schemas. A native memory provider is not
21
+ proof that every MCP tool or shared skill is available.
22
+ 4. Check `agentmemory status` and the daemon's `AGENTMEMORY_TOOLS` setting.
23
+ Codex's bundled bridge lists the daemon's enabled tools. The standalone shim
24
+ used by other hosts can fall back to seven basic tools with a separate store.
25
+ Do not claim full daemon functionality based on those seven tools.
26
+ 5. If `agentmemory connect codex` and the Codex plugin are both enabled, choose
27
+ one MCP connection. Check `/hooks` before adding global hook fallbacks.
28
+
29
+ Hermes, OpenClaw, Pi and OMP connector installations bundle skills; other hosts
30
+ may install them separately. Check the host's skill inventory and open this file
31
+ from the installed skill directory. Test automatic capture with a real turn and
32
+ a recorded observation; tool connectivity alone does not establish lifecycle
33
+ capture.
34
+
35
+ An outage or timeout is not an empty search result. Report the failure. A write
36
+ may have committed before the response was lost; inspect state before retrying.
37
+
38
+ ## REST fallback
39
+
40
+ When the MCP tools stay unavailable but the daemon is running, call the REST
41
+ API directly:
42
+
43
+ 1. Set `AGENTMEMORY_URL` to the daemon base URL (default `http://localhost:3111`).
44
+ 2. The REST API requires a bearer credential by default. Use the host's explicit
45
+ `AGENTMEMORY_SECRET`; for loopback URLs only, fall back to the secret in
46
+ `~/.agentmemory/.env` and then `~/.agentmemory/secret`. Load the value locally
47
+ without displaying it. Never send a local-file secret to a remote URL.
48
+ If `AGENTMEMORY_CREDENTIAL_MODE=explicit`, require the explicit host credential
49
+ and do not read local credential files.
50
+ Authenticated REST fallback requests require HTTPS for non-loopback
51
+ URLs; HTTP is allowed for loopback URLs (`localhost`, `127.0.0.0/8`, or `[::1]`).
52
+ Reject redirects on authenticated requests. Do not print or save the secret.
53
+
54
+ Endpoint map by skill:
55
+
56
+ | Skill | REST call |
57
+ | --------------- | --------------------------------------------------------------- |
58
+ | remember | `POST /agentmemory/remember` |
59
+ | recall | `POST /agentmemory/smart-search` |
60
+ | recap | `GET /agentmemory/sessions` + `POST /agentmemory/smart-search` |
61
+ | handoff | `GET /agentmemory/sessions` + `POST /agentmemory/smart-search` |
62
+ | session-history | `GET /agentmemory/sessions` |
63
+ | commit-context | `GET /agentmemory/session/by-commit?sha=<sha>` |
64
+ | commit-history | `GET /agentmemory/commits` (URL-encode every query param) |
65
+
66
+ The MCP host reads the plugin MCP configuration. Restart the daemon after
67
+ changing its configuration, then restart or reconnect the host MCP process after
68
+ changing its URL or explicit secret. The local bridge reads the credential files
69
+ for each request; it does not inherit other daemon `.env` settings.
70
+ <!-- AUTOGEN:troubleshooting END -->
@@ -3,7 +3,7 @@
3
3
  Generated by scanning `src/` for `AGENTMEMORY_*` usage. Do not edit the block below by hand; run `npm run skills:gen` after adding or removing a variable. Internal markers ending in two underscores are excluded.
4
4
 
5
5
  <!-- AUTOGEN:env START - generated by scripts/skills/generate.ts, do not edit by hand -->
6
- Configuration is read from the environment and from `~/.agentmemory/.env` (no `export` prefix). 72 recognized variables:
6
+ Configuration is read from the environment and from `~/.agentmemory/.env` (no `export` prefix). 75 recognized variables:
7
7
 
8
8
  - `AGENTMEMORY_AGENT_SCOPE`
9
9
  - `AGENTMEMORY_ALLOW_AGENT_SDK`
@@ -28,19 +28,21 @@ Configuration is read from the environment and from `~/.agentmemory/.env` (no `e
28
28
  - `AGENTMEMORY_COMMIT_SHA`
29
29
  - `AGENTMEMORY_CONSOLIDATION_COOLDOWN_MS`
30
30
  - `AGENTMEMORY_COPILOT_MCP_BLOCK`
31
+ - `AGENTMEMORY_CREDENTIAL_MODE`
31
32
  - `AGENTMEMORY_CWD`
32
33
  - `AGENTMEMORY_DATA_DIR`
33
34
  - `AGENTMEMORY_DEBUG`
34
- - `AGENTMEMORY_DOCKER_GID`
35
- - `AGENTMEMORY_DOCKER_SKIP_CHOWN`
36
- - `AGENTMEMORY_DOCKER_UID`
35
+ - `AGENTMEMORY_DISABLE_COMPOSE_RESTART`
37
36
  - `AGENTMEMORY_DROP_STALE_INDEX`
37
+ - `AGENTMEMORY_ENGINE_MANAGES_WORKER`
38
+ - `AGENTMEMORY_ENGINE_READY_TIMEOUT_MS`
39
+ - `AGENTMEMORY_ENV_FILE`
38
40
  - `AGENTMEMORY_EXPORT_ROOT`
41
+ - `AGENTMEMORY_FINALIZE_IDLE_MS`
39
42
  - `AGENTMEMORY_FOLLOWUP_WINDOW_SECONDS`
40
43
  - `AGENTMEMORY_FORCE_PROXY`
41
44
  - `AGENTMEMORY_GRAPH_COMPACT_ON_BOOT`
42
45
  - `AGENTMEMORY_GRAPH_WEIGHT`
43
- - `AGENTMEMORY_III_CONFIG`
44
46
  - `AGENTMEMORY_III_VERSION`
45
47
  - `AGENTMEMORY_IMAGE_EMBEDDINGS`
46
48
  - `AGENTMEMORY_IMAGE_STORE_MAX_BYTES`
@@ -55,6 +57,7 @@ Configuration is read from the environment and from `~/.agentmemory/.env` (no `e
55
57
  - `AGENTMEMORY_PROBE_TIMEOUT_MS`
56
58
  - `AGENTMEMORY_PROJECT_NAME`
57
59
  - `AGENTMEMORY_PROVIDER`
60
+ - `AGENTMEMORY_READY_TIMEOUT_MS`
58
61
  - `AGENTMEMORY_REDIS_URL`
59
62
  - `AGENTMEMORY_REFLECT`
60
63
  - `AGENTMEMORY_RUNTIME_DIR`
@@ -69,25 +72,19 @@ Configuration is read from the environment and from `~/.agentmemory/.env` (no `e
69
72
  - `AGENTMEMORY_SUPPRESS_COST_WARNING`
70
73
  - `AGENTMEMORY_TOOLS`
71
74
  - `AGENTMEMORY_URL`
72
- - `AGENTMEMORY_USE_DOCKER`
73
75
  - `AGENTMEMORY_VECTOR_BACKFILL`
74
76
  - `AGENTMEMORY_VECTOR_BACKFILL_MAX`
75
77
  - `AGENTMEMORY_VECTOR_BUCKET_SIZE`
76
78
  - `AGENTMEMORY_VERBOSE`
77
79
  - `AGENTMEMORY_VIEWER_HOST`
78
- - `AGENTMEMORY_VIEWER_STREAM_MAX`
79
80
  - `AGENTMEMORY_VIEWER_URL`
81
+ - `AGENTMEMORY_WORKER_BIN_DIR`
82
+ - `AGENTMEMORY_WORKER_ENV_ALLOWLIST`
80
83
  <!-- AUTOGEN:env END -->
81
84
 
82
- ## Engine config
83
-
84
- - `AGENTMEMORY_III_CONFIG`: path to the engine config the CLI starts from. Lookup order: this variable, `./iii-config.yaml`, `~/.agentmemory/iii-config.yaml`, the bundled `iii-config.yaml`. The chosen file is rendered into `~/.agentmemory/data/iii-config.runtime.yaml` on every start; its `host:` values are kept as written.
85
-
86
- The bundled config binds `127.0.0.1`, also inside a container. To reach a containerized CLI through published ports, point `AGENTMEMORY_III_CONFIG` at a config that binds `0.0.0.0` (the packaged `iii-config.docker.yaml` does, and stores state under `/data`) and keep `AGENTMEMORY_SECRET` set. The repo's `docker-compose.yml` mounts `iii-config.docker.yaml` straight into the engine container and does not use this lookup. See the README section "Engine config and bind address".
87
-
88
85
  ## State backend
89
86
 
90
87
  - `AGENTMEMORY_STATE_BACKEND`: `file` (default) or `redis`. Anything else stops startup with an error.
91
- - `AGENTMEMORY_REDIS_URL`: required with `redis`, plain `redis://` only (the pinned engine has no TLS). The URL never appears in `/agentmemory/status` or the viewer.
88
+ - `AGENTMEMORY_REDIS_URL`: required with `redis`, plain `redis://` only (the pinned state worker has no Redis TLS). The URL never appears in `/agentmemory/status` or the viewer.
92
89
 
93
- Switching backends starts from an empty store; move data with `/agentmemory/export` and `/agentmemory/import`. Run one Redis server per `--instance`: live viewer events travel over a Redis pub/sub channel that ignores the database index. After Redis restarts, restart agentmemory so live viewer updates resume; the Health page flags this. See the README section "Storage backend: file (default) vs redis".
90
+ Changing backends selects the target backend's existing data; a new target starts empty. It does not move or delete the old data. Pause writes and back up the original store before moving supported collections with `/agentmemory/export` and `/agentmemory/import`. Give each concurrent instance its own Redis database or server so their state cannot mix. Viewer events are broadcast by the running agentmemory process; they do not rely on Redis pub/sub. See the [state storage guide](https://github.com/rohitg00/agentmemory/blob/main/docs/reliability/state-storage.md) for persistence, isolation and migration details.
@@ -26,6 +26,7 @@ agentmemory reads configuration from the environment and from `~/.agentmemory/.e
26
26
  allowed for loopback URLs (`localhost`, `127.0.0.0/8`, or `[::1]`).
27
27
  Only the local secret is read from the daemon's `.env`; other settings are not
28
28
  automatically inherited by the MCP host.
29
+ `AGENTMEMORY_CREDENTIAL_MODE=explicit` disables local credential discovery.
29
30
  5. Describe the observed mode. Codex's bundled bridge requires the daemon and
30
31
  never silently saves into a fallback store. Other hosts using the standalone
31
32
  shim may expose only seven basic tools when the daemon is unavailable.
@@ -52,7 +53,8 @@ AGENTMEMORY_INJECT_CONTEXT=true
52
53
  - Basic keyword recall requires no API key. Local embeddings are optional and
53
54
  need explicit configuration and model downloads; do not promise vector search
54
55
  until it is enabled.
55
- - Token-spending features ship OFF on purpose: `AGENTMEMORY_AUTO_COMPRESS` (LLM summaries) and `AGENTMEMORY_INJECT_CONTEXT` (auto context injection) both cost tokens proportional to tool-use frequency.
56
+ - Per-observation LLM compression (`AGENTMEMORY_AUTO_COMPRESS=true`) and Claude-style hook injection (`AGENTMEMORY_INJECT_CONTEXT=true`) are opt-in. Session summaries can use a configured LLM provider even when automatic observation compression is off. Native integrations have independent recall settings: Pi and OMP recall before prompts by default, and use `AGENTMEMORY_INJECT_CONTEXT=1` in the host launch environment for optional file enrichment. Do not apply daemon `.env` settings to every host implicitly.
57
+ - Consolidation is enabled when an LLM provider is configured unless explicitly disabled or `AGENTMEMORY_PROVIDER=noop`. Set `CONSOLIDATION_ENABLED=false` to disable it. Structured slots require `AGENTMEMORY_SLOTS=true`; slot reflection also requires `AGENTMEMORY_REFLECT=true`.
56
58
  - Tool visibility: set `AGENTMEMORY_TOOLS=all` (default) or `core` on the daemon,
57
59
  then restart it and reconnect MCP so the host refreshes its tool list.
58
60
  - Data stays in the configured local daemon store. Enabled external model
@@ -62,12 +64,14 @@ AGENTMEMORY_INJECT_CONTEXT=true
62
64
 
63
65
  ## Ports
64
66
 
65
- REST is the anchor at 3111. Streams = N+1 (3112), viewer = N+2 (3113), engine = N+46023 (49134). Relocate the whole block with `--port <N>` or `--instance <N>`.
67
+ REST defaults to port `3111`, the viewer to `3113`, and the internal engine WebSocket to `49134`. Set `--port <N>` or `--instance <N>` to select another local runtime.
68
+
69
+ Normal CLI startup manages the engine and its workers through Worker Compose. Use `agentmemory status` for runtime health and the active viewer URL. `agentmemory console` only prints migration guidance; it no longer starts a bundled engine console.
66
70
 
67
71
  ## See also
68
72
 
69
73
  - agentmemory-rest-api for how the secret is used.
70
- - agentmemory-architecture for the port quartet rationale.
74
+ - agentmemory-architecture for the runtime architecture.
71
75
 
72
76
  ## Reference
73
77
 
@@ -0,0 +1,70 @@
1
+ <!-- AUTOGEN:troubleshooting START - generated by scripts/skills/generate.ts, do not edit by hand -->
2
+ # Troubleshooting agentmemory skills
3
+
4
+ Recovery steps for separately installed skills. This document is generated into
5
+ each skill directory so native skill readers can open it without parent traversal.
6
+
7
+ ## "MCP tool not available"
8
+
9
+ Missing tools can mean a stopped MCP process, a disconnected daemon, or an
10
+ explicitly reduced tool surface. Walk these in order:
11
+
12
+ 1. Identify the host. In Claude Code, inspect `/plugin list` and `/mcp`.
13
+ In Hermes, inspect the configured memory provider and `mcp_servers` separately.
14
+ In OpenClaw, validate the host configuration and inspect its MCP servers and
15
+ native plugins separately. In Pi or OMP, inspect `/agentmemory-status` and the
16
+ MCP inventory separately; native save/search does not prove the broader tools
17
+ are connected. Do not run another host's setup commands.
18
+ 2. Restart or reload the affected host connection after configuration changes.
19
+ 3. Inspect the connected tool inventory. Hermes may namespace MCP tools; invoke
20
+ the actual advertised names and schemas. A native memory provider is not
21
+ proof that every MCP tool or shared skill is available.
22
+ 4. Check `agentmemory status` and the daemon's `AGENTMEMORY_TOOLS` setting.
23
+ Codex's bundled bridge lists the daemon's enabled tools. The standalone shim
24
+ used by other hosts can fall back to seven basic tools with a separate store.
25
+ Do not claim full daemon functionality based on those seven tools.
26
+ 5. If `agentmemory connect codex` and the Codex plugin are both enabled, choose
27
+ one MCP connection. Check `/hooks` before adding global hook fallbacks.
28
+
29
+ Hermes, OpenClaw, Pi and OMP connector installations bundle skills; other hosts
30
+ may install them separately. Check the host's skill inventory and open this file
31
+ from the installed skill directory. Test automatic capture with a real turn and
32
+ a recorded observation; tool connectivity alone does not establish lifecycle
33
+ capture.
34
+
35
+ An outage or timeout is not an empty search result. Report the failure. A write
36
+ may have committed before the response was lost; inspect state before retrying.
37
+
38
+ ## REST fallback
39
+
40
+ When the MCP tools stay unavailable but the daemon is running, call the REST
41
+ API directly:
42
+
43
+ 1. Set `AGENTMEMORY_URL` to the daemon base URL (default `http://localhost:3111`).
44
+ 2. The REST API requires a bearer credential by default. Use the host's explicit
45
+ `AGENTMEMORY_SECRET`; for loopback URLs only, fall back to the secret in
46
+ `~/.agentmemory/.env` and then `~/.agentmemory/secret`. Load the value locally
47
+ without displaying it. Never send a local-file secret to a remote URL.
48
+ If `AGENTMEMORY_CREDENTIAL_MODE=explicit`, require the explicit host credential
49
+ and do not read local credential files.
50
+ Authenticated REST fallback requests require HTTPS for non-loopback
51
+ URLs; HTTP is allowed for loopback URLs (`localhost`, `127.0.0.0/8`, or `[::1]`).
52
+ Reject redirects on authenticated requests. Do not print or save the secret.
53
+
54
+ Endpoint map by skill:
55
+
56
+ | Skill | REST call |
57
+ | --------------- | --------------------------------------------------------------- |
58
+ | remember | `POST /agentmemory/remember` |
59
+ | recall | `POST /agentmemory/smart-search` |
60
+ | recap | `GET /agentmemory/sessions` + `POST /agentmemory/smart-search` |
61
+ | handoff | `GET /agentmemory/sessions` + `POST /agentmemory/smart-search` |
62
+ | session-history | `GET /agentmemory/sessions` |
63
+ | commit-context | `GET /agentmemory/session/by-commit?sha=<sha>` |
64
+ | commit-history | `GET /agentmemory/commits` (URL-encode every query param) |
65
+
66
+ The MCP host reads the plugin MCP configuration. Restart the daemon after
67
+ changing its configuration, then restart or reconnect the host MCP process after
68
+ changing its URL or explicit secret. The local bridge reads the credential files
69
+ for each request; it does not inherit other daemon `.env` settings.
70
+ <!-- AUTOGEN:troubleshooting END -->
@@ -4,18 +4,28 @@ description: The agentmemory plugin hooks that capture observations automaticall
4
4
  user-invocable: false
5
5
  ---
6
6
 
7
- The Claude Code plugin registers lifecycle hooks so memory is captured automatically. You do not have to call `memory_save` for routine work; the hooks observe tool use, prompts, and session boundaries and write observations for you.
7
+ The agentmemory plugin registers lifecycle hooks so memory is captured automatically. You do not have to call `memory_save` for routine work; the hooks observe tool use, prompts, and session boundaries and write observations for you.
8
8
 
9
9
  ## Quick start
10
10
 
11
- Install the plugin and the hooks register themselves:
11
+ For Claude Code, install its plugin:
12
12
 
13
13
  ```bash
14
14
  /plugin marketplace add rohitg00/agentmemory
15
15
  /plugin install agentmemory
16
16
  ```
17
17
 
18
- Watch observations land live at `http://localhost:3113`.
18
+ For Devin CLI and Devin Desktop, install the plugin and start a new session:
19
+
20
+ ```bash
21
+ devin plugins install rohitg00/agentmemory#plugin
22
+ ```
23
+
24
+ Run `/hooks` inside Devin to confirm the agentmemory hooks are loaded. Plugin hooks run only in local Devin sessions, not in cloud sessions.
25
+
26
+ Pi and OMP install native recall and capture with `agentmemory connect pi --with-mcp` or `agentmemory connect omp --with-mcp`. Reload Pi or restart OMP, then inspect `/agentmemory-status`. DSH requires `agentmemory connect dsh --with-hooks` and a restart. Cursor lifecycle hooks come from its enabled plugin, separately from `connect cursor`'s MCP setup.
27
+
28
+ Hermes and OpenClaw use their native integrations and lifecycle contracts. Follow the matching integration setup instructions and verify a real turn creates an observation. Installing shared skills or connecting MCP alone does not enable automatic capture. Watch recorded observations in the viewer at `http://localhost:3113` when using the default port. A pending capture queue is not proof that the daemon stored the event.
19
29
 
20
30
  ## What the hooks do
21
31
 
@@ -26,8 +36,8 @@ Watch observations land live at `http://localhost:3113`.
26
36
 
27
37
  ## Important
28
38
 
29
- - Capture is on by default and is zero-LLM. Turning observations into LLM summaries (`AGENTMEMORY_AUTO_COMPRESS`) and injecting them back into context (`AGENTMEMORY_INJECT_CONTEXT`) are separate opt-ins because they spend tokens.
30
- - If observations are missing, confirm the plugin is enabled and the server is running. See ../_shared/TROUBLESHOOTING.md.
39
+ - The plugin hooks capture by default without an LLM. Per-observation LLM compression (`AGENTMEMORY_AUTO_COMPRESS`) and hook context injection (`AGENTMEMORY_INJECT_CONTEXT`) are separate options. Session summaries can use a configured LLM provider independently of automatic observation compression. Native integrations have their own recall/capture settings; inspect the host configuration instead of assuming these flags control every plugin.
40
+ - If observations are missing, confirm the plugin is enabled and the server is running. See [TROUBLESHOOTING.md](TROUBLESHOOTING.md).
31
41
 
32
42
  ## See also
33
43