memu-cli 0.3.0__tar.gz → 0.5.0__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 (238) hide show
  1. {memu_cli-0.3.0 → memu_cli-0.5.0}/CHANGELOG.md +100 -0
  2. memu_cli-0.5.0/INSTALL-LATEST.md +134 -0
  3. {memu_cli-0.3.0 → memu_cli-0.5.0}/PKG-INFO +50 -103
  4. memu_cli-0.5.0/README.md +145 -0
  5. {memu_cli-0.3.0 → memu_cli-0.5.0}/SKILL.md +24 -6
  6. memu_cli-0.5.0/assets/skill-extraction.png +0 -0
  7. memu_cli-0.5.0/assets/structure-v2.png +0 -0
  8. memu_cli-0.5.0/docs/adr/0012-cloud-backed-agentic-backend.md +108 -0
  9. {memu_cli-0.3.0 → memu_cli-0.5.0}/docs/adr/README.md +1 -0
  10. {memu_cli-0.3.0 → memu_cli-0.5.0}/npm/README.md +10 -1
  11. {memu_cli-0.3.0 → memu_cli-0.5.0}/pyproject.toml +2 -1
  12. memu_cli-0.5.0/src/memu/agentic_backend.py +31 -0
  13. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/app/agentic.py +43 -45
  14. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/cli.py +28 -22
  15. memu_cli-0.5.0/src/memu/cloud.py +286 -0
  16. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/__init__.py +0 -4
  17. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/inmemory/__init__.py +0 -2
  18. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/inmemory/models.py +2 -11
  19. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/inmemory/repo.py +1 -12
  20. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/inmemory/repositories/__init__.py +0 -6
  21. memu_cli-0.5.0/src/memu/database/inmemory/repositories/recall_file_repo.py +100 -0
  22. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/interfaces.py +1 -6
  23. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/models.py +1 -10
  24. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/postgres/migrations/versions/20260703_0001_initial_schema.py +0 -22
  25. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/postgres/models.py +2 -15
  26. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/postgres/postgres.py +2 -18
  27. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/postgres/repositories/__init__.py +0 -2
  28. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/postgres/repositories/recall_file_repo.py +32 -32
  29. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/postgres/schema.py +0 -9
  30. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/repositories/__init__.py +0 -2
  31. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/repositories/recall_file.py +7 -7
  32. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/sqlite/models.py +2 -13
  33. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/sqlite/repositories/__init__.py +0 -2
  34. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/sqlite/repositories/recall_file_repo.py +40 -40
  35. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/sqlite/schema.py +2 -11
  36. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/sqlite/sqlite.py +5 -21
  37. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/state.py +1 -3
  38. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/embedding/http_client.py +60 -5
  39. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/embedding/openai_sdk.py +21 -2
  40. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/env.py +94 -8
  41. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/bridging/layout.py +15 -2
  42. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/bridging/manifest.py +8 -4
  43. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/bridging/pipeline.py +30 -10
  44. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/bridging/recall_files.py +39 -3
  45. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/bridging/transcripts.py +14 -7
  46. memu_cli-0.5.0/src/memu/hosts/claude_code/BRIDGING_TASK.md +168 -0
  47. memu_cli-0.5.0/src/memu/hosts/claude_code/INSTALL.md +225 -0
  48. memu_cli-0.5.0/src/memu/hosts/claude_code/UNINSTALL.md +116 -0
  49. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/claude_code/cli.py +14 -0
  50. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/claude_code/sessions.py +11 -9
  51. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/codex/BRIDGING_TASK.md +34 -19
  52. memu_cli-0.5.0/src/memu/hosts/codex/INSTALL.md +291 -0
  53. memu_cli-0.5.0/src/memu/hosts/codex/UNINSTALL.md +102 -0
  54. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/codex/cli.py +6 -3
  55. memu_cli-0.5.0/src/memu/hosts/codex/sessions.py +80 -0
  56. memu_cli-0.5.0/src/memu/hosts/cursor/BRIDGING_TASK.md +117 -0
  57. memu_cli-0.5.0/src/memu/hosts/cursor/INSTALL.md +189 -0
  58. memu_cli-0.5.0/src/memu/hosts/cursor/UNINSTALL.md +105 -0
  59. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/cursor/cli.py +1 -0
  60. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/generic/BRIDGING_TASK.md +53 -12
  61. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/generic/INSTALL.md +73 -8
  62. memu_cli-0.5.0/src/memu/hosts/generic/UNINSTALL.md +108 -0
  63. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/generic/cli.py +1 -0
  64. memu_cli-0.5.0/src/memu/hosts/hermes/BRIDGING_TASK.md +119 -0
  65. memu_cli-0.5.0/src/memu/hosts/hermes/INSTALL.md +204 -0
  66. memu_cli-0.5.0/src/memu/hosts/hermes/UNINSTALL.md +114 -0
  67. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/hermes/cli.py +8 -1
  68. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/hermes/sessions.py +4 -1
  69. memu_cli-0.5.0/src/memu/hosts/host_cli.py +403 -0
  70. memu_cli-0.5.0/src/memu/hosts/instruction.py +323 -0
  71. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/openclaw/BRIDGING_TASK.md +48 -12
  72. memu_cli-0.5.0/src/memu/hosts/openclaw/INSTALL.md +209 -0
  73. memu_cli-0.5.0/src/memu/hosts/openclaw/UNINSTALL.md +112 -0
  74. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/openclaw/cli.py +8 -1
  75. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/openclaw/sessions.py +17 -1
  76. memu_cli-0.5.0/src/memu/hosts/retrieval.py +131 -0
  77. memu_cli-0.5.0/src/memu/hosts/scheduling/__init__.py +18 -0
  78. memu_cli-0.5.0/src/memu/hosts/scheduling/prompt.py +54 -0
  79. memu_cli-0.5.0/src/memu/hosts/scheduling/windows.py +353 -0
  80. memu_cli-0.5.0/src/memu/hosts/workbuddy/BRIDGING_TASK.md +120 -0
  81. memu_cli-0.5.0/src/memu/hosts/workbuddy/INSTALL.md +190 -0
  82. memu_cli-0.5.0/src/memu/hosts/workbuddy/UNINSTALL.md +96 -0
  83. memu_cli-0.5.0/src/memu/hosts/workbuddy/__init__.py +11 -0
  84. memu_cli-0.5.0/src/memu/hosts/workbuddy/cli.py +48 -0
  85. memu_cli-0.5.0/src/memu/hosts/workbuddy/sessions.py +86 -0
  86. {memu_cli-0.3.0 → memu_cli-0.5.0}/tests/test_agentic.py +62 -6
  87. memu_cli-0.5.0/tests/test_bridging_promotion.py +125 -0
  88. {memu_cli-0.3.0 → memu_cli-0.5.0}/tests/test_cli.py +55 -0
  89. memu_cli-0.5.0/tests/test_cli_stdio.py +47 -0
  90. memu_cli-0.5.0/tests/test_cloud.py +339 -0
  91. memu_cli-0.5.0/tests/test_doctor_proxy_hint.py +169 -0
  92. memu_cli-0.5.0/tests/test_embedding_proxy.py +200 -0
  93. memu_cli-0.5.0/tests/test_env_passthrough.py +72 -0
  94. {memu_cli-0.3.0 → memu_cli-0.5.0}/tests/test_host_generic.py +7 -6
  95. memu_cli-0.5.0/tests/test_host_instruction.py +294 -0
  96. memu_cli-0.5.0/tests/test_host_retrieval.py +102 -0
  97. {memu_cli-0.3.0 → memu_cli-0.5.0}/tests/test_host_sessions.py +199 -2
  98. memu_cli-0.5.0/tests/test_scheduling_windows.py +220 -0
  99. {memu_cli-0.3.0 → memu_cli-0.5.0}/uv.lock +2 -2
  100. memu_cli-0.3.0/README.md +0 -198
  101. memu_cli-0.3.0/assets/structure-v2.png +0 -0
  102. memu_cli-0.3.0/src/memu/database/inmemory/repositories/recall_file_repo.py +0 -94
  103. memu_cli-0.3.0/src/memu/database/inmemory/repositories/recall_file_resource_repo.py +0 -67
  104. memu_cli-0.3.0/src/memu/database/postgres/repositories/recall_file_resource_repo.py +0 -149
  105. memu_cli-0.3.0/src/memu/database/repositories/recall_file_resource.py +0 -33
  106. memu_cli-0.3.0/src/memu/database/sqlite/repositories/recall_file_resource_repo.py +0 -215
  107. memu_cli-0.3.0/src/memu/hosts/claude_code/BRIDGING_TASK.md +0 -85
  108. memu_cli-0.3.0/src/memu/hosts/claude_code/INSTALL.md +0 -153
  109. memu_cli-0.3.0/src/memu/hosts/codex/INSTALL.md +0 -212
  110. memu_cli-0.3.0/src/memu/hosts/codex/sessions.py +0 -52
  111. memu_cli-0.3.0/src/memu/hosts/cursor/BRIDGING_TASK.md +0 -80
  112. memu_cli-0.3.0/src/memu/hosts/cursor/INSTALL.md +0 -126
  113. memu_cli-0.3.0/src/memu/hosts/hermes/BRIDGING_TASK.md +0 -83
  114. memu_cli-0.3.0/src/memu/hosts/hermes/INSTALL.md +0 -128
  115. memu_cli-0.3.0/src/memu/hosts/host_cli.py +0 -221
  116. memu_cli-0.3.0/src/memu/hosts/instruction.py +0 -167
  117. memu_cli-0.3.0/src/memu/hosts/openclaw/INSTALL.md +0 -129
  118. memu_cli-0.3.0/src/memu/hosts/retrieval.py +0 -49
  119. memu_cli-0.3.0/tests/test_host_instruction.py +0 -107
  120. {memu_cli-0.3.0 → memu_cli-0.5.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  121. {memu_cli-0.3.0 → memu_cli-0.5.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  122. {memu_cli-0.3.0 → memu_cli-0.5.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  123. {memu_cli-0.3.0 → memu_cli-0.5.0}/.github/ISSUE_TEMPLATE/hackathon_task.yml +0 -0
  124. {memu_cli-0.3.0 → memu_cli-0.5.0}/.github/ISSUE_TEMPLATE/improvement_suggestion.yml +0 -0
  125. {memu_cli-0.3.0 → memu_cli-0.5.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  126. {memu_cli-0.3.0 → memu_cli-0.5.0}/.github/workflows/build.yml +0 -0
  127. {memu_cli-0.3.0 → memu_cli-0.5.0}/.github/workflows/pr-title.yml +0 -0
  128. {memu_cli-0.3.0 → memu_cli-0.5.0}/.github/workflows/publish-memu-cli.yml +0 -0
  129. {memu_cli-0.3.0 → memu_cli-0.5.0}/.github/workflows/release-please.yml +0 -0
  130. {memu_cli-0.3.0 → memu_cli-0.5.0}/.gitignore +0 -0
  131. {memu_cli-0.3.0 → memu_cli-0.5.0}/.pre-commit-config.yaml +0 -0
  132. {memu_cli-0.3.0 → memu_cli-0.5.0}/.python-version +0 -0
  133. {memu_cli-0.3.0 → memu_cli-0.5.0}/AGENTS.md +0 -0
  134. {memu_cli-0.3.0 → memu_cli-0.5.0}/CONTRIBUTING.md +0 -0
  135. {memu_cli-0.3.0 → memu_cli-0.5.0}/Cargo.lock +0 -0
  136. {memu_cli-0.3.0 → memu_cli-0.5.0}/Cargo.toml +0 -0
  137. {memu_cli-0.3.0 → memu_cli-0.5.0}/LICENSE.txt +0 -0
  138. {memu_cli-0.3.0 → memu_cli-0.5.0}/MANIFEST.in +0 -0
  139. {memu_cli-0.3.0 → memu_cli-0.5.0}/Makefile +0 -0
  140. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/banner.png +0 -0
  141. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/benchmark.png +0 -0
  142. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/memUbot.png +0 -0
  143. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/memorize.png +0 -0
  144. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/partners/Clawdchat.png +0 -0
  145. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/partners/LazyLLM.png +0 -0
  146. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/partners/buddie.png +0 -0
  147. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/partners/bytebase.png +0 -0
  148. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/partners/jazz.png +0 -0
  149. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/partners/openagents.png +0 -0
  150. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/partners/xroute.png +0 -0
  151. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/qrcode.png +0 -0
  152. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/retrieve.png +0 -0
  153. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/star.gif +0 -0
  154. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/structure.png +0 -0
  155. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/usecase/ai_companion-0000.jpg +0 -0
  156. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/usecase/ai_creation-0000.jpg +0 -0
  157. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/usecase/ai_edu-0000.jpg +0 -0
  158. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/usecase/ai_ip-0000.png +0 -0
  159. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/usecase/ai_robot-0000.jpg +0 -0
  160. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/usecase/ai_role_play-0000.jpg +0 -0
  161. {memu_cli-0.3.0 → memu_cli-0.5.0}/assets/usecase/ai_therapy-0000.jpg +0 -0
  162. {memu_cli-0.3.0 → memu_cli-0.5.0}/docs/adr/0001-workflow-pipeline-architecture.md +0 -0
  163. {memu_cli-0.3.0 → memu_cli-0.5.0}/docs/adr/0002-pluggable-storage-and-vector-strategy.md +0 -0
  164. {memu_cli-0.3.0 → memu_cli-0.5.0}/docs/adr/0003-user-scope-in-data-model.md +0 -0
  165. {memu_cli-0.3.0 → memu_cli-0.5.0}/docs/adr/0004-workspace-memorize-and-memory-file-system.md +0 -0
  166. {memu_cli-0.3.0 → memu_cli-0.5.0}/docs/adr/0005-dedicated-embedding-package.md +0 -0
  167. {memu_cli-0.3.0 → memu_cli-0.5.0}/docs/adr/0006-from-memory-item-category-to-tracked-workspace-memorization.md +0 -0
  168. {memu_cli-0.3.0 → memu_cli-0.5.0}/docs/adr/0007-three-independent-memory-lines-wiki-graph.md +0 -0
  169. {memu_cli-0.3.0 → memu_cli-0.5.0}/docs/adr/0008-two-integration-surfaces-hooks-and-api.md +0 -0
  170. {memu_cli-0.3.0 → memu_cli-0.5.0}/docs/adr/0009-codex-packaging-cli-and-config.md +0 -0
  171. {memu_cli-0.3.0 → memu_cli-0.5.0}/docs/adr/0010-multi-host-adapters.md +0 -0
  172. {memu_cli-0.3.0 → memu_cli-0.5.0}/docs/adr/0011-generic-host-adapter.md +0 -0
  173. {memu_cli-0.3.0 → memu_cli-0.5.0}/docs/sqlite.md +0 -0
  174. {memu_cli-0.3.0 → memu_cli-0.5.0}/npm/bin/memu.js +0 -0
  175. {memu_cli-0.3.0 → memu_cli-0.5.0}/npm/package.json +0 -0
  176. {memu_cli-0.3.0 → memu_cli-0.5.0}/scripts/db.py +0 -0
  177. {memu_cli-0.3.0 → memu_cli-0.5.0}/setup.cfg +0 -0
  178. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/lib.rs +0 -0
  179. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/__init__.py +0 -0
  180. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/__main__.py +0 -0
  181. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/_core.pyi +0 -0
  182. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/app/__init__.py +0 -0
  183. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/app/client_pool.py +0 -0
  184. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/app/service.py +0 -0
  185. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/app/settings.py +0 -0
  186. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/factory.py +0 -0
  187. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/inmemory/repositories/filter.py +0 -0
  188. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/inmemory/repositories/recall_file_segment_repo.py +0 -0
  189. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/inmemory/repositories/resource_repo.py +0 -0
  190. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/inmemory/state.py +0 -0
  191. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/inmemory/vector.py +0 -0
  192. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/postgres/__init__.py +0 -0
  193. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/postgres/migration.py +0 -0
  194. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/postgres/migrations/__init__.py +0 -0
  195. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/postgres/migrations/env.py +0 -0
  196. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/postgres/migrations/script.py.mako +0 -0
  197. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/postgres/repositories/base.py +0 -0
  198. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/postgres/repositories/recall_file_segment_repo.py +0 -0
  199. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/postgres/repositories/resource_repo.py +0 -0
  200. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/postgres/session.py +0 -0
  201. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/repositories/recall_file_segment.py +0 -0
  202. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/repositories/resource.py +0 -0
  203. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/sqlite/__init__.py +0 -0
  204. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/sqlite/repositories/base.py +0 -0
  205. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/sqlite/repositories/recall_file_segment_repo.py +0 -0
  206. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/sqlite/repositories/resource_repo.py +0 -0
  207. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/database/sqlite/session.py +0 -0
  208. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/embedding/__init__.py +0 -0
  209. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/embedding/backends/__init__.py +0 -0
  210. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/embedding/backends/base.py +0 -0
  211. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/embedding/backends/doubao.py +0 -0
  212. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/embedding/backends/jina.py +0 -0
  213. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/embedding/backends/openai.py +0 -0
  214. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/embedding/backends/openrouter.py +0 -0
  215. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/embedding/backends/voyage.py +0 -0
  216. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/embedding/base.py +0 -0
  217. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/embedding/defaults.py +0 -0
  218. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/embedding/gateway.py +0 -0
  219. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/__init__.py +0 -0
  220. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/base.py +0 -0
  221. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/bridging/__init__.py +0 -0
  222. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/bridging/instructions.py +0 -0
  223. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/bridging/resources.py +0 -0
  224. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/claude_code/__init__.py +0 -0
  225. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/codex/__init__.py +0 -0
  226. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/cursor/__init__.py +0 -0
  227. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/cursor/sessions.py +0 -0
  228. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/generic/__init__.py +0 -0
  229. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/generic/detect.py +0 -0
  230. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/generic/sessions.py +0 -0
  231. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/hermes/__init__.py +0 -0
  232. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/hosts/openclaw/__init__.py +0 -0
  233. {memu_cli-0.3.0 → memu_cli-0.5.0}/src/memu/vector.py +0 -0
  234. {memu_cli-0.3.0 → memu_cli-0.5.0}/tests/__init__.py +0 -0
  235. {memu_cli-0.3.0 → memu_cli-0.5.0}/tests/rust_entry_test.py +0 -0
  236. {memu_cli-0.3.0 → memu_cli-0.5.0}/tests/test_embedding.py +0 -0
  237. {memu_cli-0.3.0 → memu_cli-0.5.0}/tests/test_postgres_migration_config.py +0 -0
  238. {memu_cli-0.3.0 → memu_cli-0.5.0}/tests/test_vector.py +0 -0
@@ -1,5 +1,105 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.0.0-beta.0](https://github.com/NevaMind-AI/memU/compare/v1.5.1...v2.0.0-beta.0) (2026-07-23)
4
+
5
+
6
+ ### Features
7
+
8
+ * **blob:** ingest rich documents (PDF/Office/HTML) via MarkItDown ([#447](https://github.com/NevaMind-AI/memU/issues/447)) ([1e16341](https://github.com/NevaMind-AI/memU/commit/1e1634131f84ceb023d03cd87bcf062317abd5ba))
9
+ * Codex session-bridging pipeline and scheduled-task skill ([#477](https://github.com/NevaMind-AI/memU/issues/477)) ([1a8edb5](https://github.com/NevaMind-AI/memU/commit/1a8edb57110ebfd208b2fe1f52e3998058fed408))
10
+ * **doctor:** diagnose proxy hijacking instead of printing a bare 502 ([7c41eec](https://github.com/NevaMind-AI/memU/commit/7c41eecd53e4c13b1a5c25b01b70f484147295fb))
11
+ * **env:** config.env carries NO_PROXY; MEMU_HTTP_PROXY works from the file ([5265945](https://github.com/NevaMind-AI/memU/commit/5265945e3063529819415194e79c46b7614d6081))
12
+ * from memory item/category to tracked entry/file for workspace memorization (ADR 0006) ([#456](https://github.com/NevaMind-AI/memU/issues/456)) ([68877da](https://github.com/NevaMind-AI/memU/commit/68877da10a1a18be5c708ec1ab7eb6c45b80ae50))
13
+ * **hermes:** install retrieval as a skill ([#536](https://github.com/NevaMind-AI/memU/issues/536)) ([8766d3d](https://github.com/NevaMind-AI/memU/commit/8766d3d3903383a3d4ff38d0f0d620cdf97418ec))
14
+ * **hosts:** add Claude Code, Cursor, OpenClaw, and Hermes host adapters ([#494](https://github.com/NevaMind-AI/memU/issues/494)) ([24d1b3b](https://github.com/NevaMind-AI/memU/commit/24d1b3b4f345106f07f1262dc2756b49fb7102cf))
15
+ * **hosts:** add memu-agent, a generic adapter for any other agent ([#496](https://github.com/NevaMind-AI/memU/issues/496)) ([e46a1f0](https://github.com/NevaMind-AI/memU/commit/e46a1f04a216a80b3a38064866420c79205fbe22))
16
+ * **hosts:** agent-driven uninstall — remove-instruction, docs uninstall, per-host guides ([#509](https://github.com/NevaMind-AI/memU/issues/509)) ([f51673e](https://github.com/NevaMind-AI/memU/commit/f51673e6e80b23c570a7364b415bf61481956971))
17
+ * **hosts:** install retrieval as a skill on Codex and Claude Code ([#535](https://github.com/NevaMind-AI/memU/issues/535)) ([2ed480e](https://github.com/NevaMind-AI/memU/commit/2ed480ebe462fe4008fdb4315cf5ab9e0316dba4))
18
+ * layered, track-aware workspace memorize & retrieve ([#466](https://github.com/NevaMind-AI/memU/issues/466)) ([094e22f](https://github.com/NevaMind-AI/memU/commit/094e22f0e10e7fe71c079608407b6a01b4d67e55))
19
+ * **llm,vlm:** multi-provider LLM gateway, modular preprocessing, and VLM package ([#442](https://github.com/NevaMind-AI/memU/issues/442)) ([6f1b0bc](https://github.com/NevaMind-AI/memU/commit/6f1b0bc19d600e77abe7d6ec82d4196d1efe1516))
20
+ * **memory_fs:** workspace memorize + markdown memory file system ([#439](https://github.com/NevaMind-AI/memU/issues/439)) ([1b1ad61](https://github.com/NevaMind-AI/memU/commit/1b1ad61bdb96030f00e169b14d7864c1f6adb931))
21
+ * memu CLI, npm launcher, and agent skills for the workspace pair ([#467](https://github.com/NevaMind-AI/memU/issues/467)) ([c861974](https://github.com/NevaMind-AI/memU/commit/c8619744b13c67f7efc3322c060e6090255a8522))
22
+ * **npm:** point the launcher at the memu-cli PyPI channel ([#483](https://github.com/NevaMind-AI/memU/issues/483)) ([5056389](https://github.com/NevaMind-AI/memU/commit/505638905f279e0b2fac61572ea551f819007aa1))
23
+ * **openclaw:** install retrieval as a skill ([#537](https://github.com/NevaMind-AI/memU/issues/537)) ([3cef5ae](https://github.com/NevaMind-AI/memU/commit/3cef5ae2610ce9227de6471a63cc139ff09cf63c))
24
+ * **preprocess:** classify audio type and add an overview on ingest ([#448](https://github.com/NevaMind-AI/memU/issues/448)) ([f7601da](https://github.com/NevaMind-AI/memU/commit/f7601daf4ed89815af5c1c1c9011db6af63c1fa5))
25
+ * **vlm,preprocess:** native whole-video understanding via OpenRouter ([#450](https://github.com/NevaMind-AI/memU/issues/450)) ([1de5784](https://github.com/NevaMind-AI/memU/commit/1de57847e0ffc430cbf5d6dc17183f33d08be8fe))
26
+
27
+
28
+ ### Bug Fixes
29
+
30
+ * **app:** unpack the (vectors, raw_response) tuple embed() returns ([#504](https://github.com/NevaMind-AI/memU/issues/504)) ([9b2a70c](https://github.com/NevaMind-AI/memU/commit/9b2a70ca214cd3a5b22e902cad0dc19ad07bfeb9))
31
+ * **bridging:** advance the cursor and snapshot at commit, not prepare ([#531](https://github.com/NevaMind-AI/memU/issues/531)) ([0ceaa19](https://github.com/NevaMind-AI/memU/commit/0ceaa190d92f8c7c6705db0dcfd6628581d10213))
32
+ * **ci:** sort workbuddy cli imports so make check passes ([#522](https://github.com/NevaMind-AI/memU/issues/522)) ([151298c](https://github.com/NevaMind-AI/memU/commit/151298c3c03a6b3cc9ef371d8211b469fffc2469))
33
+ * **cli:** force UTF-8 stdio so piped output survives non-UTF-8 Windows code pages ([#513](https://github.com/NevaMind-AI/memU/issues/513)) ([b521453](https://github.com/NevaMind-AI/memU/commit/b5214536c5fce628c174c9c074b9c1d0a53da2ca))
34
+ * **codex:** drop harness-injected user records from the conversation seam ([#511](https://github.com/NevaMind-AI/memU/issues/511)) ([c827157](https://github.com/NevaMind-AI/memU/commit/c827157ead066f0a859cb2f1e5deac62ffbe63a5))
35
+ * **embedding:** never route loopback embedding calls through a proxy ([#519](https://github.com/NevaMind-AI/memU/issues/519)) ([df6cfba](https://github.com/NevaMind-AI/memU/commit/df6cfba6b9741cc062b7d219af042ddddffcbb5c))
36
+ * handle multiple root-level XML elements from non-conformant LLMs ([#409](https://github.com/NevaMind-AI/memU/issues/409)) ([fed42b6](https://github.com/NevaMind-AI/memU/commit/fed42b6142ec1e9f9820e46d8899823d68de8276))
37
+ * **hermes:** escape the state.db path when building the SQLite URI ([#503](https://github.com/NevaMind-AI/memU/issues/503)) ([3135132](https://github.com/NevaMind-AI/memU/commit/313513204d87e7156d6a7d459df1bcac64469044))
38
+ * **llm/vlm:** correct OpenAI token-limit param and simplify conversation preprocess ([#449](https://github.com/NevaMind-AI/memU/issues/449)) ([ff3c2be](https://github.com/NevaMind-AI/memU/commit/ff3c2bee2ec96ebd303f3e22dae1977ff6388120))
39
+ * make lazyllm an optional dependency (fixes [#373](https://github.com/NevaMind-AI/memU/issues/373)) ([#402](https://github.com/NevaMind-AI/memU/issues/402)) ([7652982](https://github.com/NevaMind-AI/memU/commit/7652982a016b2a2426d20bc11c46491d909704d0))
40
+ * **memory_fs:** restore LLM-free skill bypass and unify synthesis paths ([#444](https://github.com/NevaMind-AI/memU/issues/444)) ([bc13bd4](https://github.com/NevaMind-AI/memU/commit/bc13bd43c6ed3d480b671736bab987434675c717))
41
+ * **openclaw:** scan only main session transcripts, not trajectory/checkpoint sidecars ([0245de9](https://github.com/NevaMind-AI/memU/commit/0245de9710f8f73a8b21361442ac3dfd6c7829c7))
42
+ * optimize category initialization to avoid unnecessary embedding ([#388](https://github.com/NevaMind-AI/memU/issues/388)) ([a92f266](https://github.com/NevaMind-AI/memU/commit/a92f2666bf94336f8c6bf950088249e611915e7d))
43
+ * remove broken memu-server entry point (fixes [#354](https://github.com/NevaMind-AI/memU/issues/354)) ([#398](https://github.com/NevaMind-AI/memU/issues/398)) ([0672b56](https://github.com/NevaMind-AI/memU/commit/0672b56725e12c35bd46061bb23ccd93690a5fbb))
44
+ * remove duplicate document text from preprocess prompt ([#420](https://github.com/NevaMind-AI/memU/issues/420)) ([44aa5ff](https://github.com/NevaMind-AI/memU/commit/44aa5ff0cbceae56ab283848e722a9d4bd8eddd0))
45
+ * remove stale memu-server script entry point (fixes [#393](https://github.com/NevaMind-AI/memU/issues/393)) ([#403](https://github.com/NevaMind-AI/memU/issues/403)) ([c5fe493](https://github.com/NevaMind-AI/memU/commit/c5fe493b0596d68479b0ce6c6d83e362ffb04e90))
46
+ * resolve SQLite embedding TypeError by using sa_column=False ([#401](https://github.com/NevaMind-AI/memU/issues/401)) ([7e198f3](https://github.com/NevaMind-AI/memU/commit/7e198f3718fa6028c809ba7d816a96541fe7e13f))
47
+ * return empty list for non-positive top_k in cosine_topk ([#423](https://github.com/NevaMind-AI/memU/issues/423)) ([39023a8](https://github.com/NevaMind-AI/memU/commit/39023a81d758eb4447ed7d88503b8d782aecaf73))
48
+ * **tests:** pin UTF-8 on test file I/O so the suite passes on non-UTF-8-locale Windows ([#501](https://github.com/NevaMind-AI/memU/issues/501)) ([dda515a](https://github.com/NevaMind-AI/memU/commit/dda515a4eb3117ff804cd7ce1ae66e03c23028b6))
49
+
50
+
51
+ ### Documentation
52
+
53
+ * add ADR 0008 — trajectory as the source, hooks over API ([#476](https://github.com/NevaMind-AI/memU/issues/476)) ([ff90dac](https://github.com/NevaMind-AI/memU/commit/ff90dac6976bc920667e03d295a75d5da8626f75))
54
+ * add INSTALL-LATEST.md and register the WorkBuddy adapter ([#527](https://github.com/NevaMind-AI/memU/issues/527)) ([4871c55](https://github.com/NevaMind-AI/memU/commit/4871c558d5b84c7649d822015dab617a095d678f))
55
+ * add SKILL.md, one routing entry point for agent-driven install ([#497](https://github.com/NevaMind-AI/memU/issues/497)) ([bf7aaf3](https://github.com/NevaMind-AI/memU/commit/bf7aaf3bf95cb37f723e7a81b6d5bcdaf35a0f2e))
56
+ * add the architecture image the README references ([#492](https://github.com/NevaMind-AI/memU/issues/492)) ([c07b905](https://github.com/NevaMind-AI/memU/commit/c07b9055dc245680c67df02199d4c95cd7a9a62f))
57
+ * add under-construction notice, stabilizing ~July 15 ([#472](https://github.com/NevaMind-AI/memU/issues/472)) ([6426ff0](https://github.com/NevaMind-AI/memU/commit/6426ff02aacca12e9d4efbcfc89f53eeed2ae55b))
58
+ * ADR 0007 — drop the graph, retrieval is hybrid (embedding + BM25) ([#464](https://github.com/NevaMind-AI/memU/issues/464)) ([3dd7d5c](https://github.com/NevaMind-AI/memU/commit/3dd7d5c055fc6a3244d4c2390f7b8e6bc4321857))
59
+ * ADR 0007 — invert L1/L2 (L1 = coarse doc, L2 = item slices) ([#465](https://github.com/NevaMind-AI/memU/issues/465)) ([0afbcc5](https://github.com/NevaMind-AI/memU/commit/0afbcc550ac5b816e5ae9ad309e62adbdf4b80b4))
60
+ * ADR 0007 — replace the explicit item graph with entity linking ([#463](https://github.com/NevaMind-AI/memU/issues/463)) ([0bd3c77](https://github.com/NevaMind-AI/memU/commit/0bd3c7765ac791020941de8791ba5b7c50ecc5e0))
61
+ * ADR 0007 — three independent memory lines on a layered wiki-graph kernel ([#461](https://github.com/NevaMind-AI/memU/issues/461)) ([a6cf62e](https://github.com/NevaMind-AI/memU/commit/a6cf62e069765b7b234597e537ec170d169d751c))
62
+ * align architecture.md and READMEs with ADR 0006 data model ([#460](https://github.com/NevaMind-AI/memU/issues/460)) ([8062b91](https://github.com/NevaMind-AI/memU/commit/8062b91776e69757fd467e79e56cd72eba62c72c))
63
+ * consolidate agent skills into one memu SKILL.md, link it atop README ([#469](https://github.com/NevaMind-AI/memU/issues/469)) ([6f0ae82](https://github.com/NevaMind-AI/memU/commit/6f0ae82aaf9d1193841b8e082a2f9fed8753ed70))
64
+ * drop the API and CLI reference sections from the README ([#489](https://github.com/NevaMind-AI/memU/issues/489)) ([94a1111](https://github.com/NevaMind-AI/memU/commit/94a11117cf5684888fb7858356c51203c903e9bb))
65
+ * expand the README; rename provider var to MEMU_EMBED_PROVIDER ([#486](https://github.com/NevaMind-AI/memU/issues/486)) ([96da89b](https://github.com/NevaMind-AI/memU/commit/96da89bfe048b86516faa4b86f69b508fb4c4c3c))
66
+ * focus readme on workspace APIs ([9241f31](https://github.com/NevaMind-AI/memU/commit/9241f3112e912bd47add2fabe6dc2611a4bdac8c))
67
+ * **grok:** fix MemoryService initialization example ([#405](https://github.com/NevaMind-AI/memU/issues/405)) ([96e693a](https://github.com/NevaMind-AI/memU/commit/96e693aa09add032f67b342e21b86fa96078611b))
68
+ * highlight self-evolving skills in README and description ([#452](https://github.com/NevaMind-AI/memU/issues/452)) ([fb68d22](https://github.com/NevaMind-AI/memU/commit/fb68d22c3caa4a9b6f5cb2a57d185bb9b5e22a5f))
69
+ * **hosts:** bind the session cursor's lifecycle to the store's ([75959a6](https://github.com/NevaMind-AI/memU/commit/75959a6e72727c35929f4296c087ed00c97971bf))
70
+ * **hosts:** correct the Claude Code multi-block claim and pin it with tests ([#502](https://github.com/NevaMind-AI/memU/issues/502)) ([5995e05](https://github.com/NevaMind-AI/memU/commit/5995e05f27c7d90231468bcb062713af30813b08))
71
+ * **hosts:** default bridging schedule to hourly ([#516](https://github.com/NevaMind-AI/memU/issues/516)) ([c1046bb](https://github.com/NevaMind-AI/memU/commit/c1046bb1954c3dd7b16ced769da030d8a02c8d32))
72
+ * **hosts:** name the OS system-wide proxy as a 502 source ([#523](https://github.com/NevaMind-AI/memU/issues/523)) ([2b79803](https://github.com/NevaMind-AI/memU/commit/2b79803612872e65201a40dde95ac00541f93fae))
73
+ * **hosts:** no-key local fallback hint; default bridging schedule to cron ([#508](https://github.com/NevaMind-AI/memU/issues/508)) ([d155c48](https://github.com/NevaMind-AI/memU/commit/d155c48ac6a35465ad47848927b271f34e2dc4d0))
74
+ * **hosts:** scheduled runs drain leftover jobs first; config repairs stay at the connection layer ([9195d14](https://github.com/NevaMind-AI/memU/commit/9195d14cef2d308cff3fcb853a6274e1f0db9d31))
75
+ * **hosts:** the scheduler's PATH is not your shell's — fix and honest verify for the bridging guides ([#530](https://github.com/NevaMind-AI/memU/issues/530)) ([19302d2](https://github.com/NevaMind-AI/memU/commit/19302d24260c7b941bdfee66bba8f16b6b47c8c2))
76
+ * lead the README with the one-message agent-driven install ([#498](https://github.com/NevaMind-AI/memU/issues/498)) ([aae3d44](https://github.com/NevaMind-AI/memU/commit/aae3d44b0a4332981c4459e7da9258298bcc0fb1))
77
+ * make the workspace pair primary, mark memorize/retrieve as legacy ([#470](https://github.com/NevaMind-AI/memU/issues/470)) ([6f3c1be](https://github.com/NevaMind-AI/memU/commit/6f3c1beb36bba21a7d640b0dbdead9361a90a811))
78
+ * never fall back to legacy memorize/retrieve ([#471](https://github.com/NevaMind-AI/memU/issues/471)) ([28ee09d](https://github.com/NevaMind-AI/memU/commit/28ee09de54de5bd74f4f6bb1e0185c854ecf1053))
79
+ * pitch memU as a 500-line memory system ([#488](https://github.com/NevaMind-AI/memU/issues/488)) ([2a8f8b3](https://github.com/NevaMind-AI/memU/commit/2a8f8b3403548a8d8917a19d5ac0015adf4eab17))
80
+ * point the README at the memu-cli package ([#491](https://github.com/NevaMind-AI/memU/issues/491)) ([9ceea5b](https://github.com/NevaMind-AI/memU/commit/9ceea5b32a2694cf4ab5e5f0069b029ac13800b3))
81
+ * **readme:** readme accuracy updates ([#430](https://github.com/NevaMind-AI/memU/issues/430)) ([5f17725](https://github.com/NevaMind-AI/memU/commit/5f1772579c8d0881ec1c9ab071404aea6b3bfadc))
82
+ * **readme:** reframe intro around MEMORY.md, SKILL.md, and INDEX.md ([#434](https://github.com/NevaMind-AI/memU/issues/434)) ([ca0c755](https://github.com/NevaMind-AI/memU/commit/ca0c755dcc06874c227df811d6b7a3ca972f6be2))
83
+ * **readme:** reframe README around file-system-as-memory narrative ([#432](https://github.com/NevaMind-AI/memU/issues/432)) ([cd8150a](https://github.com/NevaMind-AI/memU/commit/cd8150ac7d68f4972d9a9e8268e3169da9b4cfc3))
84
+ * **readme:** reframe README around workspace-runtime narrative ([#438](https://github.com/NevaMind-AI/memU/issues/438)) ([7c104b1](https://github.com/NevaMind-AI/memU/commit/7c104b1eb0883437d49bea0edae3a24eea12f275))
85
+ * **readme:** sync translated READMEs to file-system-as-memory narrative ([#433](https://github.com/NevaMind-AI/memU/issues/433)) ([f4e82ce](https://github.com/NevaMind-AI/memU/commit/f4e82cec1898e34f82612ec3628f8de1faedf701))
86
+ * refine ADR 0007 with the L0/L1/L2 layer model ([#462](https://github.com/NevaMind-AI/memU/issues/462)) ([6456c35](https://github.com/NevaMind-AI/memU/commit/6456c357b22039a3b12ba2f2bc0294a8693bceb5))
87
+ * Refine OpenClaw reference and feature descriptions ([#410](https://github.com/NevaMind-AI/memU/issues/410)) ([707b80e](https://github.com/NevaMind-AI/memU/commit/707b80e5f4394b8e4aafff1ef23fd331a8b557f8))
88
+ * refine README memory filesystem positioning ([#429](https://github.com/NevaMind-AI/memU/issues/429)) ([dda0374](https://github.com/NevaMind-AI/memU/commit/dda03743b007c0863c7fe7237592f7e4a0de32b6))
89
+ * refine README positioning around personal memory as files ([#455](https://github.com/NevaMind-AI/memU/issues/455)) ([88982d3](https://github.com/NevaMind-AI/memU/commit/88982d3d22640501be09ced1876520e95d956312))
90
+ * reframe README and description around personal-information memory ([#451](https://github.com/NevaMind-AI/memU/issues/451)) ([6b5b11c](https://github.com/NevaMind-AI/memU/commit/6b5b11c0787704c119b8d2e2d3c779bd56ee66fa))
91
+ * refresh memory diagrams ([#473](https://github.com/NevaMind-AI/memU/issues/473)) ([0d8770f](https://github.com/NevaMind-AI/memU/commit/0d8770f0c9d49f3a09e6ac33ca72b34c8128a855))
92
+ * retitle around file-based memory and trim README ([#453](https://github.com/NevaMind-AI/memU/issues/453)) ([2c1cc86](https://github.com/NevaMind-AI/memU/commit/2c1cc86ba66f31ffb7c6afcd0717f7e1880c0fd0))
93
+ * rewrite README — raw data → memory → agent ([#426](https://github.com/NevaMind-AI/memU/issues/426)) ([c2a2aac](https://github.com/NevaMind-AI/memU/commit/c2a2aac52b4424583955f85f5a35776e76beb68a))
94
+ * swap the tagline to lead with Across Agents ([#490](https://github.com/NevaMind-AI/memU/issues/490)) ([6e0fc06](https://github.com/NevaMind-AI/memU/commit/6e0fc068a1e3a2212dfea52f52438b438dae88f3))
95
+ * tagline across sessions/agents/devices, lowercase memU in banner alt ([#515](https://github.com/NevaMind-AI/memU/issues/515)) ([1f4f831](https://github.com/NevaMind-AI/memU/commit/1f4f8315bc0a68a6d2c2fa8018d64e7f22e5b164))
96
+ * tighten the README intro to two sentences ([#487](https://github.com/NevaMind-AI/memU/issues/487)) ([da160f2](https://github.com/NevaMind-AI/memU/commit/da160f2155439923bfe744ac770733c1c9824cd9))
97
+
98
+
99
+ ### Miscellaneous Chores
100
+
101
+ * release 2.0.0-beta.0 ([#541](https://github.com/NevaMind-AI/memU/issues/541)) ([3dc60ce](https://github.com/NevaMind-AI/memU/commit/3dc60cea094e29f86ead2fad148ea0fbeab198c3))
102
+
3
103
  ## [1.5.1](https://github.com/NevaMind-AI/memU/compare/v1.5.0...v1.5.1) (2026-03-23)
4
104
 
5
105
 
@@ -0,0 +1,134 @@
1
+ ---
2
+ name: install-memu-latest
3
+ description: Install the latest development build of memU-cli from git (main HEAD). Use when the user wants the newest unreleased code — clean any old install, install from git, verify, then set up.
4
+ ---
5
+
6
+ # Install the latest (development) memU
7
+
8
+ > **Audience: the agent.** A user pointed you here ("read this and install the
9
+ > latest memU"). Do the install yourself — the user should not run commands by
10
+ > hand. This installs memU-cli from **git `main`**, the latest source.
11
+
12
+ ## Step 1 — remove any existing memU install
13
+
14
+ An older memU already on the machine can stay on `PATH` and **shadow the one you
15
+ are about to install**, so the version that actually runs would not be the
16
+ latest. Remove it first — try each installer, ignore "not installed":
17
+
18
+ ```
19
+ uv tool uninstall memu-cli
20
+ pipx uninstall memu-cli
21
+ pip uninstall -y memu-cli
22
+ ```
23
+
24
+ **Tell the user what you removed** — the name and version, or "no previous
25
+ install found" — so they know their old version is gone before you continue.
26
+
27
+ This removes only the memU **package** (the binaries). The store and
28
+ `~/.memu/config.env` live under `~/.memu/` and are **not** touched, so the
29
+ user's memories and settings carry straight over — Step 4 reuses the existing
30
+ `config.env` instead of asking again. (If this newer build needs a config value
31
+ the old file lacks, Step 4's `doctor` gate names exactly what to add.)
32
+
33
+ ## Step 2 — install from git, persistently
34
+
35
+ The install **must persist on `PATH`**: the scheduled bridging task will call
36
+ these binaries later from a bare, non-interactive shell. So install as a durable
37
+ tool — **never** with an ephemeral runner (`uvx`, `npx`), which vanish after one
38
+ command and leave nothing for the task to find.
39
+
40
+ Requirement: `git` on `PATH`. Then take the first option that fits the machine:
41
+
42
+ - **uv (preferred — isolated, global, on `PATH`):**
43
+ ```
44
+ uv tool install "git+https://github.com/NevaMind-AI/memU"
45
+ ```
46
+ - **no uv, but you can install it:** install uv, then run the command above.
47
+ ```
48
+ curl -LsSf https://astral.sh/uv/install.sh | sh # macOS / Linux
49
+ powershell -c "irm https://astral.sh/uv/install.ps1 | iex" # Windows
50
+ ```
51
+ - **pip fallback (only into a stable, on-`PATH` environment):**
52
+ ```
53
+ pip install "git+https://github.com/NevaMind-AI/memU"
54
+ ```
55
+
56
+ To pin an exact commit instead of the moving `main`, append `@<sha>` to the URL.
57
+
58
+ The installer prints the exact commit it resolved — with uv, a line like
59
+ `Building memu-cli @ git+…@<sha>`. Note that SHA; you confirm it to the user in
60
+ Step 3, before the setup.
61
+
62
+ ## Step 3 — verify, then confirm the version with the user
63
+
64
+ From a **fresh** shell (not the one that ran the installer, whose `PATH` may be
65
+ stale):
66
+
67
+ ```
68
+ memu --help
69
+ memu-<your-host> --help # e.g. memu-claude-code, memu-codex
70
+ ```
71
+
72
+ Both must print usage. If they do not, the install's bin directory is not on
73
+ `PATH` (with uv it is `~/.local/bin`) — fix that before continuing, since the
74
+ scheduled task depends on the same resolution.
75
+
76
+ Then confirm the version with the user — **before the setup below**, since setup
77
+ is the long part and a wrong or stale build is painful to discover afterward. A
78
+ bare SHA is hard to judge, so report what the commit actually **is**:
79
+
80
+ - the SHA (from Step 2),
81
+ - its **subject line and date**, and
82
+ - the link to inspect it: `https://github.com/NevaMind-AI/memU/commit/<sha>`.
83
+
84
+ Fetch the subject and date from the GitHub API — no clone needed:
85
+
86
+ ```
87
+ curl -s https://api.github.com/repos/NevaMind-AI/memU/commits/<sha>
88
+ ```
89
+
90
+ read `.commit.message` (first line) and `.commit.author.date`. Then offer a
91
+ **one-tap choice** — not an open question the user has to answer in a sentence.
92
+ If your host can render selectable options, present exactly these two; otherwise
93
+ accept a plain "yes":
94
+
95
+ - **Use this version** → continue straight into Step 4 and run it to completion
96
+ **yourself**; do not make the user run `docs install` or any setup command.
97
+ Pause again only if you genuinely need them (e.g. an embedding API key).
98
+ - **Pick a different commit** → ask which, reinstall it (Step 2 with `@<sha>`),
99
+ then confirm again here.
100
+
101
+ A bare "yes" / "ok" means **Use this version** — default to proceeding.
102
+
103
+ ## Step 4 — set up memU
104
+
105
+ You now have the latest binaries. Identify **which agent you are** and use its
106
+ binary — memU has seven host adapters:
107
+
108
+ | You are | Your binary |
109
+ | --- | --- |
110
+ | Codex | `memu-codex` |
111
+ | Claude Code | `memu-claude-code` |
112
+ | Cursor | `memu-cursor` |
113
+ | OpenClaw | `memu-openclaw` |
114
+ | Hermes | `memu-hermes` |
115
+ | WorkBuddy | `memu-workbuddy` |
116
+ | anything else | `memu-agent` — run `memu-agent detect` if unsure |
117
+
118
+ Then print your host's packaged guide and follow it to the letter:
119
+
120
+ ```
121
+ memu-<your-host> docs install
122
+ ```
123
+
124
+ It walks you through selecting the local or cloud backend in `~/.memu/config.env`, registering
125
+ the scheduled bridging task, and patching your instruction file, each behind a
126
+ verify gate.
127
+
128
+ Because the existing `config.env` is reused, also **check it against the settings
129
+ this build documents** (the guide lists them): if this version recognizes any
130
+ `MEMU_*` option the user's file does not set, tell the user its name and what it
131
+ does — that is configuration this newer build introduces. Optional ones keep
132
+ working on their defaults; a required one is caught by the `doctor` gate.
133
+
134
+ When done, report which seams (memorization / retrieval) are now active.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: memu-cli
3
- Version: 0.3.0
3
+ Version: 0.5.0
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: Operating System :: OS Independent
@@ -26,15 +26,15 @@ Project-URL: Bug Tracker, https://github.com/NevaMind-AI/MemU/issues
26
26
  Project-URL: Documentation, https://github.com/NevaMind-AI/MemU#readme
27
27
  Project-URL: Homepage, https://github.com/NevaMind-AI/MemU
28
28
 
29
- ![MemU Banner](assets/banner.png)
29
+ ![memU Banner](assets/banner.png)
30
30
 
31
31
  <div align="center">
32
32
 
33
33
  # memU
34
34
 
35
- ### Personal memory, stored as files
35
+ ### Personal memory, stored as Wiki
36
36
 
37
- **Across Agents. Fast retrieval. Lower cost.**
37
+ **Across Sessions. Across Agents. Across Devices.**
38
38
 
39
39
  [![PyPI version](https://badge.fury.io/py/memu-cli.svg)](https://badge.fury.io/py/memu-cli)
40
40
  [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
@@ -48,86 +48,44 @@ Project-URL: Homepage, https://github.com/NevaMind-AI/MemU
48
48
 
49
49
  ---
50
50
 
51
- memU is a 500-line memory system for AI agents. Agents write what's worth keeping as Markdown; memU stores it, embeds it, and retrieves ranked context in a single call embeddings are the only model calls it makes. The entire memory logic lives in [`agentic.py`](src/memu/app/agentic.py) + [`service.py`](src/memu/app/service.py); everything else is pluggable storage and embedding transport.
52
-
53
- **Installation is agent-driven.** The guides are written for the agent, not for you. One message is the whole setup — tell your agent:
54
-
55
- > Read https://raw.githubusercontent.com/NevaMind-AI/MemU/main/SKILL.md and follow it to install memU.
56
-
57
- It works for Codex, Claude Code, Cursor, OpenClaw, Hermes — and any other agent, via detection. Details in [Host adapters](#host-adapters-memory-for-desktop-coding-agents).
51
+ memU is a lightweight, agent-driven memory system that gives users a shared LLM wiki across sessions, agents, and devices. It automatically distills your own reusable skills from your agent history. Its core memory logic is only 500 lines compact enough to inspect, understand, and adapt.
58
52
 
59
53
  ## Quick start
60
54
 
61
- ```python
62
- from memu.app import MemoryService
63
-
64
- service = MemoryService(
65
- database_config={"metadata_store": {"provider": "sqlite", "dsn": "sqlite:///memu.sqlite3"}},
66
- )
55
+ memU works with Codex, Claude Code, Cursor, OpenClaw, Hermes, WorkBuddy, and more. See [Host adapters](#host-adapters-memory-for-desktop-coding-agents).
67
56
 
68
- # 1. Persist agent-prepared memory: recall files (memory/skill tracks) + resources
69
- await service.commit_results(
70
- recall_files=[
71
- {
72
- "name": "Profile",
73
- "track": "memory",
74
- "description": "who the user is",
75
- "content": "# Profile\n- prefers dark roast coffee\n- ships on Fridays",
76
- },
77
- {
78
- "name": "deploy-checklist",
79
- "track": "skill",
80
- "description": "how to deploy this repo",
81
- "content": "1. run tests\n2. tag\n3. push",
82
- },
83
- ],
84
- resource=[{"path": "/abs/path/notes.md", "description": "meeting notes from the launch review"}],
85
- )
57
+ Choose Cloud or Local, then send the corresponding message to your agent.
86
58
 
87
- # 2. See what is stored, across every track
88
- files = await service.list_all_recall_files()
59
+ ### Cloud (coming soon)
89
60
 
90
- # 3. Single-shot embedding retrieval over segments / files / resources
91
- context = await service.progressive_retrieve("What should I know about this user's launch preferences?")
92
- ```
61
+ **Cross-device · Free · Unlimited · [View online](https://memu.so)**
93
62
 
94
- Or straight from the terminal no code:
63
+ > Read [https://memu.pro/SKILL.md](https://memu.pro/SKILL.md) and follow it to install memU.
95
64
 
96
- ```bash
97
- export OPENAI_API_KEY=sk-... # embedding API key — the only model calls memU makes
65
+ ### Local / self-hosted
98
66
 
99
- npx memu-cli commit results.json # {"recall_files": [...], "resource": [...]}
100
- npx memu-cli list-files
101
- npx memu-cli retrieve "What should I know about this user's launch preferences?"
102
- ```
67
+ **Private · Single-device · Embedding key required**
103
68
 
104
- State persists in a local SQLite database (`./data/memu.sqlite3` by default), so commit in one invocation and retrieve in the next.
69
+ > Read [https://raw.githubusercontent.com/NevaMind-AI/MemU/main/SKILL.md](https://raw.githubusercontent.com/NevaMind-AI/MemU/main/SKILL.md) and follow it to install memU.
105
70
 
106
71
  ## How it works
107
72
 
108
73
  ![memU memory system architecture](assets/structure-v2.png)
109
74
 
110
- ### The data model
111
-
112
- Memory is a set of **recall files** — one Markdown document per topic (`track="memory"`) or per learned skill (`track="skill"`). Committing a file also writes its search index:
113
-
114
- | Record | What it is | How it's embedded |
115
- |---|---|---|
116
- | **RecallFile** | The Markdown document itself (`name`, `track`, `description`, `content`) | `name: description`, once at creation |
117
- | **RecallFileSegment** | Searchable slices of a file | memory track: one per content line (headings skipped); skill track: one `name: description` segment per skill |
118
- | **Resource** | A raw source on disk (`url`, `caption`) | its one-line caption |
119
-
120
- Segments are reconciled on every commit: lines that disappeared are deleted, only genuinely new lines are embedded, unchanged lines keep their vectors — so re-committing a lightly edited file is nearly free.
75
+ ## Automatic skill extraction
121
76
 
122
- ### Retrieval
77
+ Once the scheduled bridging task is installed, memU can turn useful agent history into reusable Markdown skills automatically.
123
78
 
124
- `progressive_retrieve(query)` embeds the query **once** and returns three ranked layers:
79
+ ![How memU turns agent history into reusable skills](assets/skill-extraction.png)
125
80
 
126
- - `segments` the matched slices, narrowest and usually most on-point, each with a `score`
127
- - `files` the documents those segments belong to (usually what you want), each scored by its best segment and carrying its linked `resource_urls`
128
- - `resources` matching raw sources, for when summaries are not enough
81
+ 1. **Capture new sessions.** The host adapter reads new session history, including messages and tool calls.
82
+ 2. **Prepare self-evolve jobs.** `prepare` slices each session into a self-contained job with the paths and context the agent needs.
83
+ 3. **Let the agent decide.** The agent reads related existing skills, then chooses to do nothing, patch an existing skill, or create a new one.
84
+ 4. **Write readable skill Markdown.** Each skill has a name, description, and reusable workflow, including useful branches, edge cases, and pitfalls.
85
+ 5. **Commit and index.** `commit` submits changed skill files through `commit_results`; memU embeds the skill name and description and stores it under the `skill` track.
86
+ 6. **Retrieve it later.** On a similar future task, memU returns the relevant skill so any connected agent can use the learned workflow.
129
87
 
130
- There is no intention routing, sufficiency checking, or summarization one embedding call in, ranked context out.
88
+ The judgment and synthesis stay inside the agent. `MemoryService` makes no LLM or chat calls; it stores, embeds, and retrieves the skill Markdown the agent prepared.
131
89
 
132
90
  ## Host adapters: memory for desktop coding agents
133
91
 
@@ -143,19 +101,33 @@ memU runs as a sidecar to a desktop agent (ADR 0008/0009/0010), one binary per h
143
101
  | Cursor (Agent/CLI) | `memu-cursor` | `~/.cursor/projects/<project>/agent-transcripts/**.jsonl` | `./AGENTS.md` (per project) |
144
102
  | OpenClaw | `memu-openclaw` | `~/.openclaw/agents/<agentId>/sessions/*.jsonl` | `~/.openclaw/workspace/AGENTS.md` |
145
103
  | Hermes Agent | `memu-hermes` | `~/.hermes/state.db` (SQLite, read-only) | `~/.hermes/SOUL.md` |
104
+ | WorkBuddy | `memu-workbuddy` | `~/.workbuddy/projects/<project>/<session>.jsonl` | `~/.workbuddy/MEMORY.md` |
146
105
  | **any other agent** | `memu-agent` | found by `memu-agent detect` (JSONL dialect sniffed) | found by `detect` (AGENTS.md / CLAUDE.md / SOUL.md / …) |
147
106
 
148
107
  For agents without a dedicated binary, `memu-agent detect` probes the machine and reports per agent whether **memorization** works (a recognizable session log exists) and whether **retrieval** works (an instruction file exists to patch) — then the same verbs run against what it found.
149
108
 
150
- All hosts share one store and one embedding space via `~/.memu/config.env` — what one host's sessions taught memU, another host retrieves.
109
+ All hosts share one configured memory backend via `~/.memu/config.env` — local
110
+ or MemU Cloud. What one host's sessions taught memU, another host retrieves.
151
111
 
152
- Installation is the one-message setup at the top of this README. [SKILL.md](SKILL.md) is the routing skill it hands your agent: install the package, identify which host you are (falling back to `memu-agent detect` for anything without a dedicated adapter), print that host's packaged install guide (`<binary> docs install`), and follow it — configure the store, register the scheduled bridging task, patch the instruction file, each step behind a verify gate — then report which seams (memorization / retrieval) are now active.
112
+ Installation is the one-message setup at the top of this README. [SKILL.md](SKILL.md) is the routing skill it hands your agent: install the package, identify which host you are (falling back to `memu-agent detect` for anything without a dedicated adapter), print that host's packaged install guide (`<binary> docs install`), and follow it — configure the memory backend, register the scheduled bridging task, patch the instruction file, each step behind a verify gate — then report which seams (memorization / retrieval) are now active.
153
113
 
154
- Afterwards `<binary> doctor` proves the whole loop resolves: config, store, and a live retrieval.
114
+ Afterwards `<binary> doctor` proves the whole loop resolves: config, selected
115
+ mode, and a live retrieval.
155
116
 
156
- Adding another host means implementing one `TranscriptSource` (where its session logs live, how its records are shaped) plus a `HostSpec`-sized CLI — the pipeline, verbs, and instruction text are shared (ADR 0010).
117
+ Adding another host means implementing one `TranscriptSource` (where its session logs live, how its records are shaped) plus a `HostSpec`-sized CLI — the pipeline, verbs, and instruction text are shared.
118
+
119
+ ## CLI
120
+
121
+ With memU Cloud, sign in at [memu.so](https://memu.so) to view your memory files. With a local installation, memory lives in the shared store configured by `MEMU_DB` in `~/.memu/config.env` — typically `~/.memu/memu.sqlite3` for local SQLite, or a Postgres DSN.
122
+
123
+ Once installed, your agent retrieves relevant memory automatically before answering. To retrieve manually, run the adapter for your host:
124
+
125
+ ```bash
126
+ memu-codex retrieve "What should I remember about this project?"
127
+ # or: memu-claude-code / memu-cursor / memu-openclaw / memu-hermes / memu-workbuddy / memu-agent
128
+ ```
157
129
 
158
- ## Installation
130
+ Install or invoke the CLI directly:
159
131
 
160
132
  ```bash
161
133
  pip install memu-cli # library + memu + memu-codex CLIs
@@ -165,7 +137,11 @@ uvx --from memu-cli memu # CLI via uv, no install
165
137
 
166
138
  ## Configuration
167
139
 
168
- Values resolve in order: process env → `~/.memu/config.env` → default. Every CLI flag has a matching variable:
140
+ Values resolve in order: process env → `~/.memu/config.env` → default. memU
141
+ supports Local and Cloud memory backends, selected by `MEMU_MEMORY_MODE`; an
142
+ unset mode remains Local for backward compatibility.
143
+
144
+ For Local / self-hosted installations, every CLI flag has a matching variable:
169
145
 
170
146
  | Setting | Env var | Default |
171
147
  |---|---|---|
@@ -175,6 +151,9 @@ Values resolve in order: process env → `~/.memu/config.env` → default. Every
175
151
  | Embedding model | `MEMU_EMBED_MODEL` | the provider's default |
176
152
  | Base URL | `MEMU_BASE_URL` | the provider's default |
177
153
 
154
+ Run `<binary> doctor` to display the resolved mode and verify the same retrieval
155
+ path the host uses.
156
+
178
157
  ### Storage backends
179
158
 
180
159
  | Provider | DSN | Vector search | Use for |
@@ -189,38 +168,6 @@ service = MemoryService(
189
168
  embedding_profiles={"default": {"provider": "jina"}},
190
169
  )
191
170
  ```
192
-
193
- ### Multi-tenancy
194
-
195
- Every record carries optional scope fields (`user_id`, `agent_id` by default). Pass `user=` on writes and `where=` on reads to partition one store:
196
-
197
- ```python
198
- await service.commit_results(recall_files=[...], user={"user_id": "alice"})
199
- await service.progressive_retrieve("launch preferences", where={"user_id": "alice"})
200
- ```
201
-
202
- Need different scope fields? Supply your own model — filters are validated against it, unknown fields raise:
203
-
204
- ```python
205
- from pydantic import BaseModel
206
-
207
- class TeamScope(BaseModel):
208
- team_id: str | None = None
209
- user_id: str | None = None
210
-
211
- service = MemoryService(user_config={"model": TeamScope})
212
- ```
213
-
214
- ## Development
215
-
216
- ```bash
217
- make install # uv sync + pre-commit hooks
218
- make test # pytest with coverage
219
- make check # lock check, pre-commit, mypy, deptry
220
- ```
221
-
222
- Architecture decisions live in [`docs/adr/`](docs/adr/) — notably tracked workspace memorization (ADR 0006), the segment/file/resource retrieval lines (ADR 0007), and the host-adapter seams (ADR 0008/0009).
223
-
224
171
  ## License
225
172
 
226
173
  Apache-2.0