Persistent memory and knowledge graph for AI agents via MCP — PostgreSQL + pgvector + Ollama
Drift inferred · capture-to-capture
- HIGH code analysis flagged dynamic code execution in vicquick/nobrainr
- HIGH code analysis flagged dynamic code execution in vicquick/nobrainr
- HIGH code analysis flagged dynamic code execution ×2 in vicquick/nobrainr
tools
-
entity_graph
Recursive graph traversal from a named entity
-
entity_search
Semantic search on knowledge graph entities
-
log_event
Record agent activity (session starts, decisions, completions)
-
memory_delete
Delete a memory by ID
-
memory_extract
Manually trigger entity extraction for a memory
-
memory_feedback
Report whether search results were helpful (improves ranking)
-
memory_get
Get one memory by ID
-
memory_import_chatgpt
Import from ChatGPT export
-
memory_import_claude
Import from .claude/ directory
-
memory_maintenance
Recompute importance scores + decay stability
-
memory_query
Filter by tags, category, machine, source
-
memory_reflect
Batch-save learnings from a session
-
memory_search
Semantic search with natural language (relevance-ranked)
-
memory_stats
Counts by category, machine, source, top tags + knowledge graph stats
-
memory_store
Save a memory (auto-embeds, dedup check, async entity extraction)
-
memory_update
Update a memory (re-embeds if content changes)
analyzed commit 61fe7c9 · analyzer v18 · 1h ago
skills & prompt files 1
- agent-rulesvicquick-nobrainr-61fe7c9/CLAUDE.md
danger signals1
- dynamic code executioneval()/exec()vicquick-nobrainr-61fe7c9/src/nobrainr/db/schema.py:462
-- Extraction eval (qwen3.6 vs qwen3.5 A/B, LLM-judge self-scored).
filesystem 20
- fs vicquick-nobrainr-61fe7c9/scripts/eval_longmemeval.py :33
from pathlib import Path - fs vicquick-nobrainr-61fe7c9/scripts/expand_golden_siblings.py :29
from pathlib import Path - fs vicquick-nobrainr-61fe7c9/scripts/golden_set/run_golden.py :32
from pathlib import Path - fs vicquick-nobrainr-61fe7c9/scripts/locomo/run_locomo.py :25
from pathlib import Path - fs vicquick-nobrainr-61fe7c9/scripts/longmemeval/run_lme.py :31
from pathlib import Path - fs vicquick-nobrainr-61fe7c9/scripts/migrations/2026-04-18-canonicalize-tags.py :21
from pathlib import Path - fs vicquick-nobrainr-61fe7c9/scripts/seed_golden_queries.py :30
from pathlib import Path - fs vicquick-nobrainr-61fe7c9/src/nobrainr/dashboard/api.py :114
with open(_GRAPH_CACHE_PATH, "r") as f: - fs vicquick-nobrainr-61fe7c9/src/nobrainr/importers/chatgpt.py :12
from pathlib import Path - fs vicquick-nobrainr-61fe7c9/src/nobrainr/importers/claude.py :4
from pathlib import Path - fs vicquick-nobrainr-61fe7c9/src/nobrainr/importers/claude_web.py :32
with open(file_path, encoding="utf-8") as f: - fs vicquick-nobrainr-61fe7c9/src/nobrainr/importers/documents.py :16
from pathlib import Path - fs vicquick-nobrainr-61fe7c9/src/nobrainr/importers/docx_importer.py :4
from pathlib import Path - fs vicquick-nobrainr-61fe7c9/src/nobrainr/importers/markdown_notes.py :4
from pathlib import Path - fs vicquick-nobrainr-61fe7c9/src/nobrainr/importers/sticky_notes.py :23
with open(file_path, encoding="utf-8-sig") as f: - fs vicquick-nobrainr-61fe7c9/src/nobrainr/importers/website.py :5
from pathlib import Path - fs vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2593
from pathlib import Path - fs vicquick-nobrainr-61fe7c9/src/nobrainr/monitoring.py :5
import shutil - fs vicquick-nobrainr-61fe7c9/src/nobrainr/scheduler_jobs.py :1936
os.remove(_cache) - fs vicquick-nobrainr-61fe7c9/src/nobrainr/services/code_index.py :10
from pathlib import Path
network 14
- net vicquick-nobrainr-61fe7c9/scripts/eval_longmemeval.py :46
import httpx - net vicquick-nobrainr-61fe7c9/src/nobrainr/chat/rag.py :8
import httpx - net vicquick-nobrainr-61fe7c9/src/nobrainr/cli.py :45
import httpx - net vicquick-nobrainr-61fe7c9/src/nobrainr/crawler/client.py :10
import httpx - net vicquick-nobrainr-61fe7c9/src/nobrainr/crawler/knowledge.py :16
from urllib.parse import urlparse - net vicquick-nobrainr-61fe7c9/src/nobrainr/dashboard/api.py :12
import httpx - net vicquick-nobrainr-61fe7c9/src/nobrainr/embeddings/ollama.py :27
import httpx - net vicquick-nobrainr-61fe7c9/src/nobrainr/extraction/llm.py :22
``RemoteProtocolError`` only. Critically, ``httpx.ReadTimeout`` and - net vicquick-nobrainr-61fe7c9/src/nobrainr/importers/documents.py :39
import httpx - net vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2214
import httpx - net vicquick-nobrainr-61fe7c9/src/nobrainr/monitoring.py :7
import socket - net vicquick-nobrainr-61fe7c9/src/nobrainr/scheduler_jobs.py :5
import socket - net vicquick-nobrainr-61fe7c9/src/nobrainr/services/distill.py :9
import httpx - net vicquick-nobrainr-61fe7c9/src/nobrainr/services/reranker.py :212
import httpx
database 2
- db vicquick-nobrainr-61fe7c9/src/nobrainr/db/pool.py :5
import asyncpg - db vicquick-nobrainr-61fe7c9/src/nobrainr/db/queries.py :11
import asyncpg
tool registrations 65
- memory_store vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :261
- memory_store_status vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :366
- memory_search vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :603
- memory_aggregate vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :996
- memory_query vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1124
- memory_get vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1161
- memory_update vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1178
- memory_delete vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1235
- decision_store vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1266
- decision_search vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1361
- memory_store_procedural vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1439
- memory_get_procedural vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1504
- memory_delete_procedural vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1557
- memory_get_user_profile vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1589
- memory_history vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1677
- memory_restore vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1698
- memory_stats vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1723
- entity_search vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1735
- entity_graph vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1759
- entity_list vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1779
- entity_memories vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1804
- memory_maintenance vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1821
- memory_extract vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1842
- memory_feedback vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1865
- memory_reflect vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1913
- log_event vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :1967
- error_store vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2012
- error_search vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2067
- crawl_page vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2098
- crawl_and_store vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2236
- deep_crawl vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2352
- discover_sitemap vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2445
- memory_store_document vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2472
- memory_import_chatgpt_sessions vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2542
- memory_import_chatgpt vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2585
- memory_import_claude vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2601
- memory_import_claude_web vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2617
- memory_import_claude_memories vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2635
- memory_import_claude_projects vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2653
- memory_import_sticky_notes vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2671
- memory_import_markdown_notes vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2689
- memory_import_docx vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2710
- memory_import_website vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2728
- memory_import_documents vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2749
- memory_import_github vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2787
- distill vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2835
- distill_search vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2870
- code_index vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2917
- code_search vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :2954
- community_detect vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :3005
- community_list vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :3030
- community_members vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :3044
- memory_set_tier vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :3059
- memory_tier_stats vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :3082
- handoff_create vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :3092
- handoff_pickup vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :3158
- handoff_resolve vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :3191
- global_search vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :3224
- graph_search vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :3246
- fact_search vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :3272
- fact_search_prioritized vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :3329
- fact_promote vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :3386
- fact_demote vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :3419
- record_observation vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :3448
- chat_recall vicquick-nobrainr-61fe7c9/src/nobrainr/mcp/server.py :3486
declared dependencies 3
- pytest@>=8.0
- pytest-asyncio@>=0.24
- ruff@>=0.8.0