nexo-brain 1.7.0 → 2.1.0

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 (261) hide show
  1. package/README.md +160 -60
  2. package/bin/nexo-brain.js +680 -381
  3. package/package.json +18 -3
  4. package/scripts/migrate-to-unified.sh +813 -0
  5. package/scripts/migrate-v1.7-to-v1.8.py +214 -0
  6. package/scripts/pre-commit-check.sh +1 -1
  7. package/src/__pycache__/auto_update.cpython-310.pyc +0 -0
  8. package/src/__pycache__/hnsw_index.cpython-310.pyc +0 -0
  9. package/src/__pycache__/hnsw_index.cpython-314.pyc +0 -0
  10. package/src/__pycache__/kg_populate.cpython-310.pyc +0 -0
  11. package/src/__pycache__/knowledge_graph.cpython-310.pyc +0 -0
  12. package/src/__pycache__/plugin_loader.cpython-310.pyc +0 -0
  13. package/src/__pycache__/tools_coordination.cpython-310.pyc +0 -0
  14. package/src/__pycache__/tools_credentials.cpython-310.pyc +0 -0
  15. package/src/__pycache__/tools_learnings.cpython-310.pyc +0 -0
  16. package/src/__pycache__/tools_menu.cpython-310.pyc +0 -0
  17. package/src/__pycache__/tools_reminders.cpython-310.pyc +0 -0
  18. package/src/__pycache__/tools_reminders_crud.cpython-310.pyc +0 -0
  19. package/src/__pycache__/tools_sessions.cpython-310.pyc +0 -0
  20. package/src/__pycache__/tools_task_history.cpython-310.pyc +0 -0
  21. package/src/auto_close_sessions.py +1 -1
  22. package/src/auto_update.py +634 -0
  23. package/src/cognitive/__pycache__/__init__.cpython-310.pyc +0 -0
  24. package/src/cognitive/__pycache__/__init__.cpython-312.pyc +0 -0
  25. package/src/cognitive/__pycache__/__init__.cpython-314.pyc +0 -0
  26. package/src/cognitive/__pycache__/_core.cpython-310.pyc +0 -0
  27. package/src/cognitive/__pycache__/_core.cpython-312.pyc +0 -0
  28. package/src/cognitive/__pycache__/_core.cpython-314.pyc +0 -0
  29. package/src/cognitive/__pycache__/_decay.cpython-310.pyc +0 -0
  30. package/src/cognitive/__pycache__/_decay.cpython-312.pyc +0 -0
  31. package/src/cognitive/__pycache__/_decay.cpython-314.pyc +0 -0
  32. package/src/cognitive/__pycache__/_ingest.cpython-310.pyc +0 -0
  33. package/src/cognitive/__pycache__/_ingest.cpython-312.pyc +0 -0
  34. package/src/cognitive/__pycache__/_ingest.cpython-314.pyc +0 -0
  35. package/src/cognitive/__pycache__/_memory.cpython-310.pyc +0 -0
  36. package/src/cognitive/__pycache__/_memory.cpython-312.pyc +0 -0
  37. package/src/cognitive/__pycache__/_memory.cpython-314.pyc +0 -0
  38. package/src/cognitive/__pycache__/_search.cpython-310.pyc +0 -0
  39. package/src/cognitive/__pycache__/_search.cpython-312.pyc +0 -0
  40. package/src/cognitive/__pycache__/_search.cpython-314.pyc +0 -0
  41. package/src/cognitive/__pycache__/_trust.cpython-310.pyc +0 -0
  42. package/src/cognitive/__pycache__/_trust.cpython-312.pyc +0 -0
  43. package/src/cognitive/__pycache__/_trust.cpython-314.pyc +0 -0
  44. package/src/cognitive/_core.py +7 -3
  45. package/src/cognitive/_decay.py +1 -1
  46. package/src/cognitive/_search.py +1 -0
  47. package/src/cognitive/_trust.py +3 -3
  48. package/src/crons/manifest.json +106 -0
  49. package/src/crons/sync.py +217 -0
  50. package/src/dashboard/__pycache__/__init__.cpython-310.pyc +0 -0
  51. package/src/dashboard/__pycache__/app.cpython-310.pyc +0 -0
  52. package/src/dashboard/app.py +24 -4
  53. package/src/dashboard/templates/dashboard.html +3 -2
  54. package/src/db/__pycache__/__init__.cpython-310.pyc +0 -0
  55. package/src/db/__pycache__/__init__.cpython-312.pyc +0 -0
  56. package/src/db/__pycache__/__init__.cpython-314.pyc +0 -0
  57. package/src/db/__pycache__/_core.cpython-310.pyc +0 -0
  58. package/src/db/__pycache__/_core.cpython-312.pyc +0 -0
  59. package/src/db/__pycache__/_core.cpython-314.pyc +0 -0
  60. package/src/db/__pycache__/_credentials.cpython-310.pyc +0 -0
  61. package/src/db/__pycache__/_credentials.cpython-312.pyc +0 -0
  62. package/src/db/__pycache__/_credentials.cpython-314.pyc +0 -0
  63. package/src/db/__pycache__/_entities.cpython-310.pyc +0 -0
  64. package/src/db/__pycache__/_entities.cpython-312.pyc +0 -0
  65. package/src/db/__pycache__/_entities.cpython-314.pyc +0 -0
  66. package/src/db/__pycache__/_episodic.cpython-310.pyc +0 -0
  67. package/src/db/__pycache__/_episodic.cpython-312.pyc +0 -0
  68. package/src/db/__pycache__/_episodic.cpython-314.pyc +0 -0
  69. package/src/db/__pycache__/_evolution.cpython-310.pyc +0 -0
  70. package/src/db/__pycache__/_evolution.cpython-312.pyc +0 -0
  71. package/src/db/__pycache__/_evolution.cpython-314.pyc +0 -0
  72. package/src/db/__pycache__/_fts.cpython-310.pyc +0 -0
  73. package/src/db/__pycache__/_fts.cpython-312.pyc +0 -0
  74. package/src/db/__pycache__/_fts.cpython-314.pyc +0 -0
  75. package/src/db/__pycache__/_learnings.cpython-310.pyc +0 -0
  76. package/src/db/__pycache__/_learnings.cpython-312.pyc +0 -0
  77. package/src/db/__pycache__/_learnings.cpython-314.pyc +0 -0
  78. package/src/db/__pycache__/_reminders.cpython-310.pyc +0 -0
  79. package/src/db/__pycache__/_reminders.cpython-312.pyc +0 -0
  80. package/src/db/__pycache__/_reminders.cpython-314.pyc +0 -0
  81. package/src/db/__pycache__/_schema.cpython-310.pyc +0 -0
  82. package/src/db/__pycache__/_schema.cpython-312.pyc +0 -0
  83. package/src/db/__pycache__/_schema.cpython-314.pyc +0 -0
  84. package/src/db/__pycache__/_sessions.cpython-310.pyc +0 -0
  85. package/src/db/__pycache__/_sessions.cpython-312.pyc +0 -0
  86. package/src/db/__pycache__/_sessions.cpython-314.pyc +0 -0
  87. package/src/db/__pycache__/_tasks.cpython-310.pyc +0 -0
  88. package/src/db/__pycache__/_tasks.cpython-312.pyc +0 -0
  89. package/src/db/__pycache__/_tasks.cpython-314.pyc +0 -0
  90. package/src/db/_core.py +5 -1
  91. package/src/db/_episodic.py +2 -4
  92. package/src/db/_reminders.py +45 -6
  93. package/src/db/_schema.py +31 -0
  94. package/src/evolution_cycle.py +33 -11
  95. package/src/hooks/auto_capture.py +1 -1
  96. package/src/hooks/capture-tool-logs.sh +76 -0
  97. package/src/hooks/inbox-hook.sh +2 -1
  98. package/src/hooks/post-compact.sh +2 -1
  99. package/src/hooks/pre-compact.sh +104 -2
  100. package/src/hooks/session-start.sh +6 -2
  101. package/src/hooks/session-stop.sh +4 -2
  102. package/src/kg_populate.py +4 -1
  103. package/src/migrate_embeddings.py +4 -1
  104. package/src/plugin_loader.py +100 -34
  105. package/src/plugins/__pycache__/__init__.cpython-310.pyc +0 -0
  106. package/src/plugins/__pycache__/adaptive_mode.cpython-310.pyc +0 -0
  107. package/src/plugins/__pycache__/adaptive_mode.cpython-314.pyc +0 -0
  108. package/src/plugins/__pycache__/agents.cpython-310.pyc +0 -0
  109. package/src/plugins/__pycache__/artifact_registry.cpython-310.pyc +0 -0
  110. package/src/plugins/__pycache__/backup.cpython-310.pyc +0 -0
  111. package/src/plugins/__pycache__/cognitive_memory.cpython-310.pyc +0 -0
  112. package/src/plugins/__pycache__/core_rules.cpython-310.pyc +0 -0
  113. package/src/plugins/__pycache__/cortex.cpython-310.pyc +0 -0
  114. package/src/plugins/__pycache__/entities.cpython-310.pyc +0 -0
  115. package/src/plugins/__pycache__/episodic_memory.cpython-310.pyc +0 -0
  116. package/src/plugins/__pycache__/evolution.cpython-310.pyc +0 -0
  117. package/src/plugins/__pycache__/guard.cpython-310.pyc +0 -0
  118. package/src/plugins/__pycache__/knowledge_graph_tools.cpython-310.pyc +0 -0
  119. package/src/plugins/__pycache__/preferences.cpython-310.pyc +0 -0
  120. package/src/plugins/__pycache__/update.cpython-310.pyc +0 -0
  121. package/src/plugins/agents.py +2 -2
  122. package/src/plugins/backup.py +5 -4
  123. package/src/plugins/core_rules.py +37 -16
  124. package/src/plugins/episodic_memory.py +14 -5
  125. package/src/plugins/evolution.py +6 -2
  126. package/src/plugins/guard.py +20 -11
  127. package/src/plugins/update.py +256 -0
  128. package/src/requirements.txt +12 -0
  129. package/src/scripts/check-context.py +8 -3
  130. package/src/scripts/deep-sleep/__pycache__/extract.cpython-314.pyc +0 -0
  131. package/src/scripts/deep-sleep/apply_findings.py +514 -169
  132. package/src/scripts/deep-sleep/collect.py +480 -0
  133. package/src/scripts/deep-sleep/extract-prompt.md +233 -0
  134. package/src/scripts/deep-sleep/extract.py +249 -0
  135. package/src/scripts/deep-sleep/synthesize-prompt.md +168 -0
  136. package/src/scripts/deep-sleep/synthesize.py +191 -0
  137. package/src/scripts/nexo-auto-update.py +4 -211
  138. package/src/scripts/nexo-backup.sh +5 -13
  139. package/src/scripts/nexo-brain-activation.sh +26 -26
  140. package/src/scripts/nexo-catchup.py +36 -25
  141. package/src/scripts/nexo-cognitive-decay.py +7 -3
  142. package/src/scripts/nexo-daily-self-audit.py +44 -15
  143. package/src/scripts/nexo-deep-sleep.sh +31 -16
  144. package/src/scripts/nexo-evolution-run.py +21 -11
  145. package/src/scripts/nexo-followup-hygiene.py +6 -4
  146. package/src/scripts/nexo-github-monitor.py +12 -8
  147. package/src/scripts/nexo-immune.py +6 -4
  148. package/src/scripts/nexo-inbox-hook.sh +2 -1
  149. package/src/scripts/nexo-install.py +4 -225
  150. package/src/scripts/nexo-learning-housekeep.py +7 -3
  151. package/src/scripts/nexo-learning-validator.py +1 -22
  152. package/src/scripts/nexo-migrate.py +9 -3
  153. package/src/scripts/nexo-postmortem-consolidator.py +17 -10
  154. package/src/scripts/nexo-pre-commit.py +3 -1
  155. package/src/scripts/nexo-prevent-sleep.sh +29 -0
  156. package/src/scripts/nexo-proactive-dashboard.py +5 -4
  157. package/src/scripts/nexo-runtime-preflight.py +59 -55
  158. package/src/scripts/nexo-send-email.py +1 -1
  159. package/src/scripts/nexo-send-reply.py +3 -1
  160. package/src/scripts/nexo-sleep.py +13 -9
  161. package/src/scripts/nexo-snapshot-restore.sh +2 -1
  162. package/src/scripts/nexo-synthesis.py +11 -7
  163. package/src/scripts/nexo-tcc-approve.sh +79 -0
  164. package/src/scripts/nexo-update.sh +161 -0
  165. package/src/scripts/nexo-watchdog-smoke.py +18 -13
  166. package/src/scripts/nexo-watchdog.sh +22 -13
  167. package/src/server.py +77 -28
  168. package/src/storage_router.py +6 -2
  169. package/src/tools_learnings.py +6 -6
  170. package/src/tools_menu.py +1 -1
  171. package/src/tools_reminders_crud.py +10 -8
  172. package/src/tools_sessions.py +76 -4
  173. package/templates/CLAUDE.md.template +14 -80
  174. package/templates/launchagents/README.md +7 -7
  175. package/templates/launchagents/com.nexo.auto-close-sessions.plist +5 -1
  176. package/templates/launchagents/com.nexo.catchup.plist +4 -0
  177. package/templates/launchagents/com.nexo.cognitive-decay.plist +7 -0
  178. package/templates/launchagents/com.nexo.dashboard.plist +5 -1
  179. package/templates/launchagents/com.nexo.deep-sleep.plist +4 -0
  180. package/templates/launchagents/com.nexo.evolution.plist +4 -0
  181. package/templates/launchagents/com.nexo.followup-hygiene.plist +4 -0
  182. package/templates/launchagents/com.nexo.github-monitor.plist +3 -1
  183. package/templates/launchagents/com.nexo.immune.plist +4 -0
  184. package/templates/launchagents/com.nexo.postmortem.plist +4 -0
  185. package/templates/launchagents/com.nexo.self-audit.plist +4 -0
  186. package/templates/launchagents/com.nexo.synthesis.plist +4 -0
  187. package/templates/launchagents/com.nexo.watchdog.plist +4 -0
  188. package/templates/openclaw.json +1 -1
  189. package/tests/conftest.py +2 -2
  190. package/tests/test_cognitive.py +7 -6
  191. package/tests/test_migrations.py +26 -0
  192. package/src/__pycache__/auto_close_sessions.cpython-314.pyc +0 -0
  193. package/src/__pycache__/claim_graph.cpython-314.pyc +0 -0
  194. package/src/__pycache__/evolution_cycle.cpython-314.pyc +0 -0
  195. package/src/__pycache__/kg_populate.cpython-314.pyc +0 -0
  196. package/src/__pycache__/knowledge_graph.cpython-314.pyc +0 -0
  197. package/src/__pycache__/maintenance.cpython-314.pyc +0 -0
  198. package/src/__pycache__/migrate_embeddings.cpython-314.pyc +0 -0
  199. package/src/__pycache__/plugin_loader.cpython-314.pyc +0 -0
  200. package/src/__pycache__/server.cpython-314.pyc +0 -0
  201. package/src/__pycache__/storage_router.cpython-314.pyc +0 -0
  202. package/src/__pycache__/tools_coordination.cpython-314.pyc +0 -0
  203. package/src/__pycache__/tools_credentials.cpython-314.pyc +0 -0
  204. package/src/__pycache__/tools_learnings.cpython-314.pyc +0 -0
  205. package/src/__pycache__/tools_menu.cpython-314.pyc +0 -0
  206. package/src/__pycache__/tools_reminders.cpython-314.pyc +0 -0
  207. package/src/__pycache__/tools_reminders_crud.cpython-314.pyc +0 -0
  208. package/src/__pycache__/tools_sessions.cpython-314.pyc +0 -0
  209. package/src/__pycache__/tools_task_history.cpython-314.pyc +0 -0
  210. package/src/dashboard/__pycache__/__init__.cpython-314.pyc +0 -0
  211. package/src/dashboard/__pycache__/app.cpython-314.pyc +0 -0
  212. package/src/hooks/__pycache__/auto_capture.cpython-314.pyc +0 -0
  213. package/src/plugins/__pycache__/__init__.cpython-314.pyc +0 -0
  214. package/src/plugins/__pycache__/agents.cpython-314.pyc +0 -0
  215. package/src/plugins/__pycache__/artifact_registry.cpython-314.pyc +0 -0
  216. package/src/plugins/__pycache__/backup.cpython-314.pyc +0 -0
  217. package/src/plugins/__pycache__/cognitive_memory.cpython-314.pyc +0 -0
  218. package/src/plugins/__pycache__/core_rules.cpython-314.pyc +0 -0
  219. package/src/plugins/__pycache__/cortex.cpython-314.pyc +0 -0
  220. package/src/plugins/__pycache__/entities.cpython-314.pyc +0 -0
  221. package/src/plugins/__pycache__/episodic_memory.cpython-314.pyc +0 -0
  222. package/src/plugins/__pycache__/evolution.cpython-314.pyc +0 -0
  223. package/src/plugins/__pycache__/guard.cpython-314.pyc +0 -0
  224. package/src/plugins/__pycache__/knowledge_graph_tools.cpython-314.pyc +0 -0
  225. package/src/plugins/__pycache__/preferences.cpython-314.pyc +0 -0
  226. package/src/rules/__pycache__/__init__.cpython-314.pyc +0 -0
  227. package/src/rules/__pycache__/migrate.cpython-314.pyc +0 -0
  228. package/src/scripts/__pycache__/check-context.cpython-314.pyc +0 -0
  229. package/src/scripts/__pycache__/nexo-auto-update.cpython-314.pyc +0 -0
  230. package/src/scripts/__pycache__/nexo-catchup.cpython-314.pyc +0 -0
  231. package/src/scripts/__pycache__/nexo-cognitive-decay.cpython-314.pyc +0 -0
  232. package/src/scripts/__pycache__/nexo-daily-self-audit.cpython-314.pyc +0 -0
  233. package/src/scripts/__pycache__/nexo-evolution-run.cpython-314.pyc +0 -0
  234. package/src/scripts/__pycache__/nexo-followup-hygiene.cpython-314.pyc +0 -0
  235. package/src/scripts/__pycache__/nexo-github-monitor.cpython-314.pyc +0 -0
  236. package/src/scripts/__pycache__/nexo-immune.cpython-314.pyc +0 -0
  237. package/src/scripts/__pycache__/nexo-install.cpython-314.pyc +0 -0
  238. package/src/scripts/__pycache__/nexo-learning-housekeep.cpython-314.pyc +0 -0
  239. package/src/scripts/__pycache__/nexo-learning-validator.cpython-314.pyc +0 -0
  240. package/src/scripts/__pycache__/nexo-migrate.cpython-314.pyc +0 -0
  241. package/src/scripts/__pycache__/nexo-postmortem-consolidator.cpython-314.pyc +0 -0
  242. package/src/scripts/__pycache__/nexo-pre-commit.cpython-314.pyc +0 -0
  243. package/src/scripts/__pycache__/nexo-proactive-dashboard.cpython-314.pyc +0 -0
  244. package/src/scripts/__pycache__/nexo-reflection.cpython-314.pyc +0 -0
  245. package/src/scripts/__pycache__/nexo-runtime-preflight.cpython-314.pyc +0 -0
  246. package/src/scripts/__pycache__/nexo-send-email.cpython-314.pyc +0 -0
  247. package/src/scripts/__pycache__/nexo-send-reply.cpython-314.pyc +0 -0
  248. package/src/scripts/__pycache__/nexo-sleep.cpython-314.pyc +0 -0
  249. package/src/scripts/__pycache__/nexo-synthesis.cpython-314.pyc +0 -0
  250. package/src/scripts/__pycache__/nexo-watchdog-smoke.cpython-314.pyc +0 -0
  251. package/src/scripts/deep-sleep/__pycache__/analyze_session.cpython-314.pyc +0 -0
  252. package/src/scripts/deep-sleep/__pycache__/apply_findings.cpython-314.pyc +0 -0
  253. package/src/scripts/deep-sleep/__pycache__/collect_transcripts.cpython-314.pyc +0 -0
  254. package/src/scripts/deep-sleep/analyze_session.py +0 -217
  255. package/src/scripts/deep-sleep/collect_transcripts.py +0 -145
  256. package/src/scripts/deep-sleep/prompt.md +0 -109
  257. package/tests/__pycache__/__init__.cpython-314.pyc +0 -0
  258. package/tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +0 -0
  259. package/tests/__pycache__/test_cognitive.cpython-314-pytest-9.0.2.pyc +0 -0
  260. package/tests/__pycache__/test_knowledge_graph.cpython-314-pytest-9.0.2.pyc +0 -0
  261. package/tests/__pycache__/test_migrations.cpython-314-pytest-9.0.2.pyc +0 -0
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  [![GitHub stars](https://img.shields.io/github/stars/wazionapps/nexo?style=social)](https://github.com/wazionapps/nexo/stargazers)
7
7
  [![License: AGPL-3.0](https://img.shields.io/badge/License-AGPL--3.0-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
8
8
 
9
- > The first AI memory system with architectural inhibitory control — the agent reasons about whether to act before acting. Cognitive Cortex, Context Continuity via auto-compaction hooks, Smart Startup, Context Packets, Auto-Prime, and 30 Core Rules as DNA. Battle-tested from 6 months of production use, validated via multi-AI debate.
9
+ > The first AI memory system with architectural inhibitory control — the agent reasons about whether to act before acting. Cognitive Cortex, Context Continuity via auto-compaction hooks, Smart Startup, Context Packets, Auto-Prime, 30 Core Rules as DNA, auto-update, auto-diary, and CLAUDE.md version tracker. Battle-tested from 6 months of production use, validated via multi-AI debate.
10
10
 
11
11
  **NEXO Brain transforms any MCP-compatible AI agent from a stateless assistant into a cognitive partner that remembers, learns, forgets, adapts, and builds a relationship with you over time.**
12
12
 
@@ -198,7 +198,7 @@ This means long sessions (8+ hours) feel like one continuous conversation instea
198
198
 
199
199
  ## Cognitive Features
200
200
 
201
- NEXO Brain provides 29 cognitive tools on top of the 78 base tools, totaling **115+ MCP tools**. These features implement cognitive science concepts that go beyond basic memory:
201
+ NEXO Brain provides **147+ MCP tools** across 20+ categories. These features implement cognitive science concepts that go beyond basic memory:
202
202
 
203
203
  ### Input Pipeline
204
204
 
@@ -267,29 +267,89 @@ NEXO Brain was evaluated on [LoCoMo](https://github.com/snap-research/locomo) (A
267
267
 
268
268
  Full results in [`benchmarks/locomo/results/`](benchmarks/locomo/results/).
269
269
 
270
- ## Nervous System (v1.6.0)
270
+ ## Nervous System (v2.0.0)
271
271
 
272
- NEXO Brain doesn't just respond — it runs autonomous processes in the background, like a biological nervous system. 11 scripts handle maintenance, health monitoring, and self-improvement without any user interaction:
272
+ NEXO Brain doesn't just respond — it runs 15 autonomous processes in the background, like a biological nervous system. They handle maintenance, health monitoring, and self-improvement without any user interaction:
273
273
 
274
274
  | Script | Schedule | What It Does |
275
275
  |--------|----------|-------------|
276
276
  | **cognitive-decay** | 03:00 daily | Ebbinghaus decay + memory consolidation + duplicate merging + dreaming |
277
- | **deep-sleep** | 04:30 daily | Reads full session transcripts, finds uncaptured corrections and protocol violations |
278
- | **daily-self-audit** | 07:00 daily | Health checks, guard stats, trust score review, metrics |
277
+ | **sleep** | 04:00 daily | Synaptic pruning, expired data cleanup |
278
+ | **deep-sleep** | 04:30 daily | 4-phase overnight pipeline: Collect→Extract→Synthesize→Apply. Analyzes all sessions, detects emotional patterns, abandoned projects, productivity issues, and auto-creates learnings |
279
+ | **self-audit** | 07:00 daily | Health checks, guard stats, trust score review, metrics |
280
+ | **postmortem** | 23:30 daily | Session consolidation, extract patterns from day's events |
279
281
  | **catchup** | On boot | Runs any missed scheduled processes (Mac was off/asleep) |
280
- | **evolution-run** | Weekly | Self-improvement proposals NEXO suggests and applies enhancements |
281
- | **followup-hygiene** | Weekly | Normalizes statuses, flags stale followups, cleans orphans |
282
- | **immune** | 04:00 daily | Quarantine processing, memory promotion/rejection, synaptic pruning |
283
- | **watchdog** | Every 30 min | Monitors 15+ services, LaunchAgents, and infrastructure health |
284
- | **github-monitor** | 08:00 daily | Checks issues, PRs, and commits on public repos |
285
- | **learning-validator** | Nightly | Validates learnings for staleness, contradictions, and duplicates |
286
- | **cognitive-migrate** | On upgrade | Schema migrations for cognitive.db — safe, reversible evolution |
282
+ | **tcc-approve** | On boot (macOS) | Auto-approve macOS permissions for Claude Code updates |
283
+ | **prevent-sleep** | Always (daemon) | Keeps machine awake for nocturnal processes (caffeinate/systemd-inhibit) |
284
+ | **evolution** | Weekly (Sun) | Self-improvement proposals NEXO suggests and applies enhancements |
285
+ | **followup-hygiene** | Weekly (Sun) | Normalizes statuses, flags stale followups, cleans orphans |
286
+ | **immune** | Every 30 min | Quarantine processing, memory promotion/rejection, synaptic pruning |
287
+ | **synthesis** | Every 2 hours | Memory synthesis discovers cross-memory patterns |
288
+ | **backup** | Every hour | SQLite database backups |
289
+ | **watchdog** | Every 5 min | Monitors services, LaunchAgents, and infrastructure health |
290
+ | **auto-close-sessions** | Every 5 min | Cleans stale sessions |
287
291
 
288
- All scripts run via macOS LaunchAgents (or catch-up on Linux). If your Mac was asleep during a scheduled process, the catch-up script re-runs everything in order when it wakes.
292
+ All processes are defined in `src/crons/manifest.json` and auto-synced to your system by `nexo_update`. On macOS they run via LaunchAgents; on Linux via systemd user timers (or crontab fallback). Personal crons (your own scripts) are never touched by the sync. If your Mac was asleep during a scheduled process, the catch-up script re-runs everything in order when it wakes.
289
293
 
290
- ### LaunchAgent Templates
294
+ ## Deep Sleep v2 — Overnight Learning (v2.1.0)
291
295
 
292
- 13 macOS automation templates are included for scheduling the nervous system. The installer configures them automatically. On Linux, equivalent cron entries are generated.
296
+ Deep Sleep is a 4-phase pipeline that runs at 4:30 AM and makes NEXO smarter while you sleep:
297
+
298
+ ```
299
+ Phase 1: COLLECT (Python)
300
+ ├── Reads all session transcripts from the day
301
+ ├── Splits each session into individual .txt files
302
+ └── Gathers DB state (followups, learnings, trust)
303
+
304
+ Phase 2: EXTRACT (Opus, one call per session)
305
+ ├── 8 types of findings per session:
306
+ │ ├── Uncaptured corrections (user corrected agent, no learning saved)
307
+ │ ├── Self-corrected errors (knowledge gaps to fix)
308
+ │ ├── Unformalised ideas (mentioned but never tracked)
309
+ │ ├── Missed commitments (promised but no followup)
310
+ │ ├── Protocol violations (guard_check, heartbeat, change_log)
311
+ │ ├── Emotional signals (frustration, flow, satisfaction)
312
+ │ ├── Abandoned projects (started but not finished)
313
+ │ └── Productivity patterns (corrections, proactivity, tool efficiency)
314
+ └── Outputs per-session JSON with findings + emotional timeline
315
+
316
+ Phase 3: SYNTHESIZE (Opus, one call)
317
+ ├── Cross-session patterns (same error in 5 sessions = systemic)
318
+ ├── Daily mood arc with score (0.0 = terrible day, 1.0 = great day)
319
+ ├── Recurring triggers (what causes frustration vs flow)
320
+ ├── Productivity analysis (corrections, tool efficiency)
321
+ ├── Abandoned project detection
322
+ ├── Morning agenda (prioritized)
323
+ └── Calibration recommendations
324
+
325
+ Phase 4: APPLY (Python)
326
+ ├── Auto-creates learnings from high-confidence findings
327
+ ├── Creates followups for unfinished work
328
+ ├── Updates mood_history in calibration.json (30-day rolling)
329
+ ├── Generates session-tone.json (emotional guidance for next session)
330
+ └── Writes morning-briefing.md
331
+ ```
332
+
333
+ ### Session Tone — Emotional Intelligence
334
+
335
+ Deep Sleep generates a `session-tone.json` that tells NEXO how to behave next morning:
336
+
337
+ - **Agent made many mistakes yesterday** → Acknowledge them, show what was learned, demonstrate improvement
338
+ - **User had a bad day (mood < 40%)** → Supportive approach, lighter start, avoid known frustration triggers
339
+ - **User had a great day (mood > 70%)** → Reinforce momentum, reference wins, push ambitious goals
340
+ - **Agent was too reactive** → Be proactive today, don't wait for instructions
341
+
342
+ This is read by `nexo_smart_startup` and injected into every session's context. NEXO adapts its personality based on real behavioral data, not just configuration.
343
+
344
+ ## Cron Manifest (v2.1.0)
345
+
346
+ All core crons are defined in `src/crons/manifest.json`. When you run `nexo_update`, the sync script:
347
+ - **Installs** new crons from the manifest
348
+ - **Updates** changed schedules/intervals
349
+ - **Removes** crons no longer in the manifest (only core ones)
350
+ - **Never touches** personal crons you created yourself
351
+
352
+ Run `python3 src/crons/sync.py --dry-run` to preview changes without applying.
293
353
 
294
354
  ## Dashboard (v1.6.0)
295
355
 
@@ -312,18 +372,17 @@ Memory alone doesn't make a co-operator. What makes the difference is the **beha
312
372
 
313
373
  ### Automated Hooks
314
374
 
315
- 8 hooks fire automatically at key moments in every Claude Code session:
375
+ 7 hooks fire automatically at key moments in every Claude Code session:
316
376
 
317
377
  | Hook | When | What It Does |
318
378
  |------|------|-------------|
319
- | **SessionStart** | Session opens | Generates briefing from SQLite: overdue reminders, today's tasks, pending followups, active sessions. Cleans up post-mortem flags. |
379
+ | **SessionStart (timestamp)** | Session opens | Writes session timestamp for staleness detection |
380
+ | **SessionStart (briefing)** | Session opens | Generates briefing from SQLite: overdue reminders, today's tasks, pending followups, active sessions. Cleans up post-mortem flags. |
320
381
  | **Stop** | Session ends | Mandatory post-mortem: self-critique (5 questions), session buffer entry, followup creation, proactive seeds for next session |
321
- | **PostToolUse** | After each tool call | Captures meaningful mutations to the Sensory Register + inter-terminal inbox delivery |
322
- | **PreCompact** | Before context compression | Saves full session checkpoint to SQLite — task, files, decisions, errors, reasoning thread |
382
+ | **PostToolUse (capture)** | After each tool call | Captures meaningful mutations to the Sensory Register + auto-diary every 10 tool calls |
383
+ | **PostToolUse (inbox)** | After each tool call | Inter-terminal inbox delivery between parallel sessions |
384
+ | **PreCompact** | Before context compression | Saves full session checkpoint to SQLite — task, files, decisions, errors, reasoning thread + emergency diary |
323
385
  | **PostCompact** | After context compression | Re-injects Core Memory Block so the session continues seamlessly from where it left off |
324
- | **PreToolUse** | Before tool execution | Validates tool parameters and injects guard context for destructive operations |
325
- | **Notification** | External events | Routes incoming notifications (GitHub, email, watchdog alerts) to the active session |
326
- | **Caffeinate** | Always (optional) | Keeps Mac awake for nocturnal cognitive processes |
327
386
 
328
387
  ### The Session Lifecycle
329
388
 
@@ -367,15 +426,10 @@ Existing users upgrading from any previous version:
367
426
  npx nexo-brain # detects current version, migrates automatically
368
427
  ```
369
428
  - Updates hooks, core files, plugins, scripts, and LaunchAgent templates
370
- - Runs `cognitive-migrate.py` for safe, reversible schema evolution
429
+ - Runs database schema migrations automatically
371
430
  - **Never touches your data** (memories, learnings, preferences)
372
431
  - Saves updated CLAUDE.md as reference (doesn't overwrite customizations)
373
432
 
374
- For manual migration (e.g., from a custom setup):
375
- ```bash
376
- python3 ~/.nexo/scripts/nexo-cognitive-migrate.py
377
- ```
378
-
379
433
  ## Knowledge Graph (v0.8)
380
434
 
381
435
  A bi-temporal entity-relationship graph with 988 nodes and 896 edges. Entities and relationships carry both valid-time (when the fact was true) and system-time (when it was recorded), enabling temporal queries like "what did we know about X last Tuesday?". BFS traversal discovers multi-hop connections between concepts. Event-sourced edges with smart dedup (ADD/UPDATE/NOOP) prevent redundant writes while preserving full history.
@@ -425,8 +479,7 @@ The installer handles everything:
425
479
  - Node.js project detected
426
480
  Configuring MCP server...
427
481
  Setting up nervous system...
428
- 11 autonomous scripts configured.
429
- 13 LaunchAgent templates installed.
482
+ 15 autonomous processes configured.
430
483
  Dashboard configured at localhost:6174.
431
484
  Caffeinate enabled.
432
485
  Generating operator instructions...
@@ -457,26 +510,42 @@ That's it. No need to run `claude` manually. Your operator will greet you immedi
457
510
  | Component | What | Where |
458
511
  |-----------|------|-------|
459
512
  | Cognitive engine | Python: fastembed, numpy, vector search | pip packages |
460
- | MCP server | 111+ tools for memory, cognition, learning, guard | ~/.nexo/ |
461
- | Plugins | Guard, episodic memory, cognitive memory, entities, preferences | ~/.nexo/plugins/ |
462
- | Hooks (8) | SessionStart, Stop, PostToolUse, PreCompact, PostCompact, PreToolUse, Notification, Caffeinate | ~/.nexo/hooks/ |
463
- | Nervous system | 11 autonomous scripts (decay, sleep, audit, evolution, watchdog, etc.) | ~/.nexo/scripts/ |
464
- | Dashboard | Web UI at localhost:6174 (6 pages) | ~/.nexo/dashboard/ |
513
+ | MCP server | 147+ tools for memory, cognition, learning, guard | NEXO_HOME/ |
514
+ | Plugins | Guard, episodic memory, cognitive memory, entities, preferences, update, etc. | Code: src/plugins/, Personal: NEXO_HOME/plugins/ |
515
+ | Hooks (7) | SessionStart, Stop, PostToolUse, PreCompact, PostCompact | NEXO_HOME/hooks/ |
516
+ | Nervous system | 15 autonomous processes (decay, sleep, audit, evolution, watchdog, etc.) | NEXO_HOME/scripts/ |
517
+ | Dashboard | Web UI at localhost:6174 (6 pages) | NEXO_HOME/dashboard/ |
465
518
  | CLAUDE.md | Complete operator instructions (Codex, hooks, guard, trust, memory) | ~/.claude/CLAUDE.md |
466
- | LaunchAgents | 13 templates for macOS automation | ~/Library/LaunchAgents/ |
467
- | Auto-update | Checks for new versions at boot | Built into catch-up |
468
- | Claude Code config | MCP server + 8 hooks registered | ~/.claude/settings.json |
519
+ | Schedule config | schedule.json with customizable process times and timezone | NEXO_HOME/config/ |
520
+ | Auto-update | Non-blocking startup check (5s max), opt-out via schedule.json | Built into server startup |
521
+ | CLAUDE.md tracker | Version-tracked core sections with safe updates preserving customizations | Built into auto-update |
522
+ | Auto-diary | 3-layer system: PostToolUse every 10 calls, PreCompact emergency, heartbeat DIARY_OVERDUE | Built into hooks |
523
+ | Claude Code config | MCP server + 7 hooks + 15 processes registered | ~/.claude/settings.json |
469
524
 
470
525
  ### Requirements
471
526
 
472
527
  - **macOS or Linux** (Windows via [WSL](https://learn.microsoft.com/en-us/windows/wsl/install))
473
528
  - **Node.js 18+** (for the installer)
474
- - **Claude Opus (latest version) strongly recommended.** NEXO Brain provides 111+ MCP tools across 20 categories. This cognitive load requires a top-tier model with large context window. Smaller models (Haiku, Sonnet) may struggle with tool selection and produce inconsistent results. Opus handles all 111+ tools without hesitation.
529
+ - **Claude Opus (latest version) strongly recommended.** NEXO Brain provides 147+ MCP tools across 20+ categories. This cognitive load requires a top-tier model with large context window. Smaller models (Haiku, Sonnet) may struggle with tool selection and produce inconsistent results. Opus handles all 147+ tools without hesitation.
475
530
  - Python 3, Homebrew, and Claude Code are installed automatically if missing.
476
531
 
477
532
  ## Architecture
478
533
 
479
- ### 111+ MCP Tools across 20 Categories
534
+ ### Unified Code/Data Separation (v2.0.0)
535
+
536
+ NEXO Brain separates **code** (immutable, in the repo or npm package) from **data** (personal, in `NEXO_HOME`):
537
+
538
+ | Path | Contents |
539
+ |------|----------|
540
+ | `src/` (or npm package) | Server, plugins, hooks, scripts — never modified at runtime |
541
+ | `NEXO_HOME/` (default `~/.nexo/`) | Database, config, personal plugins, schedule, backups |
542
+ | `NEXO_HOME/config/schedule.json` | Customizable process schedules, timezone, auto_update flag |
543
+ | `NEXO_HOME/plugins/` | Personal plugins that override or extend repo plugins |
544
+ | `NEXO_HOME/data/` | SQLite databases (nexo.db, cognitive.db), migration state |
545
+
546
+ The plugin loader scans `src/plugins/` first (base), then `NEXO_HOME/plugins/` (personal override by filename). This dual-directory approach lets you extend NEXO without forking the repo.
547
+
548
+ ### 147+ MCP Tools across 20+ Categories
480
549
 
481
550
  | Category | Count | Tools | Purpose |
482
551
  |----------|-------|-------|---------|
@@ -490,7 +559,7 @@ That's it. No need to run `claude` manually. Your operator will greet you immedi
490
559
  | Reminders | 5 | list, create, update, complete, delete | User's tasks and deadlines |
491
560
  | Followups | 4 | create, update, complete, delete | System's autonomous verification tasks |
492
561
  | Learnings | 5 | add, search, update, delete, list | Error patterns and prevention rules |
493
- | Credentials | 5 | create, get, update, delete, list | Secure local credential storage |
562
+ | Credentials | 5 | create, get, update, delete, list | Local credential storage (plaintext SQLite — protect with filesystem permissions) |
494
563
  | Task History | 3 | log, list, frequency | Execution tracking and overdue alerts |
495
564
  | Menu | 1 | menu | Operations center with box-drawing UI |
496
565
  | Entities | 5 | search, create, update, delete, list | People, services, URLs |
@@ -501,10 +570,11 @@ That's it. No need to run `claude` manually. Your operator will greet you immedi
501
570
  | Adaptive & Somatic | 4 | adaptive_weights, adaptive_override, somatic_check, somatic_stats | Learned signal weights + pain memory per file |
502
571
  | Knowledge Graph | 4 | kg_query, kg_path, kg_neighbors, kg_stats | Bi-temporal entity-relationship graph |
503
572
  | Context Continuity | 2 | checkpoint_save, checkpoint_read | Auto-compaction session preservation |
573
+ | Update | 1 | update | Pull latest code, backup, migrate, verify (with rollback) |
504
574
 
505
575
  ### Plugin System
506
576
 
507
- NEXO Brain supports hot-loadable plugins. Drop a `.py` file in `~/.nexo/plugins/`:
577
+ NEXO Brain supports hot-loadable plugins with a dual-directory loader. Base plugins live in `src/plugins/` (repo). Personal plugins go in `NEXO_HOME/plugins/` and can override base plugins by filename. Drop a `.py` file in `NEXO_HOME/plugins/`:
508
578
 
509
579
  ```python
510
580
  # my_plugin.py
@@ -524,7 +594,7 @@ Reload without restarting: `nexo_plugin_load("my_plugin.py")`
524
594
  - **Everything stays local.** All data in `~/.nexo/`, never uploaded anywhere.
525
595
  - **No telemetry.** No analytics. No phone-home.
526
596
  - **No cloud dependencies.** Vector search runs on CPU (fastembed), not an API.
527
- - **Auto-update is opt-in.** Checks GitHub releases, never sends data.
597
+ - **Auto-update is resilient.** NEXO checks for updates on startup. If an update fails, it continues with the current version and notifies you. Local migrations (database schema, configuration) always run. Network updates (git pull) can be disabled by setting `auto_update: false` in `NEXO_HOME/config/schedule.json`.
528
598
  - **Secret redaction.** API keys and tokens are stripped before they ever reach memory storage.
529
599
 
530
600
  ## The Psychology Behind NEXO Brain
@@ -558,7 +628,7 @@ NEXO Brain is designed as an MCP server. Claude Code is the primary supported cl
558
628
  npx nexo-brain
559
629
  ```
560
630
 
561
- All 111+ tools are available immediately after installation. The installer configures Claude Code's `~/.claude/settings.json` automatically.
631
+ All 147+ tools are available immediately after installation. The installer configures Claude Code's `~/.claude/settings.json` automatically.
562
632
 
563
633
  ### OpenClaw
564
634
 
@@ -574,7 +644,7 @@ Add NEXO Brain to your OpenClaw config at `~/.openclaw/openclaw.json`:
574
644
  "servers": {
575
645
  "nexo-brain": {
576
646
  "command": "python3",
577
- "args": ["~/.nexo/src/server.py"],
647
+ "args": ["~/.nexo/server.py"],
578
648
  "env": {
579
649
  "NEXO_HOME": "~/.nexo"
580
650
  }
@@ -587,7 +657,7 @@ Add NEXO Brain to your OpenClaw config at `~/.openclaw/openclaw.json`:
587
657
  Or via CLI:
588
658
 
589
659
  ```bash
590
- openclaw mcp set nexo-brain '{"command":"python3","args":["~/.nexo/src/server.py"],"env":{"NEXO_HOME":"~/.nexo"}}'
660
+ openclaw mcp set nexo-brain '{"command":"python3","args":["~/.nexo/server.py"],"env":{"NEXO_HOME":"~/.nexo"}}'
591
661
  openclaw gateway restart
592
662
  ```
593
663
 
@@ -617,7 +687,7 @@ This replaces OpenClaw's default memory system with NEXO Brain's full cognitive
617
687
 
618
688
  ### Any MCP Client
619
689
 
620
- NEXO Brain works with any application that supports the MCP protocol. Configure it as an MCP server pointing to `~/.nexo/src/server.py`.
690
+ NEXO Brain works with any application that supports the MCP protocol. Configure it as an MCP server pointing to `server.py` in the code directory, with `NEXO_HOME` env var set.
621
691
 
622
692
  ## Listed On
623
693
 
@@ -637,11 +707,11 @@ NEXO Brain builds on ideas from several open-source projects. We're grateful for
637
707
 
638
708
  | Project | Inspired Features |
639
709
  |---------|------------------|
640
- | [Vestige](https://github.com/pchaganti/gx-vestige) | HyDE query expansion, spreading activation, prediction error gating, memory dreaming, prospective memory |
641
- | [ShieldCortex](https://github.com/PShieldCortex/ShieldCortex) | Security pipeline (4-layer memory poisoning defense) |
642
- | [Bicameral](https://github.com/nicobailey/Bicameral) | Quarantine queue (trust promotion policy for new facts) |
643
- | [claude-mem](https://github.com/nicobailey/claude-mem) | Hook auto-capture (extracting decisions and facts from conversations) |
644
- | [ClawMem](https://github.com/nicobailey/ClawMem) | Co-activation reinforcement (memories retrieved together strengthen connections) |
710
+ | Vestige | HyDE query expansion, spreading activation, prediction error gating, memory dreaming, prospective memory |
711
+ | ShieldCortex | Security pipeline (4-layer memory poisoning defense) |
712
+ | Bicameral | Quarantine queue (trust promotion policy for new facts) |
713
+ | claude-mem | Hook auto-capture (extracting decisions and facts from conversations) |
714
+ | ClawMem | Co-activation reinforcement (memories retrieved together strengthen connections) |
645
715
 
646
716
  ## Support the Project
647
717
 
@@ -654,15 +724,45 @@ If NEXO Brain is useful to you, consider:
654
724
 
655
725
  [![Star History Chart](https://api.star-history.com/svg?repos=wazionapps/nexo&type=Date)](https://star-history.com/#wazionapps/nexo&Date)
656
726
 
727
+ ## Known Issues (v2.0.0)
728
+
729
+ | Priority | Issue | Planned |
730
+ |----------|-------|---------|
731
+ | P0 | Credentials stored in plaintext SQLite — protect with filesystem permissions | v2.1.0 |
732
+ | P0 | Shell hooks use SQL string interpolation (injection risk) | v2.1.0 |
733
+ | P0 | Dashboard has no authentication (localhost only) | v2.1.0 |
734
+ | P0 | Database migrations are fail-open (errors logged but not blocking) | v2.1.0 |
735
+
657
736
  ## Changelog
658
737
 
738
+ ### v2.0.0 — Unified Architecture (2026-03-31)
739
+ - **Code/data separation**: Code in repo (`src/`), personal data in `NEXO_HOME` (default `~/.nexo/`). `NEXO_HOME` env var required.
740
+ - **Plugin loader dual-directory**: Scans `src/plugins/` (base) then `NEXO_HOME/plugins/` (personal override by filename).
741
+ - **Auto-update on startup**: Non-blocking (5s max), resilient, opt-out via `schedule.json`. Separate from manual `nexo_update` tool.
742
+ - **Auto-diary**: 3-layer system — PostToolUse every 10 calls, PreCompact emergency save, heartbeat DIARY_OVERDUE signal.
743
+ - **CLAUDE.md version tracker**: Section markers enable safe core updates without losing user customizations.
744
+ - **schedule.json**: Customizable process schedules with timezone support and `auto_update` flag.
745
+ - **15 autonomous processes**: Added auto-close-sessions, synthesis, backup, tcc-approve, prevent-sleep (cross-platform).
746
+ - **7 hooks**: SessionStart (timestamp + briefing), Stop, PostToolUse (capture + inbox), PreCompact, PostCompact.
747
+ - **147+ MCP tools**: Added `nexo_update` tool for manual updates with rollback.
748
+ - **Lambda fix**: Decay values were 24x too aggressive (STM: 7h to 7d, LTM: 2.4d to 60d).
749
+ - **Guard scoping**: Was returning 35+ irrelevant blocking rules; now scoped to area and gated to high/critical.
750
+ - **12 rounds of external audit**: ~60 findings resolved.
751
+
752
+ ### v1.7.0 — Full Internationalization + Linux Support (2026-03-31)
753
+ - **Full i18n**: All UI strings, error messages, DB status values in English. NLP detection patterns retain bilingual keywords (Spanish + English) for multilingual user support.
754
+ - **Linux support**: systemd user timers (preferred) or crontab fallback for all automated cognitive processes.
755
+ - **Auto-resolve followups**: Change log entries automatically cross-reference and complete matching open followups.
756
+ - **Free-form learning categories**: No more hardcoded category validation — use any category name.
757
+ - **CLAUDE.md template rewrite**: 494 to 127 lines, compact procedural format with full heartbeat signal reactions.
758
+ - **Complete sanitization**: All hardcoded paths use `NEXO_HOME` env var. Zero personal data in the repo.
759
+
659
760
  ### v1.6.0 — Nervous System + Dashboard v2 (2026-03-30)
660
- - **Nervous System**: 11 autonomous scripts (decay, deep sleep, self-audit, catchup, evolution, followup hygiene, immune, watchdog, github monitor, learning validator, cognitive migrate)
761
+ - **Nervous System**: 11 autonomous scripts (decay, deep sleep, self-audit, catchup, evolution, followup hygiene, immune, watchdog, github monitor, learning validator)
661
762
  - **Dashboard v2**: 6 interactive pages at localhost:6174 (Overview, Graph, Memory, Somatic, Adaptive, Sessions)
662
- - **LaunchAgent Templates**: 13 macOS automation templates included in the package for scheduling the nervous system
663
- - **Migration Script**: `cognitive-migrate.py` for safe, reversible schema evolution on upgrades
664
- - **Hooks**: 8 total added PreToolUse (parameter validation + guard injection) and Notification (external event routing)
665
- - **Installer**: Now configures dashboard LaunchAgent, nervous system scripts, and all 13 templates automatically
763
+ - **LaunchAgent Templates**: macOS automation templates included in the package for scheduling the nervous system
764
+ - **Hooks**: 7 total — SessionStart, Stop, PostToolUse, PreCompact, PostCompact
765
+ - **Installer**: Now configures dashboard LaunchAgent, nervous system scripts, and all templates automatically
666
766
 
667
767
  ### v1.5.2 — Deep Sleep (2026-03-29)
668
768
  - **Deep Sleep**: Reads full session transcripts (not just diary) — finds uncaptured corrections, protocol violations, missed commitments
@@ -718,7 +818,7 @@ If NEXO Brain is useful to you, consider:
718
818
  - New tools: `nexo_checkpoint_save`, `nexo_checkpoint_read`
719
819
  - Heartbeat automatically maintains checkpoint every interaction
720
820
  - Core Memory Block re-injected post-compaction with task, files, decisions, reasoning thread
721
- - 115+ total tools, 20 categories
821
+ - 115+ total tools at the time, 20 categories
722
822
 
723
823
  ### v1.0.0 — Cognitive Cortex + Stable Release (2026-03-26)
724
824
  - **Cognitive Cortex**: architectural inhibitory control (ASK/PROPOSE/ACT modes)
@@ -735,7 +835,7 @@ If NEXO Brain is useful to you, consider:
735
835
 
736
836
  ### v0.9.0 — Cognitive Memory (2026-03-15)
737
837
  - Atkinson-Shiffrin memory model (STM → LTM promotion)
738
- - Semantic RAG with fastembed (BAAI/bge-small-en-v1.5, 384 dims)
838
+ - Semantic RAG with fastembed (BAAI/bge-base-en-v1.5, 768 dims)
739
839
  - Trust scoring, sentiment detection, adaptive personality modes
740
840
  - Ebbinghaus decay, sister detection, quarantine system
741
841