logica-mind 0.3.3__tar.gz

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 (230) hide show
  1. logica_mind-0.3.3/.github/ISSUE_TEMPLATE/bug_report.md +33 -0
  2. logica_mind-0.3.3/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
  3. logica_mind-0.3.3/.github/PULL_REQUEST_TEMPLATE.md +18 -0
  4. logica_mind-0.3.3/.github/workflows/ci.yml +45 -0
  5. logica_mind-0.3.3/.gitignore +41 -0
  6. logica_mind-0.3.3/BENCHMARKS.md +247 -0
  7. logica_mind-0.3.3/CHANGELOG.md +294 -0
  8. logica_mind-0.3.3/CODE_OF_CONDUCT.md +59 -0
  9. logica_mind-0.3.3/CONTRIBUTING.md +59 -0
  10. logica_mind-0.3.3/LICENSE +201 -0
  11. logica_mind-0.3.3/NOTICE +11 -0
  12. logica_mind-0.3.3/PKG-INFO +486 -0
  13. logica_mind-0.3.3/README.md +435 -0
  14. logica_mind-0.3.3/SECURITY.md +44 -0
  15. logica_mind-0.3.3/bench/README.md +59 -0
  16. logica_mind-0.3.3/bench/data/facts-cache.json +1 -0
  17. logica_mind-0.3.3/bench/data/judge-checkpoint-openai-full.json +1 -0
  18. logica_mind-0.3.3/bench/data/judge-checkpoint-openai-supplement.json +1 -0
  19. logica_mind-0.3.3/bench/data/judge-checkpoint-openai.json +1 -0
  20. logica_mind-0.3.3/bench/data/judge-checkpoint.json +1 -0
  21. logica_mind-0.3.3/bench/data/locomo10.json +66751 -0
  22. logica_mind-0.3.3/bench/locomo.py +124 -0
  23. logica_mind-0.3.3/bench/locomo_judge.py +249 -0
  24. logica_mind-0.3.3/clients/typescript/package.json +18 -0
  25. logica_mind-0.3.3/clients/typescript/src/index.ts +119 -0
  26. logica_mind-0.3.3/clients/typescript/tsconfig.json +13 -0
  27. logica_mind-0.3.3/docs/README.md +47 -0
  28. logica_mind-0.3.3/docs/api-reference.md +246 -0
  29. logica_mind-0.3.3/docs/categorization.md +216 -0
  30. logica_mind-0.3.3/docs/cli.md +226 -0
  31. logica_mind-0.3.3/docs/concepts.md +249 -0
  32. logica_mind-0.3.3/docs/connections.md +62 -0
  33. logica_mind-0.3.3/docs/dashboard.md +204 -0
  34. logica_mind-0.3.3/docs/dreaming.md +246 -0
  35. logica_mind-0.3.3/docs/embeddings-and-reranking.md +341 -0
  36. logica_mind-0.3.3/docs/graph-explorer.md +121 -0
  37. logica_mind-0.3.3/docs/graph-intelligence.md +112 -0
  38. logica_mind-0.3.3/docs/hooks.md +169 -0
  39. logica_mind-0.3.3/docs/img/dashboard-analytics.png +0 -0
  40. logica_mind-0.3.3/docs/img/dashboard-calendar.png +0 -0
  41. logica_mind-0.3.3/docs/img/dashboard-changes.png +0 -0
  42. logica_mind-0.3.3/docs/img/dashboard-connected.png +0 -0
  43. logica_mind-0.3.3/docs/img/dashboard-context.png +0 -0
  44. logica_mind-0.3.3/docs/img/dashboard-dreams.png +0 -0
  45. logica_mind-0.3.3/docs/img/dashboard-graph-areas.png +0 -0
  46. logica_mind-0.3.3/docs/img/dashboard-graph-path.png +0 -0
  47. logica_mind-0.3.3/docs/img/dashboard-graph.png +0 -0
  48. logica_mind-0.3.3/docs/img/dashboard-help.png +0 -0
  49. logica_mind-0.3.3/docs/img/dashboard-integrations.png +0 -0
  50. logica_mind-0.3.3/docs/img/dashboard-lake.png +0 -0
  51. logica_mind-0.3.3/docs/img/dashboard-learn.png +0 -0
  52. logica_mind-0.3.3/docs/img/dashboard-memories.png +0 -0
  53. logica_mind-0.3.3/docs/img/dashboard-observations.png +0 -0
  54. logica_mind-0.3.3/docs/img/dashboard-orbit.png +0 -0
  55. logica_mind-0.3.3/docs/img/dashboard-profile-map.png +0 -0
  56. logica_mind-0.3.3/docs/img/dashboard-profile.png +0 -0
  57. logica_mind-0.3.3/docs/img/dashboard-rings.png +0 -0
  58. logica_mind-0.3.3/docs/img/dashboard-sessions.png +0 -0
  59. logica_mind-0.3.3/docs/img/dashboard-spotlight.png +0 -0
  60. logica_mind-0.3.3/docs/img/demo-learn.gif +0 -0
  61. logica_mind-0.3.3/docs/img/demo-path.gif +0 -0
  62. logica_mind-0.3.3/docs/img/demo-spotlight.gif +0 -0
  63. logica_mind-0.3.3/docs/img/demo.gif +0 -0
  64. logica_mind-0.3.3/docs/img/i18n-ar-rtl.png +0 -0
  65. logica_mind-0.3.3/docs/img/i18n-zh.png +0 -0
  66. logica_mind-0.3.3/docs/img/overview-home.png +0 -0
  67. logica_mind-0.3.3/docs/img/social-preview.png +0 -0
  68. logica_mind-0.3.3/docs/installation.md +119 -0
  69. logica_mind-0.3.3/docs/integrations.md +354 -0
  70. logica_mind-0.3.3/docs/internationalization.md +76 -0
  71. logica_mind-0.3.3/docs/knowledge-graph.md +403 -0
  72. logica_mind-0.3.3/docs/mcp.md +213 -0
  73. logica_mind-0.3.3/docs/memory-extraction.md +157 -0
  74. logica_mind-0.3.3/docs/portability-and-privacy.md +249 -0
  75. logica_mind-0.3.3/docs/providers.md +189 -0
  76. logica_mind-0.3.3/docs/quickstart.md +253 -0
  77. logica_mind-0.3.3/docs/sessions-and-records.md +270 -0
  78. logica_mind-0.3.3/docs/stores.md +337 -0
  79. logica_mind-0.3.3/docs/user-model-and-peers.md +202 -0
  80. logica_mind-0.3.3/examples/provider_adapter.py +40 -0
  81. logica_mind-0.3.3/examples/quickstart.py +23 -0
  82. logica_mind-0.3.3/logica_mind/__init__.py +16 -0
  83. logica_mind-0.3.3/logica_mind/__main__.py +6 -0
  84. logica_mind-0.3.3/logica_mind/_vector.py +48 -0
  85. logica_mind-0.3.3/logica_mind/cli.py +125 -0
  86. logica_mind-0.3.3/logica_mind/core.py +2324 -0
  87. logica_mind-0.3.3/logica_mind/demo.py +263 -0
  88. logica_mind-0.3.3/logica_mind/devtools.py +235 -0
  89. logica_mind-0.3.3/logica_mind/dreaming.py +245 -0
  90. logica_mind-0.3.3/logica_mind/embeddings/__init__.py +27 -0
  91. logica_mind-0.3.3/logica_mind/embeddings/base.py +31 -0
  92. logica_mind-0.3.3/logica_mind/embeddings/batched.py +76 -0
  93. logica_mind-0.3.3/logica_mind/embeddings/hashing.py +71 -0
  94. logica_mind-0.3.3/logica_mind/embeddings/local.py +44 -0
  95. logica_mind-0.3.3/logica_mind/embeddings/multimodal.py +57 -0
  96. logica_mind-0.3.3/logica_mind/embeddings/onnx.py +87 -0
  97. logica_mind-0.3.3/logica_mind/embeddings/openai.py +58 -0
  98. logica_mind-0.3.3/logica_mind/embeddings/voyage.py +138 -0
  99. logica_mind-0.3.3/logica_mind/extract/__init__.py +6 -0
  100. logica_mind-0.3.3/logica_mind/extract/base.py +40 -0
  101. logica_mind-0.3.3/logica_mind/extract/heuristic.py +107 -0
  102. logica_mind-0.3.3/logica_mind/extract/llm.py +113 -0
  103. logica_mind-0.3.3/logica_mind/extract/noop.py +21 -0
  104. logica_mind-0.3.3/logica_mind/extract/taxonomy.py +131 -0
  105. logica_mind-0.3.3/logica_mind/graph/__init__.py +6 -0
  106. logica_mind-0.3.3/logica_mind/graph/analytics.py +179 -0
  107. logica_mind-0.3.3/logica_mind/graph/extractor.py +97 -0
  108. logica_mind-0.3.3/logica_mind/graph/temporal.py +454 -0
  109. logica_mind-0.3.3/logica_mind/graph/types.py +82 -0
  110. logica_mind-0.3.3/logica_mind/hooks.py +405 -0
  111. logica_mind-0.3.3/logica_mind/integrations/__init__.py +13 -0
  112. logica_mind-0.3.3/logica_mind/integrations/langchain.py +59 -0
  113. logica_mind-0.3.3/logica_mind/integrations/llamaindex.py +55 -0
  114. logica_mind-0.3.3/logica_mind/llm/__init__.py +11 -0
  115. logica_mind-0.3.3/logica_mind/llm/anthropic.py +41 -0
  116. logica_mind-0.3.3/logica_mind/llm/base.py +63 -0
  117. logica_mind-0.3.3/logica_mind/llm/claude_cli.py +73 -0
  118. logica_mind-0.3.3/logica_mind/llm/openai.py +39 -0
  119. logica_mind-0.3.3/logica_mind/mcp_server.py +631 -0
  120. logica_mind-0.3.3/logica_mind/providers.py +142 -0
  121. logica_mind-0.3.3/logica_mind/rerank/__init__.py +18 -0
  122. logica_mind-0.3.3/logica_mind/rerank/base.py +27 -0
  123. logica_mind-0.3.3/logica_mind/rerank/graph.py +66 -0
  124. logica_mind-0.3.3/logica_mind/rerank/mmr.py +62 -0
  125. logica_mind-0.3.3/logica_mind/rerank/rrf.py +47 -0
  126. logica_mind-0.3.3/logica_mind/rerank/voyage.py +75 -0
  127. logica_mind-0.3.3/logica_mind/stores/__init__.py +24 -0
  128. logica_mind-0.3.3/logica_mind/stores/base.py +230 -0
  129. logica_mind-0.3.3/logica_mind/stores/memory.py +51 -0
  130. logica_mind-0.3.3/logica_mind/stores/multi.py +219 -0
  131. logica_mind-0.3.3/logica_mind/stores/obsidian.py +205 -0
  132. logica_mind-0.3.3/logica_mind/stores/postgres.py +140 -0
  133. logica_mind-0.3.3/logica_mind/stores/redis.py +99 -0
  134. logica_mind-0.3.3/logica_mind/stores/sqlite.py +497 -0
  135. logica_mind-0.3.3/logica_mind/stores/supabase.py +275 -0
  136. logica_mind-0.3.3/logica_mind/types.py +103 -0
  137. logica_mind-0.3.3/logica_mind/user/__init__.py +4 -0
  138. logica_mind-0.3.3/logica_mind/user/dialectic.py +265 -0
  139. logica_mind-0.3.3/logica_mind/web/__init__.py +4 -0
  140. logica_mind-0.3.3/logica_mind/web/app/.gitignore +4 -0
  141. logica_mind-0.3.3/logica_mind/web/app/index.html +12 -0
  142. logica_mind-0.3.3/logica_mind/web/app/package-lock.json +2482 -0
  143. logica_mind-0.3.3/logica_mind/web/app/package.json +27 -0
  144. logica_mind-0.3.3/logica_mind/web/app/src/App.tsx +139 -0
  145. logica_mind-0.3.3/logica_mind/web/app/src/api.ts +187 -0
  146. logica_mind-0.3.3/logica_mind/web/app/src/components/CommandPalette.tsx +154 -0
  147. logica_mind-0.3.3/logica_mind/web/app/src/components/Composer.tsx +81 -0
  148. logica_mind-0.3.3/logica_mind/web/app/src/components/DemoBanner.tsx +79 -0
  149. logica_mind-0.3.3/logica_mind/web/app/src/components/GraphCanvas.tsx +640 -0
  150. logica_mind-0.3.3/logica_mind/web/app/src/components/HelpTip.tsx +39 -0
  151. logica_mind-0.3.3/logica_mind/web/app/src/components/InsightList.tsx +26 -0
  152. logica_mind-0.3.3/logica_mind/web/app/src/components/Integrations.tsx +129 -0
  153. logica_mind-0.3.3/logica_mind/web/app/src/components/LearningBurst.tsx +129 -0
  154. logica_mind-0.3.3/logica_mind/web/app/src/components/Markdown.tsx +51 -0
  155. logica_mind-0.3.3/logica_mind/web/app/src/components/MemoryCard.tsx +96 -0
  156. logica_mind-0.3.3/logica_mind/web/app/src/components/MemoryDetail.tsx +192 -0
  157. logica_mind-0.3.3/logica_mind/web/app/src/components/NodeDetail.tsx +186 -0
  158. logica_mind-0.3.3/logica_mind/web/app/src/components/Pager.tsx +36 -0
  159. logica_mind-0.3.3/logica_mind/web/app/src/components/Settings.tsx +207 -0
  160. logica_mind-0.3.3/logica_mind/web/app/src/components/Sidebar.tsx +86 -0
  161. logica_mind-0.3.3/logica_mind/web/app/src/components/TabBar.tsx +38 -0
  162. logica_mind-0.3.3/logica_mind/web/app/src/components/Topbar.tsx +33 -0
  163. logica_mind-0.3.3/logica_mind/web/app/src/i18n.tsx +556 -0
  164. logica_mind-0.3.3/logica_mind/web/app/src/index.css +65 -0
  165. logica_mind-0.3.3/logica_mind/web/app/src/lifearea.ts +35 -0
  166. logica_mind-0.3.3/logica_mind/web/app/src/locales/ar.ts +483 -0
  167. logica_mind-0.3.3/logica_mind/web/app/src/locales/bn.ts +483 -0
  168. logica_mind-0.3.3/logica_mind/web/app/src/locales/de.ts +483 -0
  169. logica_mind-0.3.3/logica_mind/web/app/src/locales/es.ts +483 -0
  170. logica_mind-0.3.3/logica_mind/web/app/src/locales/fr.ts +483 -0
  171. logica_mind-0.3.3/logica_mind/web/app/src/locales/hi.ts +483 -0
  172. logica_mind-0.3.3/logica_mind/web/app/src/locales/id.ts +483 -0
  173. logica_mind-0.3.3/logica_mind/web/app/src/locales/it.ts +483 -0
  174. logica_mind-0.3.3/logica_mind/web/app/src/locales/ja.ts +483 -0
  175. logica_mind-0.3.3/logica_mind/web/app/src/locales/ko.ts +483 -0
  176. logica_mind-0.3.3/logica_mind/web/app/src/locales/pt.ts +485 -0
  177. logica_mind-0.3.3/logica_mind/web/app/src/locales/ru.ts +483 -0
  178. logica_mind-0.3.3/logica_mind/web/app/src/locales/tr.ts +483 -0
  179. logica_mind-0.3.3/logica_mind/web/app/src/locales/zh.ts +483 -0
  180. logica_mind-0.3.3/logica_mind/web/app/src/main.tsx +13 -0
  181. logica_mind-0.3.3/logica_mind/web/app/src/memctx.ts +7 -0
  182. logica_mind-0.3.3/logica_mind/web/app/src/nav.tsx +36 -0
  183. logica_mind-0.3.3/logica_mind/web/app/src/navctx.ts +17 -0
  184. logica_mind-0.3.3/logica_mind/web/app/src/predlabel.ts +11 -0
  185. logica_mind-0.3.3/logica_mind/web/app/src/theme.ts +31 -0
  186. logica_mind-0.3.3/logica_mind/web/app/src/views/Analytics.tsx +209 -0
  187. logica_mind-0.3.3/logica_mind/web/app/src/views/Calendar.tsx +143 -0
  188. logica_mind-0.3.3/logica_mind/web/app/src/views/Changes.tsx +99 -0
  189. logica_mind-0.3.3/logica_mind/web/app/src/views/ContextBlock.tsx +185 -0
  190. logica_mind-0.3.3/logica_mind/web/app/src/views/Dreams.tsx +342 -0
  191. logica_mind-0.3.3/logica_mind/web/app/src/views/GraphView.tsx +703 -0
  192. logica_mind-0.3.3/logica_mind/web/app/src/views/Insights.tsx +92 -0
  193. logica_mind-0.3.3/logica_mind/web/app/src/views/Memories.tsx +84 -0
  194. logica_mind-0.3.3/logica_mind/web/app/src/views/Observations.tsx +94 -0
  195. logica_mind-0.3.3/logica_mind/web/app/src/views/Overview.tsx +49 -0
  196. logica_mind-0.3.3/logica_mind/web/app/src/views/Peers.tsx +70 -0
  197. logica_mind-0.3.3/logica_mind/web/app/src/views/Profile.tsx +194 -0
  198. logica_mind-0.3.3/logica_mind/web/app/src/views/Sessions.tsx +223 -0
  199. logica_mind-0.3.3/logica_mind/web/app/src/views/UserModel.tsx +61 -0
  200. logica_mind-0.3.3/logica_mind/web/app/src/views/Workspace.tsx +73 -0
  201. logica_mind-0.3.3/logica_mind/web/app/tsconfig.json +20 -0
  202. logica_mind-0.3.3/logica_mind/web/app/vite.config.ts +16 -0
  203. logica_mind-0.3.3/logica_mind/web/dist/assets/ar-D2w4YmaP.js +98 -0
  204. logica_mind-0.3.3/logica_mind/web/dist/assets/bn-BZNCaIhP.js +98 -0
  205. logica_mind-0.3.3/logica_mind/web/dist/assets/de-CtdW_KS4.js +98 -0
  206. logica_mind-0.3.3/logica_mind/web/dist/assets/es-plUTCAhb.js +98 -0
  207. logica_mind-0.3.3/logica_mind/web/dist/assets/fr-CUFOkQI1.js +98 -0
  208. logica_mind-0.3.3/logica_mind/web/dist/assets/hi-C176wp9e.js +98 -0
  209. logica_mind-0.3.3/logica_mind/web/dist/assets/id-C9LdD1t2.js +98 -0
  210. logica_mind-0.3.3/logica_mind/web/dist/assets/index-BInm_nz4.js +154 -0
  211. logica_mind-0.3.3/logica_mind/web/dist/assets/index-D5osCRia.css +1 -0
  212. logica_mind-0.3.3/logica_mind/web/dist/assets/it-B-1YvgcV.js +98 -0
  213. logica_mind-0.3.3/logica_mind/web/dist/assets/ja-k_zMuwbj.js +98 -0
  214. logica_mind-0.3.3/logica_mind/web/dist/assets/ko-Dvds2wGr.js +98 -0
  215. logica_mind-0.3.3/logica_mind/web/dist/assets/pt-DJTF19QO.js +98 -0
  216. logica_mind-0.3.3/logica_mind/web/dist/assets/ru-X9YFYwtM.js +98 -0
  217. logica_mind-0.3.3/logica_mind/web/dist/assets/tr-Bxde-MIW.js +98 -0
  218. logica_mind-0.3.3/logica_mind/web/dist/assets/zh-Chn-ciXb.js +98 -0
  219. logica_mind-0.3.3/logica_mind/web/dist/index.html +13 -0
  220. logica_mind-0.3.3/logica_mind/web/index.html +468 -0
  221. logica_mind-0.3.3/logica_mind/web/server.py +1306 -0
  222. logica_mind-0.3.3/migrations/supabase.sql +84 -0
  223. logica_mind-0.3.3/pyproject.toml +58 -0
  224. logica_mind-0.3.3/sdk-ts/README.md +28 -0
  225. logica_mind-0.3.3/sdk-ts/package.json +18 -0
  226. logica_mind-0.3.3/sdk-ts/src/index.ts +98 -0
  227. logica_mind-0.3.3/sdk-ts/tsconfig.json +13 -0
  228. logica_mind-0.3.3/tests/test_core.py +1733 -0
  229. logica_mind-0.3.3/tests/test_graph_facets.py +163 -0
  230. logica_mind-0.3.3/tests/test_moats.py +715 -0
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: Bug report
3
+ about: Report a problem so we can fix it
4
+ title: "[bug] "
5
+ labels: bug
6
+ assignees: ''
7
+ ---
8
+
9
+ **Describe the bug**
10
+ A clear and concise description of what the bug is.
11
+
12
+ **To reproduce**
13
+ Minimal steps or a code snippet that triggers the bug:
14
+
15
+ ```python
16
+ from logica_mind import LogicaMind
17
+ # ...
18
+ ```
19
+
20
+ **Expected behavior**
21
+ What you expected to happen.
22
+
23
+ **Actual behavior**
24
+ What actually happened (include the full error / traceback if any).
25
+
26
+ **Environment**
27
+ - Logica Mind version:
28
+ - Python version:
29
+ - OS:
30
+ - Store / embedder in use (e.g. SQLite + hashing, Supabase + Voyage):
31
+
32
+ **Additional context**
33
+ Anything else that helps — but please do NOT paste secrets or private data.
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea or improvement
4
+ title: "[feature] "
5
+ labels: enhancement
6
+ assignees: ''
7
+ ---
8
+
9
+ **What problem does this solve?**
10
+ A clear description of the use case or pain point.
11
+
12
+ **Proposed solution**
13
+ What you'd like to happen. API sketch welcome:
14
+
15
+ ```python
16
+ # how you'd want to call it
17
+ ```
18
+
19
+ **Alternatives considered**
20
+ Other approaches you thought about.
21
+
22
+ **Additional context**
23
+ Links, prior art, or anything else relevant.
@@ -0,0 +1,18 @@
1
+ # Pull Request
2
+
3
+ ## Summary
4
+
5
+ <!-- What does this change and why? -->
6
+
7
+ ## Checklist
8
+
9
+ - [ ] `pytest -q` passes
10
+ - [ ] If the dashboard (`logica_mind/web/app/`) changed, I rebuilt and committed
11
+ `logica_mind/web/dist/` (`npm ci && npm run build`)
12
+ - [ ] Docs / README updated if behavior changed
13
+ - [ ] No secrets, API keys, or private data committed
14
+ - [ ] New/changed behavior is covered by tests
15
+
16
+ ## Notes
17
+
18
+ <!-- Anything reviewers should know. -->
@@ -0,0 +1,45 @@
1
+ name: CI
2
+
3
+ # Runs the offline test suite and builds the dashboard. The suite needs no API
4
+ # keys (SQLite + hashing embedder); the production backends (Supabase/Postgres/
5
+ # Redis/Voyage/OpenAI) are exercised by stubbed/mocked tests, not live services.
6
+ on:
7
+ push:
8
+ pull_request:
9
+ workflow_dispatch:
10
+
11
+ jobs:
12
+ test:
13
+ runs-on: ubuntu-latest
14
+ strategy:
15
+ matrix:
16
+ python-version: ["3.10", "3.11", "3.12"]
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - uses: actions/setup-python@v5
20
+ with:
21
+ python-version: ${{ matrix.python-version }}
22
+ - name: Install (editable, no extras needed for the offline suite)
23
+ run: pip install -e .
24
+ - name: Run tests
25
+ run: pip install pytest && pytest -q
26
+
27
+ ui-build:
28
+ runs-on: ubuntu-latest
29
+ steps:
30
+ - uses: actions/checkout@v4
31
+ - uses: actions/setup-node@v4
32
+ with:
33
+ node-version: "20"
34
+ - name: Build the dashboard
35
+ working-directory: logica_mind/web/app
36
+ run: |
37
+ npm ci || npm install
38
+ npm run build
39
+ - name: Fail if the committed dist is stale
40
+ run: |
41
+ if ! git diff --quiet -- logica_mind/web/dist; then
42
+ echo "::error::logica_mind/web/dist is out of date — run 'npm run build' and commit it."
43
+ git --no-pager diff --stat -- logica_mind/web/dist
44
+ exit 1
45
+ fi
@@ -0,0 +1,41 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .eggs/
6
+ /build/
7
+ /dist/ # python sdist/wheel build (root-anchored, so it does NOT
8
+ # match logica_mind/web/dist — the BUILT dashboard ships)
9
+ .pytest_cache/
10
+ .venv/
11
+ venv/
12
+ .env
13
+
14
+ # local SQLite stores / demo databases
15
+ *.db
16
+ *.db-wal
17
+ *.db-shm
18
+ *.sqlite
19
+ *.sqlite3
20
+
21
+ # runtime sidecars written next to the store (regenerated; may contain local data)
22
+ *_session_names.json
23
+ *_dream_journal.json
24
+
25
+ # node / vite UI dev tree (the build output lives in logica_mind/web/dist, tracked)
26
+ node_modules/
27
+ logica_mind/web/app/dist/
28
+ logica_mind/web/app/.vite/
29
+
30
+ # misc
31
+ .DS_Store
32
+ *.log
33
+
34
+ # internal-only docs (kept locally, never published)
35
+ /FEATURES.md
36
+ /ROADMAP.md
37
+ /ARCHITECTURE.md
38
+
39
+ # never commit deps (incl. build symlinks)
40
+ node_modules
41
+ **/node_modules
@@ -0,0 +1,247 @@
1
+ # Benchmarks for agent memory
2
+
3
+ Honest numbers, open methodology, one-command reproduction. This page reports
4
+ how Logica Mind scores on the public benchmarks the agent-memory industry uses
5
+ — and explains, with sources, why vendor headline numbers are rarely
6
+ comparable to each other.
7
+
8
+ > **TL;DR** — on LoCoMo under the *same published protocol the Mem0 paper used*
9
+ > (gpt-4o-mini answerer **and** judge, adversarial category excluded), Logica
10
+ > Mind's **full pipeline scores 72.5%** — above every memory system in the
11
+ > published protocol (Mem0ᵍ 68.4%, Mem0 66.9%, Zep 66.0%) and within 0.4pt of
12
+ > the full-context ceiling (72.9%), while paying **one LLM call per session**
13
+ > at write time (~35× fewer than per-write extraction pipelines). With **zero
14
+ > LLM calls at write time** it still scores **67.3%** — above Mem0 and Zep —
15
+ > and fully keyless (local ONNX, no API at all) it scores **60.9%**, matching
16
+ > the best RAG baseline with **87ms p50** local retrieval and $0 per write.
17
+
18
+ ---
19
+
20
+ ## LoCoMo — full run (locomo10, 1,540 scored questions)
21
+
22
+ | Mode | **accuracy (J)** | **retrieval latency** | **median context** |
23
+ |---|---|---|---|
24
+ | **full pipeline** (1 LLM call per *session* at write) | **72.5%** | 1,606 / 2,859 ms (p50/p95)³ | 3,525 tokens |
25
+ | zero-LLM writes, `openai` embedder (text-embedding-3-small) | **67.3%** | 584 / 1,452 ms (p50/p95)³ | 2,648 tokens |
26
+ | zero-LLM writes, `onnx` embedder (**no API keys at all**) | **60.9%** | 87 / 338 ms (p50/p95) | 2,738 tokens |
27
+
28
+ ³ The `openai`/full-pipeline rows embed each query over the network (the full
29
+ pipeline runs two lookups per question: dialogue + facts), measured while the
30
+ benchmark hammered the machine with 8 concurrent workers — latency is dominated
31
+ by API round-trips, not the library. The `onnx` row is fully in-process: that's
32
+ the latency the library itself is responsible for.
33
+
34
+ **Accuracy by question category** (official locomo10 category mapping¹):
35
+
36
+ ```text
37
+ full pipeline · session distillation at write — overall 72.5%
38
+ single-hop █████████████████░░░ 83.5% (702/841)
39
+ temporal ██████████████░░░░░░ 70.7% (227/321)
40
+ multi-hop ███████████░░░░░░░░░ 53.2% (150/282)
41
+ open-domain ███████░░░░░░░░░░░░░ 37.0% (34/92)
42
+
43
+ zero-LLM writes · openai embedder — overall 67.3%
44
+ single-hop █████████████████░░░ 82.9% (697/841)
45
+ temporal ████████████░░░░░░░░ 60.4% (194/321)
46
+ multi-hop █████████░░░░░░░░░░░ 43.3% (122/282)
47
+ open-domain ████░░░░░░░░░░░░░░░░ 21.7% (20/92)
48
+
49
+ zero-LLM writes · onnx embedder (keyless) — overall 60.9%
50
+ single-hop ███████████████░░░░░ 74.7% (628/841)
51
+ temporal ███████████░░░░░░░░░ 56.7% (182/321)
52
+ multi-hop ███████░░░░░░░░░░░░░ 36.5% (103/282)
53
+ open-domain █████░░░░░░░░░░░░░░░ 25.0% (23/92)
54
+ ```
55
+
56
+ For reference, Mem0's published per-category numbers (same protocol,
57
+ [Table 1](https://arxiv.org/html/2504.19413v1)): single-hop 67.1%, temporal
58
+ 55.5%, multi-hop 51.2%, open-domain 72.9%. The full pipeline **beats Mem0 on
59
+ single-hop (+16.4pts), temporal (+15.2pts) and multi-hop (+2.0pts)**;
60
+ open-domain remains their stronghold (it rewards broad world-knowledge
61
+ synthesis) — even after the pipeline nearly doubled our score there. Zero-LLM
62
+ writes already beat them on single-hop and temporal with no ingestion cost at
63
+ all.
64
+
65
+ ---
66
+
67
+ ## Why zero-LLM writes beat the extraction pipelines
68
+
69
+ Scoring 67.3% — above Mem0 (66.9%) and Zep (66.0%) — *without paying an LLM
70
+ per memory written* isn't luck. Three design decisions do the work:
71
+
72
+ **1. Distillation loses detail; raw turns keep it.**
73
+ Mem0, Zep, LangMem and OpenAI Memory all run every incoming message through an
74
+ LLM at write time and store the *summary*. But 55% of LoCoMo's scored
75
+ questions are single-hop — the answer sits verbatim in one dialogue turn, with
76
+ its exact wording, number or date. A distilled fact has often thrown that
77
+ detail away; the raw turn never does. That's the single-hop gap: **82.9% vs
78
+ Mem0's 67.1%**. Logica Mind's strategy is *retrieve precise, read wide*: every
79
+ turn is stored as its own memory (a precise retrieval unit that fits the
80
+ embedder's window), and the answer context expands each hit with its ±2
81
+ neighbouring turns, in conversation order, so the answerer sees the local
82
+ dialogue — not an isolated fragment.
83
+
84
+ **2. Time is a first-class column, not an afterthought.**
85
+ Every memory carries its session date (the same reason the knowledge graph is
86
+ *temporal*), and the answerer is instructed to resolve relative time — a
87
+ memory dated 15 July saying "last Friday" means the Friday before 15 July.
88
+ Temporal questions: **60.4% vs Mem0's published 55.5%** — and temporal memory
89
+ is the product Zep sells.
90
+
91
+ **3. The economics are not a footnote.**
92
+ Ingesting LoCoMo means ~26,000 dialogue turns. Per-write extraction pipelines
93
+ pay an LLM call (plus latency, plus a third party seeing your data) for every
94
+ one of them. Logica Mind pays **zero** — ingestion is free, private and local
95
+ — and still scores higher. The optional full pipeline pays **one call per
96
+ session** (~350 for all of LoCoMo, ~35× fewer), not one per write.
97
+
98
+ **Where extraction does win** — and we say so: in zero-LLM mode, multi-hop
99
+ (43.3% vs 51.2%) and open-domain (21.7% vs 72.9%), questions whose answer must
100
+ be *synthesized across many turns*. A distilled fact base can pre-join what
101
+ raw turns keep apart. The full pipeline buys exactly that back — multi-hop
102
+ jumps to 53.2% (now above Mem0) and open-domain nearly doubles to 37.0% —
103
+ **without giving up the raw-turn advantage** (single-hop holds at 83.5%).
104
+
105
+ **A negative result we publish anyway:** the *obvious* full-pipeline design —
106
+ let distilled facts and raw turns compete in one top-k — scores **63.1%**,
107
+ *worse than not extracting at all* (67.3%). Facts rank high semantically and
108
+ crowd the precise dialogue turns out of the retrieval budget, killing the
109
+ single-hop advantage. The design that wins (72.5%) keeps the dialogue
110
+ retrieval untouched and *appends* facts as a separate lookup. If you're
111
+ building a memory system: extraction is only worth its cost when it
112
+ supplements raw evidence instead of replacing it.
113
+
114
+ The shape is exactly what zero-LLM ingestion predicts: questions answerable from
115
+ retrieved dialogue (single-hop, temporal) score high; questions that need facts
116
+ *synthesized across many turns* (multi-hop, open-domain) are where write-time
117
+ distillation earns its cost — that's what the **full pipeline** row measures.
118
+
119
+ ¹ Verified against the dataset itself: category 1 = multi-hop (282), 2 =
120
+ temporal (321), 3 = open-domain (96 in the dataset; 92 carry evidence
121
+ annotations and are scored), 4 = single-hop (841); category 5 = adversarial
122
+ (446) has no gold answers and is excluded — the same exclusion
123
+ [hard-coded in Mem0's evaluation code](https://github.com/mem0ai/mem0/blob/main/evaluation/evals.py).
124
+
125
+ **Protocol** (matches the [Mem0 paper](https://arxiv.org/abs/2504.19413)
126
+ family): ingest the conversation, `recall(question, k)` → answer with
127
+ **gpt-4o-mini** from only the retrieved context → grade with a **gpt-4o-mini**
128
+ judge against the gold label. Two write-time modes are reported:
129
+
130
+ - **zero-LLM writes** (k=20): every dialogue turn stored raw (speaker +
131
+ session date), no LLM at ingestion — the free/private/local trade.
132
+ - **full pipeline** (k=20 dialogue + 10 facts, ±3 neighbours): Logica Mind's
133
+ LLM extraction distills durable facts at write time — **one call per
134
+ session** (~35× fewer LLM calls than per-memory extraction pipelines). The
135
+ facts *supplement* the dialogue retrieval instead of competing with it for
136
+ the same top-k: the answer context is the same dialogue the zero-LLM mode
137
+ retrieves, plus the 10 most relevant distilled facts appended separately.
138
+
139
+ ```bash
140
+ python bench/locomo.py --embedder onnx # retrieval-only (free)
141
+ OPENAI_API_KEY=… python bench/locomo_judge.py --embedder openai # zero-LLM writes (~$3)
142
+ OPENAI_API_KEY=… python bench/locomo_judge.py --embedder openai \
143
+ --ingest supplement --k 20 --radius 3 # full pipeline (~$4)
144
+ ```
145
+
146
+ ---
147
+
148
+ ## How this compares — published numbers, same protocol family
149
+
150
+ LoCoMo **J score** with gpt-4o-mini answering, adversarial excluded, as
151
+ **published in the [Mem0 paper, Table 1](https://arxiv.org/html/2504.19413v1)**
152
+ (±, Letta's from [their blog](https://www.letta.com/blog/benchmarking-ai-agent-memory)):
153
+
154
+ | System | LoCoMo J | LLM at write time | Source |
155
+ |---|---|---|---|
156
+ | Letta (filesystem agent) | 74.0% | agent-managed | [Letta blog](https://www.letta.com/blog/benchmarking-ai-agent-memory) |
157
+ | Full-context baseline (no memory system) | 72.9% | — | [Mem0 paper](https://arxiv.org/html/2504.19413v1) |
158
+ | **Logica Mind (full pipeline: session distillation at write)** | **72.5%** | **yes — 1 call per session, ~35× fewer calls** | this page |
159
+ | Mem0ᵍ (graph variant) | 68.4% | yes, every write | [Mem0 paper](https://arxiv.org/html/2504.19413v1) |
160
+ | **Logica Mind (zero-LLM ingestion, openai embedder)** | **67.3%** | **no** | this page |
161
+ | Mem0 | 66.9% | yes, every write | [Mem0 paper](https://arxiv.org/html/2504.19413v1) |
162
+ | Zep (as measured by Mem0 — disputed²) | 66.0% | yes, every write | [Mem0 paper](https://arxiv.org/html/2504.19413v1) |
163
+ | Best RAG baseline | 61.0% | no | [Mem0 paper](https://arxiv.org/html/2504.19413v1) |
164
+ | **Logica Mind (zero-LLM ingestion, onnx embedder — fully keyless memory)** | **60.9%** | **no** | this page |
165
+ | LangMem | 58.1% | yes | [Mem0 paper](https://arxiv.org/html/2504.19413v1) |
166
+ | OpenAI Memory | 52.9% | yes | [Mem0 paper](https://arxiv.org/html/2504.19413v1) |
167
+ | A-Mem | 48.4% | yes | [Mem0 paper](https://arxiv.org/html/2504.19413v1) |
168
+
169
+ ² **The Zep number is publicly disputed.** Mem0 measured Zep at 66.0% and
170
+ [filed an issue](https://github.com/getzep/zep-papers/issues/5) arguing Zep's
171
+ earlier 84% claim improperly included the adversarial category (recomputing it
172
+ as 58.4%); Zep [rebutted](https://blog.getzep.com/lies-damn-lies-statistics-is-mem0-really-sota-in-agent-memory/)
173
+ alleging misconfiguration and reported 75.1% for itself under its own re-run.
174
+ Both can't be right — which is exactly why this page pins every number to its
175
+ source and protocol.
176
+
177
+ ### About the much bigger numbers on vendor sites
178
+
179
+ [Zep's research page](https://www.getzep.com/research/) reports **94.7%** on
180
+ LoCoMo and [Mem0's README](https://github.com/mem0ai/mem0) reports **91.6%**
181
+ (April 2026, "new algorithm"). These are **self-reported, post-paper numbers
182
+ under each vendor's own methodology** (different answerer models, judges,
183
+ retrieval budgets and dataset corrections), not peer-reviewed and not
184
+ comparable to the table above — note both vendors' *peer-comparable* numbers
185
+ in the published protocol are in the 60s. Letta showed a **plain filesystem
186
+ agent scores 74.0%** ([blog](https://www.letta.com/blog/benchmarking-ai-agent-memory)),
187
+ and the full-context baseline (72.9%) beats most memory systems — LoCoMo
188
+ conversations average only ~16–26k tokens, so the honest reading is:
189
+ **LoCoMo measures retrieval quality, not memory magic.** That's also
190
+ [Zep's own criticism](https://blog.getzep.com/lies-damn-lies-statistics-is-mem0-really-sota-in-agent-memory/)
191
+ of the benchmark.
192
+
193
+ ### What memory systems actually sell: latency & token cost
194
+
195
+ The Mem0 paper's own argument: full-context costs **17.1s p95** end-to-end vs
196
+ 1.4s with memory — the value is latency/cost, not accuracy. On that axis:
197
+
198
+ | System | Search latency (published) | Where memory lives |
199
+ |---|---|---|
200
+ | **Logica Mind (onnx, fully local)** | **87ms p50 / 338ms p95 (measured, this run)** | in-process, local SQLite |
201
+ | Zep (cloud) | 87–104ms p50 / 155–162ms p95 ([site](https://www.getzep.com/research/)) | network service |
202
+ | Mem0 | 148ms p50 / 200ms p95 ([paper](https://arxiv.org/html/2504.19413v1)) | network service |
203
+ | LangMem | 17,990ms p50 ([Mem0 paper](https://arxiv.org/html/2504.19413v1)) | store-dependent |
204
+
205
+ Logica Mind's retrieval is a local hybrid search — no network hop, no per-call
206
+ billing, and **$0 per memory written** (competing pipelines invoke an LLM on
207
+ every write: that's the cost curve they don't put on the landing page).
208
+
209
+ ---
210
+
211
+ ## Positioning — verified, with sources (June 2026)
212
+
213
+ | | **Logica Mind** | Mem0 | Zep / Graphiti | Letta | LangMem |
214
+ |---|---|---|---|---|---|
215
+ | License (OSS) | Apache-2.0 | Apache-2.0 | Apache-2.0 (Graphiti engine) | Apache-2.0 | MIT |
216
+ | Core install | **zero dependencies** | requires `openai` + `posthog` (telemetry) ([pyproject](https://raw.githubusercontent.com/mem0ai/mem0/main/pyproject.toml)) | needs Neo4j/FalkorDB/Neptune/Kuzu ([repo](https://github.com/getzep/graphiti)) | Postgres + pgvector ([docs](https://docs.letta.com/guides/docker/postgres/)) | 8 langchain-* deps ([pyproject](https://github.com/langchain-ai/langmem/blob/main/pyproject.toml)) |
217
+ | Works with no API key | **yes (hashing/onnx + heuristic extraction)** | no (LLM extraction at write) | no (LLM required at ingestion) | no (agent LLM) | no |
218
+ | Temporal knowledge graph | **yes, OSS** (point-in-time replay, fact invalidation) | removed from OSS; temporal = paid Platform v3 ([docs](https://docs.mem0.ai/platform/features/temporal-reasoning)) | yes (Graphiti, bi-temporal) | no (blocks + archival) | no |
219
+ | Self-hosted dashboard | **yes — 15 languages, graph explorer, zero services** | bundled with self-hosted server (needs OPENAI_API_KEY + JWT) | cloud only (server OSS deprecated) | ADE connects via HTTPS/cloud ([docs](https://docs.letta.com/guides/ade/overview/)) | none |
220
+ | Self-host status | first-class | supported (docker) | Graphiti yes; Zep server OSS **deprecated** | Docker image **deprecated** ([docs](https://docs.letta.com/guides/docker/)) | SDK only |
221
+ | Cloud pricing | — (self-host) | $19–$249/mo ([pricing](https://mem0.ai/pricing)) | free tier; Flex ~$104/mo | app.letta.com | via LangGraph Platform |
222
+
223
+ *(GitHub stars, 2026-06-10, via API: Mem0 58.3k · Graphiti 27.3k · Letta 23.2k
224
+ · LangMem 1.5k.)*
225
+
226
+ ---
227
+
228
+ ## Methodology notes & honesty policy
229
+
230
+ - Every external number above links to its primary source; nothing is
231
+ estimated. When sources conflict (Zep×Mem0), both sides are shown.
232
+ - Our runs: Apple M4 (CPU), Logica Mind v0.3.x defaults, hybrid vector+lexical
233
+ search + recency/importance blend + graph-aware boost; dialogue turns
234
+ ingested raw (speaker + session date), answer context = retrieved turns plus
235
+ neighbouring turns (±2 in the zero-LLM runs, ±3 in the full pipeline);
236
+ ~$3-4 of gpt-4o-mini for answer+judge per full run.
237
+ - The answerer prompt is part of the system under test (as in every published
238
+ pipeline): the zero-LLM runs used a strict answer-from-memories prompt; the
239
+ full-pipeline run additionally allows stating the reasonable inference the
240
+ memories imply. The judge prompt is identical across all runs.
241
+ - Known limitation we don't hide: with **zero LLM at write time** there is no
242
+ fact distillation at ingestion, so multi-hop/open-domain questions suffer —
243
+ that is the trade those rows sell (free, private, local writes). The **full
244
+ pipeline** rows measure what the optional write-time extraction buys back,
245
+ at 1 LLM call per session instead of per memory.
246
+ - Reproduce everything: `bench/locomo.py` (retrieval, free) and
247
+ `bench/locomo_judge.py` (J score, needs an OpenAI key).