nexo-brain 1.7.0 → 2.0.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 (247) hide show
  1. package/README.md +25 -24
  2. package/bin/nexo-brain.js +680 -381
  3. package/package.json +4 -1
  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_close_sessions.cpython-310.pyc +0 -0
  8. package/src/__pycache__/auto_update.cpython-310.pyc +0 -0
  9. package/src/__pycache__/auto_update.cpython-314.pyc +0 -0
  10. package/src/__pycache__/claim_graph.cpython-310.pyc +0 -0
  11. package/src/__pycache__/evolution_cycle.cpython-310.pyc +0 -0
  12. package/src/__pycache__/evolution_cycle.cpython-314.pyc +0 -0
  13. package/src/__pycache__/hnsw_index.cpython-310.pyc +0 -0
  14. package/src/__pycache__/kg_populate.cpython-310.pyc +0 -0
  15. package/src/__pycache__/knowledge_graph.cpython-310.pyc +0 -0
  16. package/src/__pycache__/knowledge_graph.cpython-314.pyc +0 -0
  17. package/src/__pycache__/maintenance.cpython-310.pyc +0 -0
  18. package/src/__pycache__/migrate_embeddings.cpython-310.pyc +0 -0
  19. package/src/__pycache__/plugin_loader.cpython-310.pyc +0 -0
  20. package/src/__pycache__/server.cpython-310.pyc +0 -0
  21. package/src/__pycache__/server.cpython-314.pyc +0 -0
  22. package/src/__pycache__/storage_router.cpython-310.pyc +0 -0
  23. package/src/__pycache__/tools_coordination.cpython-310.pyc +0 -0
  24. package/src/__pycache__/tools_credentials.cpython-310.pyc +0 -0
  25. package/src/__pycache__/tools_learnings.cpython-310.pyc +0 -0
  26. package/src/__pycache__/tools_learnings.cpython-314.pyc +0 -0
  27. package/src/__pycache__/tools_menu.cpython-310.pyc +0 -0
  28. package/src/__pycache__/tools_reminders.cpython-310.pyc +0 -0
  29. package/src/__pycache__/tools_reminders_crud.cpython-310.pyc +0 -0
  30. package/src/__pycache__/tools_sessions.cpython-310.pyc +0 -0
  31. package/src/__pycache__/tools_sessions.cpython-314.pyc +0 -0
  32. package/src/__pycache__/tools_task_history.cpython-310.pyc +0 -0
  33. package/src/auto_close_sessions.py +1 -1
  34. package/src/auto_update.py +634 -0
  35. package/src/cognitive/__pycache__/__init__.cpython-310.pyc +0 -0
  36. package/src/cognitive/__pycache__/__init__.cpython-314.pyc +0 -0
  37. package/src/cognitive/__pycache__/_core.cpython-310.pyc +0 -0
  38. package/src/cognitive/__pycache__/_core.cpython-314.pyc +0 -0
  39. package/src/cognitive/__pycache__/_decay.cpython-310.pyc +0 -0
  40. package/src/cognitive/__pycache__/_decay.cpython-314.pyc +0 -0
  41. package/src/cognitive/__pycache__/_ingest.cpython-310.pyc +0 -0
  42. package/src/cognitive/__pycache__/_ingest.cpython-314.pyc +0 -0
  43. package/src/cognitive/__pycache__/_memory.cpython-310.pyc +0 -0
  44. package/src/cognitive/__pycache__/_memory.cpython-314.pyc +0 -0
  45. package/src/cognitive/__pycache__/_search.cpython-310.pyc +0 -0
  46. package/src/cognitive/__pycache__/_search.cpython-314.pyc +0 -0
  47. package/src/cognitive/__pycache__/_trust.cpython-310.pyc +0 -0
  48. package/src/cognitive/__pycache__/_trust.cpython-314.pyc +0 -0
  49. package/src/cognitive/_core.py +7 -3
  50. package/src/cognitive/_decay.py +1 -1
  51. package/src/cognitive/_search.py +1 -0
  52. package/src/cognitive/_trust.py +3 -3
  53. package/src/dashboard/__pycache__/__init__.cpython-310.pyc +0 -0
  54. package/src/dashboard/__pycache__/app.cpython-310.pyc +0 -0
  55. package/src/dashboard/app.py +8 -2
  56. package/src/db/__pycache__/__init__.cpython-310.pyc +0 -0
  57. package/src/db/__pycache__/__init__.cpython-312.pyc +0 -0
  58. package/src/db/__pycache__/__init__.cpython-314.pyc +0 -0
  59. package/src/db/__pycache__/_core.cpython-310.pyc +0 -0
  60. package/src/db/__pycache__/_core.cpython-312.pyc +0 -0
  61. package/src/db/__pycache__/_core.cpython-314.pyc +0 -0
  62. package/src/db/__pycache__/_credentials.cpython-310.pyc +0 -0
  63. package/src/db/__pycache__/_credentials.cpython-312.pyc +0 -0
  64. package/src/db/__pycache__/_credentials.cpython-314.pyc +0 -0
  65. package/src/db/__pycache__/_entities.cpython-310.pyc +0 -0
  66. package/src/db/__pycache__/_entities.cpython-312.pyc +0 -0
  67. package/src/db/__pycache__/_entities.cpython-314.pyc +0 -0
  68. package/src/db/__pycache__/_episodic.cpython-310.pyc +0 -0
  69. package/src/db/__pycache__/_episodic.cpython-312.pyc +0 -0
  70. package/src/db/__pycache__/_episodic.cpython-314.pyc +0 -0
  71. package/src/db/__pycache__/_evolution.cpython-310.pyc +0 -0
  72. package/src/db/__pycache__/_evolution.cpython-312.pyc +0 -0
  73. package/src/db/__pycache__/_evolution.cpython-314.pyc +0 -0
  74. package/src/db/__pycache__/_fts.cpython-310.pyc +0 -0
  75. package/src/db/__pycache__/_fts.cpython-312.pyc +0 -0
  76. package/src/db/__pycache__/_fts.cpython-314.pyc +0 -0
  77. package/src/db/__pycache__/_learnings.cpython-310.pyc +0 -0
  78. package/src/db/__pycache__/_learnings.cpython-312.pyc +0 -0
  79. package/src/db/__pycache__/_learnings.cpython-314.pyc +0 -0
  80. package/src/db/__pycache__/_reminders.cpython-310.pyc +0 -0
  81. package/src/db/__pycache__/_reminders.cpython-312.pyc +0 -0
  82. package/src/db/__pycache__/_reminders.cpython-314.pyc +0 -0
  83. package/src/db/__pycache__/_schema.cpython-310.pyc +0 -0
  84. package/src/db/__pycache__/_schema.cpython-312.pyc +0 -0
  85. package/src/db/__pycache__/_schema.cpython-314.pyc +0 -0
  86. package/src/db/__pycache__/_sessions.cpython-310.pyc +0 -0
  87. package/src/db/__pycache__/_sessions.cpython-312.pyc +0 -0
  88. package/src/db/__pycache__/_sessions.cpython-314.pyc +0 -0
  89. package/src/db/__pycache__/_tasks.cpython-310.pyc +0 -0
  90. package/src/db/__pycache__/_tasks.cpython-312.pyc +0 -0
  91. package/src/db/__pycache__/_tasks.cpython-314.pyc +0 -0
  92. package/src/db/_core.py +5 -1
  93. package/src/db/_episodic.py +1 -3
  94. package/src/db/_reminders.py +36 -1
  95. package/src/db/_schema.py +31 -0
  96. package/src/evolution_cycle.py +33 -11
  97. package/src/hooks/__pycache__/auto_capture.cpython-310.pyc +0 -0
  98. package/src/hooks/auto_capture.py +1 -1
  99. package/src/hooks/capture-tool-logs.sh +76 -0
  100. package/src/hooks/inbox-hook.sh +2 -1
  101. package/src/hooks/post-compact.sh +2 -1
  102. package/src/hooks/pre-compact.sh +104 -2
  103. package/src/hooks/session-start.sh +6 -2
  104. package/src/hooks/session-stop.sh +2 -1
  105. package/src/kg_populate.py +4 -1
  106. package/src/migrate_embeddings.py +4 -1
  107. package/src/plugin_loader.py +100 -34
  108. package/src/plugins/__pycache__/__init__.cpython-310.pyc +0 -0
  109. package/src/plugins/__pycache__/__init__.cpython-314.pyc +0 -0
  110. package/src/plugins/__pycache__/adaptive_mode.cpython-310.pyc +0 -0
  111. package/src/plugins/__pycache__/agents.cpython-310.pyc +0 -0
  112. package/src/plugins/__pycache__/agents.cpython-314.pyc +0 -0
  113. package/src/plugins/__pycache__/artifact_registry.cpython-310.pyc +0 -0
  114. package/src/plugins/__pycache__/backup.cpython-310.pyc +0 -0
  115. package/src/plugins/__pycache__/cognitive_memory.cpython-310.pyc +0 -0
  116. package/src/plugins/__pycache__/core_rules.cpython-310.pyc +0 -0
  117. package/src/plugins/__pycache__/core_rules.cpython-314.pyc +0 -0
  118. package/src/plugins/__pycache__/cortex.cpython-310.pyc +0 -0
  119. package/src/plugins/__pycache__/entities.cpython-310.pyc +0 -0
  120. package/src/plugins/__pycache__/episodic_memory.cpython-310.pyc +0 -0
  121. package/src/plugins/__pycache__/episodic_memory.cpython-314.pyc +0 -0
  122. package/src/plugins/__pycache__/evolution.cpython-310.pyc +0 -0
  123. package/src/plugins/__pycache__/evolution.cpython-314.pyc +0 -0
  124. package/src/plugins/__pycache__/guard.cpython-310.pyc +0 -0
  125. package/src/plugins/__pycache__/knowledge_graph_tools.cpython-310.pyc +0 -0
  126. package/src/plugins/__pycache__/preferences.cpython-310.pyc +0 -0
  127. package/src/plugins/__pycache__/update.cpython-310.pyc +0 -0
  128. package/src/plugins/agents.py +2 -2
  129. package/src/plugins/backup.py +5 -4
  130. package/src/plugins/core_rules.py +5 -1
  131. package/src/plugins/episodic_memory.py +14 -5
  132. package/src/plugins/evolution.py +6 -2
  133. package/src/plugins/guard.py +20 -11
  134. package/src/plugins/update.py +238 -0
  135. package/src/requirements.txt +12 -0
  136. package/src/rules/__pycache__/__init__.cpython-310.pyc +0 -0
  137. package/src/rules/__pycache__/migrate.cpython-310.pyc +0 -0
  138. package/src/scripts/__pycache__/check-context.cpython-310.pyc +0 -0
  139. package/src/scripts/__pycache__/check-context.cpython-314.pyc +0 -0
  140. package/src/scripts/__pycache__/nexo-auto-update.cpython-310.pyc +0 -0
  141. package/src/scripts/__pycache__/nexo-catchup.cpython-310.pyc +0 -0
  142. package/src/scripts/__pycache__/nexo-catchup.cpython-314.pyc +0 -0
  143. package/src/scripts/__pycache__/nexo-cognitive-decay.cpython-310.pyc +0 -0
  144. package/src/scripts/__pycache__/nexo-cognitive-decay.cpython-314.pyc +0 -0
  145. package/src/scripts/__pycache__/nexo-daily-self-audit.cpython-310.pyc +0 -0
  146. package/src/scripts/__pycache__/nexo-daily-self-audit.cpython-314.pyc +0 -0
  147. package/src/scripts/__pycache__/nexo-evolution-run.cpython-310.pyc +0 -0
  148. package/src/scripts/__pycache__/nexo-evolution-run.cpython-314.pyc +0 -0
  149. package/src/scripts/__pycache__/nexo-followup-hygiene.cpython-310.pyc +0 -0
  150. package/src/scripts/__pycache__/nexo-github-monitor.cpython-310.pyc +0 -0
  151. package/src/scripts/__pycache__/nexo-github-monitor.cpython-314.pyc +0 -0
  152. package/src/scripts/__pycache__/nexo-immune.cpython-310.pyc +0 -0
  153. package/src/scripts/__pycache__/nexo-install.cpython-310.pyc +0 -0
  154. package/src/scripts/__pycache__/nexo-learning-housekeep.cpython-310.pyc +0 -0
  155. package/src/scripts/__pycache__/nexo-learning-housekeep.cpython-314.pyc +0 -0
  156. package/src/scripts/__pycache__/nexo-learning-validator.cpython-310.pyc +0 -0
  157. package/src/scripts/__pycache__/nexo-learning-validator.cpython-314.pyc +0 -0
  158. package/src/scripts/__pycache__/nexo-migrate.cpython-310.pyc +0 -0
  159. package/src/scripts/__pycache__/nexo-postmortem-consolidator.cpython-310.pyc +0 -0
  160. package/src/scripts/__pycache__/nexo-pre-commit.cpython-310.pyc +0 -0
  161. package/src/scripts/__pycache__/nexo-proactive-dashboard.cpython-310.pyc +0 -0
  162. package/src/scripts/__pycache__/nexo-proactive-dashboard.cpython-314.pyc +0 -0
  163. package/src/scripts/__pycache__/nexo-reflection.cpython-310.pyc +0 -0
  164. package/src/scripts/__pycache__/nexo-runtime-preflight.cpython-310.pyc +0 -0
  165. package/src/scripts/__pycache__/nexo-runtime-preflight.cpython-314.pyc +0 -0
  166. package/src/scripts/__pycache__/nexo-send-email.cpython-310.pyc +0 -0
  167. package/src/scripts/__pycache__/nexo-send-reply.cpython-310.pyc +0 -0
  168. package/src/scripts/__pycache__/nexo-send-reply.cpython-314.pyc +0 -0
  169. package/src/scripts/__pycache__/nexo-sleep.cpython-310.pyc +0 -0
  170. package/src/scripts/__pycache__/nexo-sleep.cpython-314.pyc +0 -0
  171. package/src/scripts/__pycache__/nexo-synthesis.cpython-310.pyc +0 -0
  172. package/src/scripts/__pycache__/nexo-watchdog-smoke.cpython-310.pyc +0 -0
  173. package/src/scripts/__pycache__/nexo-watchdog-smoke.cpython-314.pyc +0 -0
  174. package/src/scripts/check-context.py +9 -1
  175. package/src/scripts/deep-sleep/__pycache__/analyze_session.cpython-310.pyc +0 -0
  176. package/src/scripts/deep-sleep/__pycache__/analyze_session.cpython-314.pyc +0 -0
  177. package/src/scripts/deep-sleep/__pycache__/apply_findings.cpython-310.pyc +0 -0
  178. package/src/scripts/deep-sleep/__pycache__/apply_findings.cpython-314.pyc +0 -0
  179. package/src/scripts/deep-sleep/__pycache__/collect_transcripts.cpython-310.pyc +0 -0
  180. package/src/scripts/deep-sleep/apply_findings.py +3 -3
  181. package/src/scripts/nexo-auto-update.py +4 -211
  182. package/src/scripts/nexo-backup.sh +5 -13
  183. package/src/scripts/nexo-brain-activation.sh +26 -26
  184. package/src/scripts/nexo-catchup.py +36 -22
  185. package/src/scripts/nexo-cognitive-decay.py +7 -3
  186. package/src/scripts/nexo-daily-self-audit.py +30 -10
  187. package/src/scripts/nexo-evolution-run.py +35 -10
  188. package/src/scripts/nexo-followup-hygiene.py +2 -2
  189. package/src/scripts/nexo-github-monitor.py +11 -4
  190. package/src/scripts/nexo-immune.py +17 -2
  191. package/src/scripts/nexo-inbox-hook.sh +2 -1
  192. package/src/scripts/nexo-install.py +4 -225
  193. package/src/scripts/nexo-learning-housekeep.py +7 -3
  194. package/src/scripts/nexo-learning-validator.py +10 -2
  195. package/src/scripts/nexo-migrate.py +9 -3
  196. package/src/scripts/nexo-postmortem-consolidator.py +22 -4
  197. package/src/scripts/nexo-pre-commit.py +3 -1
  198. package/src/scripts/nexo-prevent-sleep.sh +29 -0
  199. package/src/scripts/nexo-proactive-dashboard.py +4 -4
  200. package/src/scripts/nexo-runtime-preflight.py +59 -55
  201. package/src/scripts/nexo-send-email.py +1 -1
  202. package/src/scripts/nexo-send-reply.py +3 -1
  203. package/src/scripts/nexo-sleep.py +19 -5
  204. package/src/scripts/nexo-snapshot-restore.sh +2 -1
  205. package/src/scripts/nexo-synthesis.py +17 -2
  206. package/src/scripts/nexo-tcc-approve.sh +79 -0
  207. package/src/scripts/nexo-update.sh +161 -0
  208. package/src/scripts/nexo-watchdog-smoke.py +18 -13
  209. package/src/scripts/nexo-watchdog.sh +22 -13
  210. package/src/server.py +77 -28
  211. package/src/storage_router.py +6 -2
  212. package/src/tools_learnings.py +6 -6
  213. package/src/tools_reminders_crud.py +10 -8
  214. package/src/tools_sessions.py +9 -4
  215. package/templates/CLAUDE.md.template +14 -80
  216. package/templates/launchagents/README.md +7 -7
  217. package/templates/launchagents/com.nexo.auto-close-sessions.plist +5 -1
  218. package/templates/launchagents/com.nexo.catchup.plist +4 -0
  219. package/templates/launchagents/com.nexo.cognitive-decay.plist +7 -0
  220. package/templates/launchagents/com.nexo.dashboard.plist +5 -1
  221. package/templates/launchagents/com.nexo.deep-sleep.plist +4 -0
  222. package/templates/launchagents/com.nexo.evolution.plist +4 -0
  223. package/templates/launchagents/com.nexo.followup-hygiene.plist +4 -0
  224. package/templates/launchagents/com.nexo.github-monitor.plist +3 -1
  225. package/templates/launchagents/com.nexo.immune.plist +4 -0
  226. package/templates/launchagents/com.nexo.postmortem.plist +4 -0
  227. package/templates/launchagents/com.nexo.self-audit.plist +4 -0
  228. package/templates/launchagents/com.nexo.synthesis.plist +4 -0
  229. package/templates/launchagents/com.nexo.watchdog.plist +4 -0
  230. package/templates/openclaw.json +1 -1
  231. package/tests/__pycache__/__init__.cpython-310.pyc +0 -0
  232. package/tests/__pycache__/__init__.cpython-314.pyc +0 -0
  233. package/tests/__pycache__/conftest.cpython-310-pytest-9.0.2.pyc +0 -0
  234. package/tests/__pycache__/conftest.cpython-310.pyc +0 -0
  235. package/tests/__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +0 -0
  236. package/tests/__pycache__/test_cognitive.cpython-310-pytest-9.0.2.pyc +0 -0
  237. package/tests/__pycache__/test_cognitive.cpython-310.pyc +0 -0
  238. package/tests/__pycache__/test_cognitive.cpython-314-pytest-9.0.2.pyc +0 -0
  239. package/tests/__pycache__/test_knowledge_graph.cpython-310-pytest-9.0.2.pyc +0 -0
  240. package/tests/__pycache__/test_knowledge_graph.cpython-310.pyc +0 -0
  241. package/tests/__pycache__/test_knowledge_graph.cpython-314-pytest-9.0.2.pyc +0 -0
  242. package/tests/__pycache__/test_migrations.cpython-310-pytest-9.0.2.pyc +0 -0
  243. package/tests/__pycache__/test_migrations.cpython-310.pyc +0 -0
  244. package/tests/__pycache__/test_migrations.cpython-314-pytest-9.0.2.pyc +0 -0
  245. package/tests/conftest.py +2 -2
  246. package/tests/test_cognitive.py +7 -6
  247. package/tests/test_migrations.py +26 -0
package/README.md CHANGED
@@ -283,7 +283,6 @@ NEXO Brain doesn't just respond — it runs autonomous processes in the backgrou
283
283
  | **watchdog** | Every 30 min | Monitors 15+ services, LaunchAgents, and infrastructure health |
284
284
  | **github-monitor** | 08:00 daily | Checks issues, PRs, and commits on public repos |
285
285
  | **learning-validator** | Nightly | Validates learnings for staleness, contradictions, and duplicates |
286
- | **cognitive-migrate** | On upgrade | Schema migrations for cognitive.db — safe, reversible evolution |
287
286
 
288
287
  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.
289
288
 
@@ -312,7 +311,7 @@ Memory alone doesn't make a co-operator. What makes the difference is the **beha
312
311
 
313
312
  ### Automated Hooks
314
313
 
315
- 8 hooks fire automatically at key moments in every Claude Code session:
314
+ 7 hooks fire automatically at key moments in every Claude Code session:
316
315
 
317
316
  | Hook | When | What It Does |
318
317
  |------|------|-------------|
@@ -367,15 +366,10 @@ Existing users upgrading from any previous version:
367
366
  npx nexo-brain # detects current version, migrates automatically
368
367
  ```
369
368
  - Updates hooks, core files, plugins, scripts, and LaunchAgent templates
370
- - Runs `cognitive-migrate.py` for safe, reversible schema evolution
369
+ - Runs database schema migrations automatically
371
370
  - **Never touches your data** (memories, learnings, preferences)
372
371
  - Saves updated CLAUDE.md as reference (doesn't overwrite customizations)
373
372
 
374
- For manual migration (e.g., from a custom setup):
375
- ```bash
376
- python3 ~/.nexo/scripts/nexo-cognitive-migrate.py
377
- ```
378
-
379
373
  ## Knowledge Graph (v0.8)
380
374
 
381
375
  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.
@@ -459,13 +453,13 @@ That's it. No need to run `claude` manually. Your operator will greet you immedi
459
453
  | Cognitive engine | Python: fastembed, numpy, vector search | pip packages |
460
454
  | MCP server | 111+ tools for memory, cognition, learning, guard | ~/.nexo/ |
461
455
  | Plugins | Guard, episodic memory, cognitive memory, entities, preferences | ~/.nexo/plugins/ |
462
- | Hooks (8) | SessionStart, Stop, PostToolUse, PreCompact, PostCompact, PreToolUse, Notification, Caffeinate | ~/.nexo/hooks/ |
456
+ | Hooks (7) | SessionStart, Stop, PostToolUse, PreCompact, PostCompact, PreToolUse, Notification | ~/.nexo/hooks/ |
463
457
  | Nervous system | 11 autonomous scripts (decay, sleep, audit, evolution, watchdog, etc.) | ~/.nexo/scripts/ |
464
458
  | Dashboard | Web UI at localhost:6174 (6 pages) | ~/.nexo/dashboard/ |
465
459
  | CLAUDE.md | Complete operator instructions (Codex, hooks, guard, trust, memory) | ~/.claude/CLAUDE.md |
466
460
  | 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 |
461
+ | Auto-update | Checks for new versions on startup | Built into server startup |
462
+ | Claude Code config | MCP server + 7 hooks registered | ~/.claude/settings.json |
469
463
 
470
464
  ### Requirements
471
465
 
@@ -490,7 +484,7 @@ That's it. No need to run `claude` manually. Your operator will greet you immedi
490
484
  | Reminders | 5 | list, create, update, complete, delete | User's tasks and deadlines |
491
485
  | Followups | 4 | create, update, complete, delete | System's autonomous verification tasks |
492
486
  | Learnings | 5 | add, search, update, delete, list | Error patterns and prevention rules |
493
- | Credentials | 5 | create, get, update, delete, list | Secure local credential storage |
487
+ | Credentials | 5 | create, get, update, delete, list | Local credential storage (plaintext SQLite — protect with filesystem permissions) |
494
488
  | Task History | 3 | log, list, frequency | Execution tracking and overdue alerts |
495
489
  | Menu | 1 | menu | Operations center with box-drawing UI |
496
490
  | Entities | 5 | search, create, update, delete, list | People, services, URLs |
@@ -524,7 +518,7 @@ Reload without restarting: `nexo_plugin_load("my_plugin.py")`
524
518
  - **Everything stays local.** All data in `~/.nexo/`, never uploaded anywhere.
525
519
  - **No telemetry.** No analytics. No phone-home.
526
520
  - **No cloud dependencies.** Vector search runs on CPU (fastembed), not an API.
527
- - **Auto-update is opt-in.** Checks GitHub releases, never sends data.
521
+ - **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
522
  - **Secret redaction.** API keys and tokens are stripped before they ever reach memory storage.
529
523
 
530
524
  ## The Psychology Behind NEXO Brain
@@ -574,7 +568,7 @@ Add NEXO Brain to your OpenClaw config at `~/.openclaw/openclaw.json`:
574
568
  "servers": {
575
569
  "nexo-brain": {
576
570
  "command": "python3",
577
- "args": ["~/.nexo/src/server.py"],
571
+ "args": ["~/.nexo/server.py"],
578
572
  "env": {
579
573
  "NEXO_HOME": "~/.nexo"
580
574
  }
@@ -587,7 +581,7 @@ Add NEXO Brain to your OpenClaw config at `~/.openclaw/openclaw.json`:
587
581
  Or via CLI:
588
582
 
589
583
  ```bash
590
- openclaw mcp set nexo-brain '{"command":"python3","args":["~/.nexo/src/server.py"],"env":{"NEXO_HOME":"~/.nexo"}}'
584
+ openclaw mcp set nexo-brain '{"command":"python3","args":["~/.nexo/server.py"],"env":{"NEXO_HOME":"~/.nexo"}}'
591
585
  openclaw gateway restart
592
586
  ```
593
587
 
@@ -617,7 +611,7 @@ This replaces OpenClaw's default memory system with NEXO Brain's full cognitive
617
611
 
618
612
  ### Any MCP Client
619
613
 
620
- NEXO Brain works with any application that supports the MCP protocol. Configure it as an MCP server pointing to `~/.nexo/src/server.py`.
614
+ NEXO Brain works with any application that supports the MCP protocol. Configure it as an MCP server pointing to `~/.nexo/server.py`.
621
615
 
622
616
  ## Listed On
623
617
 
@@ -637,11 +631,11 @@ NEXO Brain builds on ideas from several open-source projects. We're grateful for
637
631
 
638
632
  | Project | Inspired Features |
639
633
  |---------|------------------|
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) |
634
+ | Vestige | HyDE query expansion, spreading activation, prediction error gating, memory dreaming, prospective memory |
635
+ | ShieldCortex | Security pipeline (4-layer memory poisoning defense) |
636
+ | Bicameral | Quarantine queue (trust promotion policy for new facts) |
637
+ | claude-mem | Hook auto-capture (extracting decisions and facts from conversations) |
638
+ | ClawMem | Co-activation reinforcement (memories retrieved together strengthen connections) |
645
639
 
646
640
  ## Support the Project
647
641
 
@@ -656,11 +650,18 @@ If NEXO Brain is useful to you, consider:
656
650
 
657
651
  ## Changelog
658
652
 
653
+ ### v1.7.0 — Full Internationalization + Linux Support (2026-03-31)
654
+ - **Full i18n**: All UI strings, error messages, DB status values in English. NLP detection patterns retain bilingual keywords (Spanish + English) for multilingual user support.
655
+ - **Linux support**: systemd user timers (preferred) or crontab fallback for all automated cognitive processes.
656
+ - **Auto-resolve followups**: Change log entries automatically cross-reference and complete matching open followups.
657
+ - **Free-form learning categories**: No more hardcoded category validation — use any category name.
658
+ - **CLAUDE.md template rewrite**: 494→127 lines, compact procedural format with full heartbeat signal reactions.
659
+ - **Complete sanitization**: All hardcoded paths use `NEXO_HOME` env var. Zero personal data in the repo.
660
+
659
661
  ### 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)
662
+ - **Nervous System**: 11 autonomous scripts (decay, deep sleep, self-audit, catchup, evolution, followup hygiene, immune, watchdog, github monitor, learning validator)
661
663
  - **Dashboard v2**: 6 interactive pages at localhost:6174 (Overview, Graph, Memory, Somatic, Adaptive, Sessions)
662
664
  - **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
665
  - **Hooks**: 8 total — added PreToolUse (parameter validation + guard injection) and Notification (external event routing)
665
666
  - **Installer**: Now configures dashboard LaunchAgent, nervous system scripts, and all 13 templates automatically
666
667
 
@@ -735,7 +736,7 @@ If NEXO Brain is useful to you, consider:
735
736
 
736
737
  ### v0.9.0 — Cognitive Memory (2026-03-15)
737
738
  - Atkinson-Shiffrin memory model (STM → LTM promotion)
738
- - Semantic RAG with fastembed (BAAI/bge-small-en-v1.5, 384 dims)
739
+ - Semantic RAG with fastembed (BAAI/bge-base-en-v1.5, 768 dims)
739
740
  - Trust scoring, sentiment detection, adaptive personality modes
740
741
  - Ebbinghaus decay, sister detection, quarantine system
741
742