mnemo-dev 0.5.0__tar.gz → 0.5.2__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 (136) hide show
  1. mnemo_dev-0.5.2/PKG-INFO +663 -0
  2. mnemo_dev-0.5.2/README.md +611 -0
  3. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/__init__.py +1 -1
  4. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/tools/engine.py +1 -1
  5. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/types.py +7 -1
  6. mnemo_dev-0.5.2/mnemo/ui_static/index.html +207 -0
  7. mnemo_dev-0.5.2/mnemo_dev.egg-info/PKG-INFO +663 -0
  8. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo_dev.egg-info/SOURCES.txt +1 -0
  9. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo_dev.egg-info/requires.txt +4 -0
  10. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/pyproject.toml +7 -1
  11. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_engine_pipeline.py +1 -1
  12. mnemo_dev-0.5.0/PKG-INFO +0 -281
  13. mnemo_dev-0.5.0/README.md +0 -231
  14. mnemo_dev-0.5.0/mnemo_dev.egg-info/PKG-INFO +0 -281
  15. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/LICENSE +0 -0
  16. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/analyzers/__init__.py +0 -0
  17. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/api_discovery/__init__.py +0 -0
  18. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/breaking/__init__.py +0 -0
  19. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/chunking.py +0 -0
  20. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/cli.py +0 -0
  21. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/clients.py +0 -0
  22. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/code_review/__init__.py +0 -0
  23. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/commit_gen/__init__.py +0 -0
  24. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/commit_gen/mining.py +0 -0
  25. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/config.py +0 -0
  26. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/conventions/__init__.py +0 -0
  27. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/corrections/__init__.py +0 -0
  28. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/dead_code/__init__.py +0 -0
  29. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/doctor.py +0 -0
  30. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/drift/__init__.py +0 -0
  31. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/embeddings/__init__.py +0 -0
  32. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/embeddings/dense.py +0 -0
  33. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/engine/__init__.py +0 -0
  34. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/engine/cache.py +0 -0
  35. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/engine/clustering.py +0 -0
  36. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/engine/db.py +0 -0
  37. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/engine/freshness.py +0 -0
  38. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/engine/memory_graph.py +0 -0
  39. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/engine/pipeline.py +0 -0
  40. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/engine/schema.py +0 -0
  41. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/engine/scope.py +0 -0
  42. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/engine/workers.py +0 -0
  43. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/enrichment.py +0 -0
  44. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/errors/__init__.py +0 -0
  45. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/health/__init__.py +0 -0
  46. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/hooks/__init__.py +0 -0
  47. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/hooks/extractor.py +0 -0
  48. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/incidents/__init__.py +0 -0
  49. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/init.py +0 -0
  50. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/knowledge/__init__.py +0 -0
  51. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/mcp_server.py +0 -0
  52. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/memory/__init__.py +0 -0
  53. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/memory/_shared.py +0 -0
  54. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/memory/episodes.py +0 -0
  55. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/memory/hierarchy.py +0 -0
  56. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/memory/indexing.py +0 -0
  57. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/memory/lessons.py +0 -0
  58. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/memory/linking.py +0 -0
  59. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/memory/retention.py +0 -0
  60. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/memory/search.py +0 -0
  61. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/memory/services.py +0 -0
  62. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/memory/slots.py +0 -0
  63. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/memory/store.py +0 -0
  64. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/memory/temporal.py +0 -0
  65. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/onboarding/__init__.py +0 -0
  66. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/persistence/__init__.py +0 -0
  67. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/persistence/export.py +0 -0
  68. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/persistence/snapshot.py +0 -0
  69. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/plan/__init__.py +0 -0
  70. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/pr_gen/__init__.py +0 -0
  71. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/prompts/__init__.py +0 -0
  72. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/regressions/__init__.py +0 -0
  73. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/repo_map/__init__.py +0 -0
  74. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/repo_map/identity.py +0 -0
  75. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/repo_map/parsers.py +0 -0
  76. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/repo_map/scanner.py +0 -0
  77. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/retrieval.py +0 -0
  78. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/security/__init__.py +0 -0
  79. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/serve.py +0 -0
  80. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/sprint/__init__.py +0 -0
  81. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/storage.py +0 -0
  82. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/team_graph/__init__.py +0 -0
  83. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/test_intel/__init__.py +0 -0
  84. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/tool_registry.py +0 -0
  85. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/tools/__init__.py +0 -0
  86. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/tools/code.py +0 -0
  87. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/tools/git.py +0 -0
  88. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/tools/graph.py +0 -0
  89. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/tools/memory.py +0 -0
  90. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/tools/meta.py +0 -0
  91. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/tools/observe.py +0 -0
  92. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/tools/plan.py +0 -0
  93. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/tools/safety.py +0 -0
  94. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/tools/search.py +0 -0
  95. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/tools/team.py +0 -0
  96. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/utils/__init__.py +0 -0
  97. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/utils/audit.py +0 -0
  98. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/utils/circuit_breaker.py +0 -0
  99. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/utils/dedup.py +0 -0
  100. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/utils/logger.py +0 -0
  101. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/utils/metrics.py +0 -0
  102. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/utils/observations.py +0 -0
  103. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/utils/privacy.py +0 -0
  104. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/utils/stemmer.py +0 -0
  105. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/utils/synonyms.py +0 -0
  106. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/velocity/__init__.py +0 -0
  107. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo/workspace/__init__.py +0 -0
  108. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo_dev.egg-info/dependency_links.txt +0 -0
  109. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo_dev.egg-info/entry_points.txt +0 -0
  110. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/mnemo_dev.egg-info/top_level.txt +0 -0
  111. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/setup.cfg +0 -0
  112. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_audit.py +0 -0
  113. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_circuit_breaker.py +0 -0
  114. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_clients.py +0 -0
  115. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_code_quality_tools.py +0 -0
  116. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_engine_db.py +0 -0
  117. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_enrichment.py +0 -0
  118. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_export.py +0 -0
  119. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_full_cycle.py +0 -0
  120. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_init.py +0 -0
  121. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_mcp_integration.py +0 -0
  122. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_memory.py +0 -0
  123. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_memory_lifecycle.py +0 -0
  124. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_metrics.py +0 -0
  125. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_plan_features.py +0 -0
  126. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_privacy.py +0 -0
  127. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_search_quality.py +0 -0
  128. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_secondary_collections.py +0 -0
  129. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_self_maintenance.py +0 -0
  130. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_serve.py +0 -0
  131. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_slots.py +0 -0
  132. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_snapshot.py +0 -0
  133. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_stemmer.py +0 -0
  134. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_storage.py +0 -0
  135. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_synonyms.py +0 -0
  136. {mnemo_dev-0.5.0 → mnemo_dev-0.5.2}/tests/test_tool_routing.py +0 -0
@@ -0,0 +1,663 @@
1
+ Metadata-Version: 2.4
2
+ Name: mnemo-dev
3
+ Version: 0.5.2
4
+ Summary: Persistent memory and repo map for AI coding assistants
5
+ Author: Mnemo Contributors
6
+ License: AGPL-3.0
7
+ Project-URL: Homepage, https://github.com/Mnemo-mcp/Mnemo
8
+ Project-URL: Repository, https://github.com/Mnemo-mcp/Mnemo
9
+ Project-URL: Issues, https://github.com/Mnemo-mcp/Mnemo/issues
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3 :: Only
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: License :: OSI Approved :: GNU Affero General Public License v3
16
+ Classifier: Operating System :: OS Independent
17
+ Requires-Python: >=3.10
18
+ Description-Content-Type: text/markdown
19
+ License-File: LICENSE
20
+ Requires-Dist: click>=8.1
21
+ Requires-Dist: tree-sitter>=0.21
22
+ Requires-Dist: tree-sitter-python>=0.21
23
+ Requires-Dist: tree-sitter-javascript>=0.21
24
+ Requires-Dist: tree-sitter-typescript>=0.21
25
+ Requires-Dist: tree-sitter-c-sharp>=0.21
26
+ Requires-Dist: tree-sitter-go>=0.21
27
+ Requires-Dist: tree-sitter-java>=0.21
28
+ Requires-Dist: tree-sitter-rust>=0.21
29
+ Requires-Dist: gitpython>=3.1
30
+ Requires-Dist: pyyaml>=6.0
31
+ Requires-Dist: networkx>=3.0
32
+ Requires-Dist: onnxruntime>=1.17
33
+ Requires-Dist: tokenizers>=0.15
34
+ Requires-Dist: numpy>=1.24
35
+ Requires-Dist: real_ladybug>=0.15
36
+ Requires-Dist: typing_extensions>=4.0; python_version < "3.11"
37
+ Provides-Extra: dev
38
+ Requires-Dist: build>=1.2; extra == "dev"
39
+ Requires-Dist: pytest>=8.0; extra == "dev"
40
+ Requires-Dist: ruff>=0.5; extra == "dev"
41
+ Provides-Extra: binary
42
+ Requires-Dist: pyinstaller>=6.0; extra == "binary"
43
+ Provides-Extra: all-languages
44
+ Requires-Dist: tree-sitter-ruby>=0.21; extra == "all-languages"
45
+ Requires-Dist: tree-sitter-php>=0.22; extra == "all-languages"
46
+ Requires-Dist: tree-sitter-c>=0.21; extra == "all-languages"
47
+ Requires-Dist: tree-sitter-cpp>=0.21; extra == "all-languages"
48
+ Requires-Dist: tree-sitter-kotlin>=0.21; extra == "all-languages"
49
+ Requires-Dist: tree-sitter-swift>=0.21; extra == "all-languages"
50
+ Requires-Dist: tree-sitter-scala>=0.21; extra == "all-languages"
51
+ Dynamic: license-file
52
+
53
+ <h1 align="center">Mnemo</h1>
54
+
55
+ <p align="center">
56
+ <strong>Persistent engineering cognition for AI coding agents.</strong>
57
+ </p>
58
+
59
+ <p align="center">
60
+ <a href="https://pypi.org/project/mnemo-dev/"><img src="https://img.shields.io/pypi/v/mnemo-dev?style=flat-square&color=blue" alt="PyPI" /></a>
61
+ <a href="https://www.npmjs.com/package/@mnemo-dev/mcp"><img src="https://img.shields.io/npm/v/@mnemo-dev/mcp?style=flat-square&color=red" alt="npm" /></a>
62
+ <a href="#"><img src="https://img.shields.io/badge/tests-222%20passing-brightgreen?style=flat-square" alt="Tests" /></a>
63
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-AGPL--3.0-purple?style=flat-square" alt="License" /></a>
64
+ <a href="https://pypi.org/project/mnemo-dev/"><img src="https://img.shields.io/pypi/pyversions/mnemo-dev?style=flat-square" alt="Python" /></a>
65
+ <a href="https://marketplace.visualstudio.com/items?itemName=Nikhil1057.mnemo-vscode"><img src="https://img.shields.io/badge/VS%20Code-extension-007ACC?style=flat-square&logo=visualstudiocode" alt="VS Code" /></a>
66
+ </p>
67
+
68
+ <p align="center">
69
+ <code>[100% R@5]</code> <code>[2ms search]</code> <code>[58 tools]</code> <code>[16 agent-facing]</code> <code>[11 lifecycle hooks]</code> <code>[0 external DBs]</code> <code>[222 tests]</code>
70
+ </p>
71
+
72
+ <p align="center">
73
+ <a href="#install">Install</a> • <a href="#why-mnemo">Why</a> • <a href="#benchmarks">Benchmarks</a> • <a href="#how-it-works">How It Works</a> • <a href="#supported-clients">Clients</a> • <a href="#features">Features</a> • <a href="#mcp-tools-16-agent-facing">Tools</a> • <a href="#dashboard-ui">Dashboard</a> • <a href="#architecture">Architecture</a>
74
+ </p>
75
+
76
+ ---
77
+
78
+ You explain the same architecture every session. You re-discover the same bugs. You re-teach the same conventions. The agent has no memory of what worked, what broke, or what you decided yesterday.
79
+
80
+ **Mnemo fixes this.**
81
+
82
+ It silently captures decisions as they happen, builds a knowledge graph of your entire codebase, indexes everything for semantic search, and injects the right context when the next session starts. Memories decay naturally — fresh decisions stay hot, stale context fades, contradictions get superseded.
83
+
84
+ **What changes:**
85
+
86
+ Session 1: you set up a new microservice with a database layer, configure retry policies, wire up dependency injection.
87
+ Session 2: you ask the agent to add a new endpoint. It already knows your service uses a resilience pipeline, auth goes through a delegating handler, your DTOs follow the `*Request/*Response` pattern, and the orchestration uses durable workflows. No re-explaining. No grepping. The agent just *knows*.
88
+
89
+ ```bash
90
+ pip install mnemo-dev # or: brew tap Mnemo-mcp/tap && brew install mnemo
91
+ cd your-project
92
+ mnemo init # defaults to Amazon Q (or: --client kiro, cursor, claude-code)
93
+ ```
94
+
95
+ ---
96
+
97
+ ## Install
98
+
99
+ <table>
100
+ <tr><td><b>pip (recommended)</b></td><td>
101
+
102
+ ```bash
103
+ pip install mnemo-dev
104
+ ```
105
+ </td></tr>
106
+ <tr><td><b>Homebrew (macOS/Linux)</b></td><td>
107
+
108
+ ```bash
109
+ brew tap Mnemo-mcp/tap && brew install mnemo
110
+ ```
111
+ </td></tr>
112
+ <tr><td><b>npx (Node.js)</b></td><td>
113
+
114
+ ```bash
115
+ npx @mnemo-dev/mcp
116
+ ```
117
+ </td></tr>
118
+ <tr><td><b>VS Code Extension</b></td><td>
119
+
120
+ Search "Mnemo" in Extensions, or:
121
+ ```bash
122
+ code --install-extension Nikhil1057.mnemo-vscode
123
+ ```
124
+ </td></tr>
125
+ <tr><td><b>Standalone binary</b></td><td>
126
+
127
+ ```bash
128
+ curl -fsSL https://github.com/Mnemo-mcp/Mnemo/releases/latest/download/mnemo-$(uname -s | tr A-Z a-z)-$(uname -m) -o mnemo
129
+ chmod +x mnemo && sudo mv mnemo /usr/local/bin/
130
+ ```
131
+ </td></tr>
132
+ <tr><td><b>From source</b></td><td>
133
+
134
+ ```bash
135
+ git clone https://github.com/Mnemo-mcp/Mnemo.git && cd Mnemo && pip install -e .
136
+ ```
137
+ </td></tr>
138
+ </table>
139
+
140
+ Then initialize:
141
+
142
+ ```bash
143
+ cd your-project
144
+ mnemo init # defaults to Amazon Q
145
+ mnemo init --client kiro # or: cursor, claude-code, copilot, generic
146
+ ```
147
+
148
+ **That's it.** Your agent now has persistent memory, semantic search, and architectural understanding.
149
+
150
+ ```bash
151
+ mnemo recall # Preview what the agent will see
152
+ mnemo serve # Dashboard at localhost:3333
153
+ mnemo doctor # Diagnose issues
154
+ ```
155
+
156
+ ---
157
+
158
+ ## What It Looks Like Day-to-Day
159
+
160
+ You don't interact with Mnemo directly. You just talk to your AI agent as usual — Mnemo works in the background.
161
+
162
+ **Day 1 — Setting up a project:**
163
+ ```
164
+ You: "Set up a new payment service with retry policies and circuit breaker"
165
+ Agent: [builds the service, configures resilience]
166
+ [Mnemo auto-captures: architecture decision, file structure, patterns used]
167
+ ```
168
+
169
+ **Day 2 — Continuing work:**
170
+ ```
171
+ You: "Add a new endpoint for refund processing"
172
+ Agent: [Already knows: your service uses resilience pipelines,
173
+ auth goes through a delegating handler, DTOs follow *Request/*Response pattern]
174
+ "I see your existing service uses X pattern. I'll follow the same
175
+ structure for the refund endpoint..."
176
+ ```
177
+
178
+ **Day 5 — Debugging:**
179
+ ```
180
+ You: "The batch job is failing intermittently"
181
+ Agent: [Searches memory → finds you hit a similar issue last week with timeout config]
182
+ "Based on a similar issue you fixed on Monday — the timeout was set too low
183
+ for large batches. Let me check if the same config applies here..."
184
+ ```
185
+
186
+ **Day 10 — New team member's agent:**
187
+ ```
188
+ You: "How does our auth flow work?"
189
+ Agent: [mnemo_lookup on the auth service → full architecture in one call]
190
+ "Your auth uses a delegating handler pattern with token caching.
191
+ Here are the key classes and their methods..."
192
+ [No file reading needed — graph has everything]
193
+ ```
194
+
195
+ **Day 30 — Cross-service impact:**
196
+ ```
197
+ You: "I need to change the response format of the eligibility API"
198
+ Agent: [mnemo_cross_impact → finds 3 other services consuming this API]
199
+ "⚠️ Changing this will affect: ServiceA (mock consumer),
200
+ ServiceB (integration tests), and the UI (display logic).
201
+ Want me to show the specific callers?"
202
+ ```
203
+
204
+ The agent never asks you to re-explain. Old stale context fades naturally. Critical decisions persist forever.
205
+
206
+ ---
207
+
208
+ ## Supported Clients
209
+
210
+ | Client | MCP | Hooks | Config |
211
+ |--------|:---:|:-----:|--------|
212
+ | **Kiro** | ✅ | 5 lifecycle hooks | Agent + skill + rules |
213
+ | **Amazon Q** | ✅ | — | .amazonq/rules |
214
+ | **Claude Code** | ✅ | 6 hooks (settings.json) | CLAUDE.md |
215
+ | **Cursor** | ✅ | — | .cursorrules |
216
+ | **Copilot** | ✅ | — | .github/copilot-instructions |
217
+ | **Windsurf** | ✅ | — | .windsurfrules |
218
+ | **Generic MCP** | ✅ | — | MNEMO.md |
219
+
220
+ Works with **any** agent that speaks MCP. One server, one memory, shared across all clients.
221
+
222
+ ---
223
+
224
+ ## Why Mnemo
225
+
226
+ | Without Mnemo | With Mnemo |
227
+ |:---|:---|
228
+ | Re-explain your stack every session | Agent already knows your architecture |
229
+ | Agent breaks call chains it can't see | Full dependency graph with impact analysis |
230
+ | "What caching do we use?" → agent greps 50 files | Semantic search finds the answer in **2ms** |
231
+ | Decisions lost between sessions | Permanent decisions survive forever |
232
+ | Context window wasted on repetition | ~500 tokens of targeted recall per session |
233
+ | "What broke last time?" → no idea | Error patterns, incidents, and regression warnings |
234
+ | Agent doesn't know cross-service deps | Multi-repo linking with cross-impact analysis |
235
+ | Memory file grows forever, goes stale | Natural decay: hot → warm → cold → evicted |
236
+
237
+ ---
238
+
239
+ ## Benchmarks
240
+
241
+ | Metric | Mnemo | Static rules (CLAUDE.md) | No memory |
242
+ |--------|-------|-------------------------|-----------|
243
+ | **Search Recall@5** | **100%** | N/A (grep) | 0% |
244
+ | **Search latency** | **2ms** | — | — |
245
+ | **Token cost/session** | **~500** | 22,000+ (full file) | 0 |
246
+ | **Cross-session persistence** | ✅ | Manual only | ❌ |
247
+ | **Contradiction handling** | ✅ auto-supersede | ❌ | ❌ |
248
+ | **Memory decay** | ✅ natural eviction | ❌ grows forever | — |
249
+ | **Code understanding** | Knowledge graph | None | None |
250
+ | **Cross-repo awareness** | ✅ | ❌ | ❌ |
251
+
252
+ ### System Resources
253
+
254
+ | Resource | Value |
255
+ |----------|-------|
256
+ | RAM (with model loaded) | 265 MB |
257
+ | Disk (.mnemo/) | ~16 MB |
258
+ | ONNX model (one-time download) | 86 MB |
259
+ | External databases | **0** |
260
+ | Cloud dependencies | **0** |
261
+ | API keys required | **0** |
262
+
263
+ > Search uses ONNX all-MiniLM-L6-v2 dense embeddings + BM25 keyword + Dijkstra graph traversal, fused with Reciprocal Rank Fusion (RRF).
264
+
265
+ ---
266
+
267
+ ## How It Works
268
+
269
+ ```
270
+ ┌─── INIT (one-time, ~7s for 300 files) ──────────────────────────┐
271
+ │ │
272
+ │ 1. Scan: single os.walk pass across repo │
273
+ │ 2. Parse: tree-sitter AST (14 langs) + Roslyn (C#) │
274
+ │ 3. Graph: LadybugDB — files, classes, methods, CALLS edges │
275
+ │ 4. Scope: cross-file function call resolution │
276
+ │ 5. Cluster: Leiden community detection │
277
+ │ 6. Index: ONNX vector embeddings for semantic search │
278
+ │ 7. Detect: languages, services, key classes, frameworks │
279
+ │ 8. Configure: MCP server + hooks for your AI client │
280
+ │ │
281
+ └──────────────────────────────────────────────────────────────────┘
282
+
283
+
284
+ ┌─── SESSION START (automatic via hooks) ─────────────────────────┐
285
+ │ │
286
+ │ mnemo_recall injects into agent context: │
287
+ │ • Architectural decisions (permanent, never evicted) │
288
+ │ • Hot memories (scored by access × recency × importance) │
289
+ │ • Active plan + next task │
290
+ │ • Compact repo index (classes per service) │
291
+ │ • Project metadata (languages, frameworks, services) │
292
+ │ │
293
+ │ Total: ~500 tokens. Agent starts fully informed. │
294
+ │ │
295
+ └──────────────────────────────────────────────────────────────────┘
296
+
297
+
298
+ ┌─── DURING SESSION (tools + freshness) ──────────────────────────┐
299
+ │ │
300
+ │ Agent has 16 MCP tools available: │
301
+ │ • mnemo_lookup → full service/class architecture │
302
+ │ • mnemo_search → semantic search (code, memory, APIs) │
303
+ │ • mnemo_impact → blast radius if X changes │
304
+ │ • mnemo_remember → store decisions, patterns, bugs │
305
+ │ • mnemo_plan → track task progress │
306
+ │ │
307
+ │ Background: graph + vector index refresh every 30s │
308
+ │ User prompt hook: searches relevant memories, injects them │
309
+ │ │
310
+ └──────────────────────────────────────────────────────────────────┘
311
+
312
+
313
+ ┌─── SESSION END (auto-capture via stop hook) ────────────────────┐
314
+ │ │
315
+ │ • Detects learnings (bug fixes, discoveries) │
316
+ │ • Records session decisions │
317
+ │ • Stores accomplishments │
318
+ │ │
319
+ └──────────────────────────────────────────────────────────────────┘
320
+
321
+
322
+ ┌─── BETWEEN SESSIONS (decay + maintenance) ──────────────────────┐
323
+ │ │
324
+ │ Every 10th recall: │
325
+ │ • Retention scored: salience × exp(-0.01 × days) + access │
326
+ │ • Hot (≥0.5) → Warm (≥0.25) → Cold → Evicted │
327
+ │ • Contradictions auto-superseded (sim > 0.9) │
328
+ │ • Low-value pruning (cap: 200 active memories) │
329
+ │ • Graph synced (stale memory nodes removed) │
330
+ │ │
331
+ │ Pinned forever: architecture, decision, preference │
332
+ │ │
333
+ └──────────────────────────────────────────────────────────────────┘
334
+ └─────────────────────────────────────────────────────────────┘
335
+ ```
336
+
337
+ ---
338
+
339
+ ## Features
340
+
341
+ ### 🧠 Memory System
342
+ - **Categorized storage**: architecture, pattern, bug, preference, decision, todo
343
+ - **Retention scoring**: access frequency × recency × importance (Ebbinghaus-inspired decay)
344
+ - **Branch-aware**: memories tagged with git branch, filtered on recall
345
+ - **Contradiction detection**: new facts auto-supersede old conflicting ones (threshold: 0.6)
346
+ - **Token-budgeted recall**: never exceeds ~2000 tokens regardless of memory count
347
+ - **Memory slots**: pinned structured context (project_context, conventions, known_gotchas)
348
+ - **Auto-categorization**: regex-based category inference from content
349
+ - **Entity resolution**: resolves "this file" → actual filename from task context
350
+ - **Deduplication**: identical/near-identical memories merged, timestamps refreshed
351
+
352
+ ### 🔍 Triple-Stream Search (100% R@5)
353
+ - **BM25**: IDF-weighted sparse embeddings with synonym expansion
354
+ - **Vector**: ONNX all-MiniLM-L6-v2 dense embeddings (384-dim, cosine similarity, 2ms)
355
+ - **Graph**: Dijkstra shortest-path from code symbols to linked memories (weighted edges)
356
+ - **Fusion**: Reciprocal Rank Fusion (RRF) with source diversification (max 3 per category)
357
+ - **Zero-LLM query expansion**: entity extraction, case detection, path matching
358
+
359
+ ### 🏗️ Code Intelligence Engine (LadybugDB)
360
+ - **Knowledge graph**: files, folders, classes, methods, functions, projects, communities
361
+ - **14 languages**: Python, JS/TS, C#, Go, Java, Rust, Ruby, PHP, C/C++, Kotlin, Swift, Scala
362
+ - **Roslyn enrichment**: C# method signatures, implements, full AST detail
363
+ - **Leiden community detection**: automatic functional clustering
364
+ - **CALLS edges**: scope-resolved function call graph with confidence scoring
365
+ - **Impact analysis**: upstream/downstream blast radius (N-hop BFS)
366
+ - **Incremental freshness**: graph + vector index auto-update within 30s of file changes
367
+ - **Service-level lookup**: one tool call returns full service architecture (classes + methods + deps)
368
+ - **Parse caching**: unchanged files skipped on re-index
369
+
370
+ ### 📋 Planning & Knowledge
371
+ - **Task plans**: create, track, mark done, dependency resolution, auto-detect completion from memory
372
+ - **Error patterns**: store errors with root cause and fix
373
+ - **Incidents**: past incidents with affected services and resolution
374
+ - **Code reviews**: feedback history per file
375
+ - **Corrections**: wrong→right pairs with confidence decay (agent learns from mistakes)
376
+ - **Lessons**: learned patterns that reinforce with repetition
377
+ - **Knowledge base**: markdown docs indexed for semantic retrieval
378
+ - **API discovery**: auto-detect OpenAPI specs + controller annotations
379
+
380
+ ### 🛡️ Safety & Audit
381
+ - **Secret stripping**: auto-removes tokens, keys, passwords from memories before storage
382
+ - **Security scan**: hardcoded secrets, SQL injection, eval(), shell injection, insecure HTTP
383
+ - **Dead code detection**: symbols with no incoming edges in the graph
384
+ - **Convention checking**: naming violations per language (PascalCase, camelCase, snake_case)
385
+ - **Pre-tool-use hook**: blocks catastrophic shell commands (rm -rf /, system dirs, credential exfil)
386
+ - **Audit trail**: every memory operation logged with timestamp and action
387
+
388
+ ### 🌐 Multi-Repo & Cross-Service
389
+ - **Workspace linking**: `mnemo link ../other-repo` connects sibling repos
390
+ - **Cross-repo search**: find code, APIs, knowledge across all linked repos
391
+ - **Cross-impact analysis**: what breaks in OTHER services if you change a symbol
392
+ - **Shared knowledge**: decisions and patterns visible across workspace
393
+ - **Service registry**: auto-detected from project manifests
394
+
395
+ ---
396
+
397
+ ## MCP Tools (58 total: 16 agent-facing + 42 specialized)
398
+
399
+ Mnemo exposes **16 consolidated agent-facing tools** via MCP — designed to cover every workflow in minimal tool calls. Under the hood, these route to **42 specialized internal tools** for granular operations.
400
+
401
+ ### Agent-Facing Tools (what the AI calls)
402
+
403
+ | Tool | What it does |
404
+ |------|-------------|
405
+ | `mnemo_recall` | Load full project context at session start (budgeted ~2000 tokens) |
406
+ | `mnemo_remember` | Store important context with auto-categorization & dedup |
407
+ | `mnemo_decide` | Record permanent architectural decisions (never evicted) |
408
+ | `mnemo_forget` | Delete a specific memory by ID |
409
+ | `mnemo_search_memory` | Semantic search across memories (3-way RRF fusion) |
410
+ | `mnemo_lookup` | 360° detail: class methods, function signatures, or full service architecture |
411
+ | `mnemo_search` | Unified search: code + memory + APIs + errors + cross-repo |
412
+ | `mnemo_graph` | Query knowledge graph (stats, neighbors, find by type) |
413
+ | `mnemo_impact` | Blast radius — what breaks if X changes (N-hop BFS traversal) |
414
+ | `mnemo_plan` | Task plans: create, done, add, remove, depends, status |
415
+ | `mnemo_audit` | Security scan, health check, dead code, convention violations |
416
+ | `mnemo_record` | Store errors, incidents, reviews, corrections |
417
+ | `mnemo_generate` | Commit messages and PR descriptions from git diff |
418
+ | `mnemo_map` | Regenerate repo map from graph (instant) |
419
+ | `mnemo_ask` | Natural language → auto-routed to appropriate tools |
420
+ | `mnemo_lesson` | Learned patterns with confidence decay and reinforcement |
421
+
422
+ ### Specialized Internal Tools (42 — routed through agent-facing tools)
423
+
424
+ <details>
425
+ <summary>Click to expand full tool inventory</summary>
426
+
427
+ **Code Intelligence:**
428
+ | Tool | Purpose |
429
+ |------|---------|
430
+ | `mnemo_symbol` | 360° context for a symbol (callers, callees, community) |
431
+ | `mnemo_query` | Raw Cypher queries against LadybugDB |
432
+ | `mnemo_communities` | List all detected code communities |
433
+ | `mnemo_dead_code` | Find unreferenced classes and functions |
434
+ | `mnemo_check_conventions` | Naming violation check per language |
435
+ | `mnemo_dependencies` | Dependency tree for a symbol |
436
+ | `mnemo_breaking_changes` | Detect potential breaking changes in a diff |
437
+ | `mnemo_temporal` | File instability scores (change frequency) |
438
+ | `mnemo_onboarding` | Generate onboarding guide from graph |
439
+
440
+ **Memory & Knowledge:**
441
+ | Tool | Purpose |
442
+ |------|---------|
443
+ | `mnemo_slot_get` | Read a named memory slot |
444
+ | `mnemo_slot_set` | Write a named memory slot |
445
+ | `mnemo_context` | Save/update project context key-values |
446
+ | `mnemo_search_memory` | Deep semantic memory search |
447
+ | `mnemo_episode` | Store episodic session summaries |
448
+ | `mnemo_snapshot` | Capture full memory state snapshot |
449
+ | `mnemo_knowledge` | Search project knowledge base (runbooks, docs) |
450
+ | `mnemo_corrections` | List stored wrong→right corrections |
451
+ | `mnemo_add_correction` | Add a new correction pattern |
452
+
453
+ **Safety & Security:**
454
+ | Tool | Purpose |
455
+ |------|---------|
456
+ | `mnemo_check_security` | Scan for secrets, injection, insecure patterns |
457
+ | `mnemo_add_security_pattern` | Add custom security scan pattern |
458
+ | `mnemo_check_regressions` | Check known regression risks |
459
+ | `mnemo_add_regression` | Register a new regression risk |
460
+ | `mnemo_check` | Pre-command safety check (blocks dangerous ops) |
461
+
462
+ **Engineering Records:**
463
+ | Tool | Purpose |
464
+ |------|---------|
465
+ | `mnemo_add_error` | Store error pattern with root cause |
466
+ | `mnemo_search_errors` | Search past errors |
467
+ | `mnemo_add_incident` | Record incident with affected services |
468
+ | `mnemo_incidents` | Search past incidents |
469
+ | `mnemo_add_review` | Store code review feedback |
470
+ | `mnemo_reviews` | Search review history |
471
+
472
+ **Multi-Repo & APIs:**
473
+ | Tool | Purpose |
474
+ |------|---------|
475
+ | `mnemo_links` | Show linked repos in workspace |
476
+ | `mnemo_cross_search` | Search across all linked repos |
477
+ | `mnemo_cross_impact` | Cross-service impact analysis |
478
+ | `mnemo_discover_apis` | Auto-detect API endpoints (OpenAPI + annotations) |
479
+ | `mnemo_search_api` | Search API catalog |
480
+
481
+ **Team & Velocity:**
482
+ | Tool | Purpose |
483
+ |------|---------|
484
+ | `mnemo_team` | Team activity and expertise map |
485
+ | `mnemo_who_touched` | Find who has expertise on a file/symbol |
486
+ | `mnemo_velocity` | Sprint velocity and throughput metrics |
487
+ | `mnemo_tests` | Test coverage and health insights |
488
+
489
+ **Generation:**
490
+ | Tool | Purpose |
491
+ |------|---------|
492
+ | `mnemo_commit_message` | Generate commit message from staged changes |
493
+ | `mnemo_pr_description` | Generate PR description with context |
494
+ | `mnemo_drift` | Detect architectural drift from declared rules |
495
+ | `mnemo_health` | Overall project health score |
496
+
497
+ </details>
498
+
499
+ ---
500
+
501
+ ## Lifecycle Hooks (per client)
502
+
503
+ Hooks are shell scripts (Kiro) or JSON config (Claude Code) that fire at key points in the agent lifecycle. They're what makes Mnemo **automatic** — you don't need to manually tell the agent to remember or recall.
504
+
505
+ ### Kiro (5 hooks)
506
+
507
+ | Hook | Trigger | What it does |
508
+ |------|---------|-------------|
509
+ | **agent-spawn** | Session starts | Calls `mnemo_recall` → injects full context (decisions, memories, plans, repo map) into agent |
510
+ | **user-prompt-submit** | Every user message | Searches memories relevant to the current prompt → injects as `<mnemo-relevant-context>` |
511
+ | **pre-tool-use** | Before Bash commands | Security check: blocks catastrophic commands (rm -rf /, credential exfil, system dir mods) |
512
+ | **post-tool-use** | After Write/Edit | Records modified files in memory (`Modified file: path/to/file`) |
513
+ | **stop** | Session ends | Detects learnings (bug fixes, decisions, accomplishments) → auto-stores in memory |
514
+
515
+ ### Claude Code (6 hooks via .claude/settings.json)
516
+
517
+ | Hook | Trigger | What it does |
518
+ |------|---------|-------------|
519
+ | **SessionStart** | Chat opens | Loads full recall context |
520
+ | **UserPromptSubmit** | Every message | Semantic memory search on user's prompt |
521
+ | **PreToolUse (Bash)** | Before shell command | Safety: blocks dangerous operations |
522
+ | **PostToolUse (Write\|Edit)** | After file write | Records file modification in memory |
523
+ | **Stop** | Session ends | Captures session learnings and decisions |
524
+ | **PreCompact** | Before context compaction | Re-injects recall so context survives compaction |
525
+
526
+ ### Other Clients (Amazon Q, Cursor, Copilot, Windsurf)
527
+
528
+ These clients don't support hooks natively. Instead, Mnemo installs a **rules/context file** that instructs the agent to:
529
+ 1. Call `mnemo_recall` at session start
530
+ 2. Call `mnemo_search_memory` before asking the user a question
531
+ 3. Call `mnemo_remember` after making decisions or fixing bugs
532
+ 4. Call `mnemo_plan` to track task progress
533
+
534
+ The rules file is auto-generated at `mnemo init` and includes the full tool reference.
535
+
536
+ ---
537
+
538
+ ## Performance
539
+
540
+ | Operation | Time |
541
+ |-----------|------|
542
+ | `mnemo init` (55 files) | 3.5s |
543
+ | `mnemo init` (300 files) | 7s |
544
+ | Re-init (no changes) | 0.01s |
545
+ | `mnemo_recall` | 33ms |
546
+ | `mnemo_remember` | 5ms |
547
+ | `mnemo_search_memory` | 2ms |
548
+ | `mnemo_lookup` (service-level) | 0.5ms |
549
+ | Graph query | 0.2ms |
550
+
551
+ ---
552
+
553
+ ## Dashboard UI
554
+
555
+ ```bash
556
+ mnemo serve # http://localhost:3333
557
+ ```
558
+
559
+ - 🕸️ Interactive knowledge graph visualization (vis-network)
560
+ - 🧠 Memory & decisions viewer with category filters
561
+ - 🏘️ Community explorer with zoom-to-cluster
562
+ - 🔍 Code search with click-to-focus on graph nodes
563
+ - 📊 Health monitoring, stats, and resource usage
564
+ - 📋 Node detail panels (methods, callers, callees, community)
565
+
566
+ ---
567
+
568
+ ## Architecture
569
+
570
+ ```
571
+ .mnemo/
572
+ ├── memory.json Memories with retention scores & access history
573
+ ├── decisions.json Permanent architectural decisions
574
+ ├── plans.json Task tracking with dependencies
575
+ ├── context.json Auto-detected project metadata
576
+ ├── graph.lbug/ LadybugDB knowledge graph (Kuzu engine)
577
+ ├── vectors_code.npy ONNX embeddings of code symbols (384-dim)
578
+ ├── vectors_memory.npy ONNX embeddings of memories
579
+ ├── meta_*.json Vector metadata for cosine search
580
+ ├── engine-meta.json File hashes for incremental detection
581
+ ├── parse-cache.json AST parse cache (skip unchanged files)
582
+ ├── tree.md Compact repo index (generated from graph)
583
+ ├── corrections.json Wrong→right patterns with confidence
584
+ ├── lessons.json Learned patterns with reinforcement
585
+ └── slots.json Pinned structured context (conventions, gotchas)
586
+ ```
587
+
588
+ **Stack**: Python · LadybugDB (Kuzu) · ONNX Runtime · tree-sitter · Roslyn · NetworkX (Leiden)
589
+
590
+ **Zero cloud. Zero API keys. Zero telemetry. Everything runs locally.**
591
+
592
+ ---
593
+
594
+ ## Memory Retention Model
595
+
596
+ ```
597
+ Retention = Salience × Temporal_Decay + Reinforcement
598
+
599
+ Salience: architecture=0.9 decision=0.9 preference=0.85
600
+ pattern=0.8 bug=0.7 todo=0.6 general=0.5
601
+
602
+ Decay: exp(-0.01 × days_old)
603
+
604
+ Reinforcement: Σ(1 / days_since_each_access) × 0.05 (capped at 0.3)
605
+
606
+ Tiers:
607
+ retention ≥ 0.5 → HOT (always shown in recall)
608
+ retention ≥ 0.25 → WARM (shown if token budget allows)
609
+ retention < 0.25 → COLD (excluded from recall, findable via search)
610
+ retention < 0.1 + age > 60d → EVICTED
611
+
612
+ Pinned categories (never evicted): architecture, decision, preference
613
+ ```
614
+
615
+ ---
616
+
617
+ ## CLI Reference
618
+
619
+ ```bash
620
+ mnemo init [--client CLIENT] # Initialize in a repo (kiro, cursor, claude-code, amazonq, copilot)
621
+ mnemo recall [--tier TIER] # Show agent context (compact, standard, deep)
622
+ mnemo map # Regenerate repo map from graph
623
+ mnemo serve [-p PORT] # Dashboard UI (default: 3333)
624
+ mnemo doctor # Diagnose installation issues
625
+ mnemo reset # Remove Mnemo data (safe: only Mnemo-owned files)
626
+ mnemo link [TARGET] # Link another repo to multi-repo workspace
627
+ mnemo remember "content" [-c CAT]# Store a memory
628
+ mnemo tool NAME [--args] # Call any MCP tool from CLI
629
+ ```
630
+
631
+ ---
632
+
633
+ ## Contributing
634
+
635
+ ```bash
636
+ git clone https://github.com/Mnemo-mcp/Mnemo.git
637
+ cd Mnemo
638
+ pip install -e ".[dev]"
639
+ pytest # 222 tests
640
+ ruff check . # Lint
641
+ mnemo init # Test on self
642
+ ```
643
+
644
+ ---
645
+
646
+ ## Links
647
+
648
+ | | |
649
+ |---|---|
650
+ | 🌐 **Website** | [mnemo-mcp.github.io/Mnemo](https://mnemo-mcp.github.io/Mnemo/) |
651
+ | 📦 **PyPI** | [pypi.org/project/mnemo-dev](https://pypi.org/project/mnemo-dev/) |
652
+ | 📦 **npm** | [npmjs.com/package/@mnemo-dev/mcp](https://www.npmjs.com/package/@mnemo-dev/mcp) |
653
+ | 🍺 **Homebrew** | `brew tap Mnemo-mcp/tap && brew install mnemo` |
654
+ | 🧩 **VS Code** | [Marketplace](https://marketplace.visualstudio.com/items?itemName=Nikhil1057.mnemo-vscode) |
655
+ | 💻 **GitHub** | [github.com/Mnemo-mcp/Mnemo](https://github.com/Mnemo-mcp/Mnemo) |
656
+ | 📋 **Changelog** | [CHANGELOG.md](CHANGELOG.md) |
657
+ | 📋 **Distribution** | [DISTRIBUTION.md](DISTRIBUTION.md) |
658
+
659
+ ---
660
+
661
+ ## License
662
+
663
+ [AGPL-3.0](LICENSE) — Free for personal and open-source use.