sqlite-graph-memory 0.3.0__py3-none-any.whl → 0.3.1__py3-none-any.whl
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.
- sqlite_graph_memory/__init__.py +1 -1
- sqlite_graph_memory/mcp_server.py +3 -1
- {sqlite_graph_memory-0.3.0.dist-info → sqlite_graph_memory-0.3.1.dist-info}/METADATA +53 -8
- sqlite_graph_memory-0.3.1.dist-info/RECORD +12 -0
- {sqlite_graph_memory-0.3.0.dist-info → sqlite_graph_memory-0.3.1.dist-info}/entry_points.txt +1 -0
- sqlite_graph_memory-0.3.0.dist-info/RECORD +0 -12
- {sqlite_graph_memory-0.3.0.dist-info → sqlite_graph_memory-0.3.1.dist-info}/WHEEL +0 -0
- {sqlite_graph_memory-0.3.0.dist-info → sqlite_graph_memory-0.3.1.dist-info}/licenses/LICENSE +0 -0
sqlite_graph_memory/__init__.py
CHANGED
|
@@ -22,6 +22,8 @@ Config (env, optional):
|
|
|
22
22
|
import sys, os, json, subprocess, tempfile
|
|
23
23
|
from pathlib import Path
|
|
24
24
|
|
|
25
|
+
from sqlite_graph_memory import __version__
|
|
26
|
+
|
|
25
27
|
# Ensure UTF-8 for stdio communication on all platforms (including Windows console)
|
|
26
28
|
try:
|
|
27
29
|
sys.stdin.reconfigure(encoding='utf-8')
|
|
@@ -43,7 +45,7 @@ def _brain_ask_cmd():
|
|
|
43
45
|
|
|
44
46
|
SERVER_INFO = {
|
|
45
47
|
"name": "sqlite-graph-memory",
|
|
46
|
-
"version":
|
|
48
|
+
"version": __version__
|
|
47
49
|
}
|
|
48
50
|
|
|
49
51
|
TOOLS = [
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sqlite-graph-memory
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Associative memory for LLM agents: Graph RAG over a folder of markdown notes, in one SQLite file, with no server to run.
|
|
5
5
|
Project-URL: Homepage, https://github.com/tonydzi/sqlite-graph-memory
|
|
6
6
|
Project-URL: Repository, https://github.com/tonydzi/sqlite-graph-memory
|
|
7
7
|
Project-URL: Changelog, https://github.com/tonydzi/sqlite-graph-memory/blob/main/CHANGELOG.md
|
|
8
8
|
Project-URL: Issues, https://github.com/tonydzi/sqlite-graph-memory/issues
|
|
9
|
-
Author: Anton Dziatkovskii
|
|
9
|
+
Author: Anton Dziatkovskii, Vardhman Gupta
|
|
10
10
|
License: MIT License
|
|
11
11
|
|
|
12
12
|
Copyright (c) 2026 Palo Alto AI Research Lab
|
|
@@ -44,22 +44,67 @@ Requires-Python: >=3.9
|
|
|
44
44
|
Requires-Dist: numpy>=1.24
|
|
45
45
|
Provides-Extra: embeddings
|
|
46
46
|
Requires-Dist: numpy<2; (sys_platform == 'darwin' and platform_machine == 'x86_64') and extra == 'embeddings'
|
|
47
|
+
Requires-Dist: sentence-transformers<5; (sys_platform == 'darwin' and platform_machine == 'x86_64') and extra == 'embeddings'
|
|
47
48
|
Requires-Dist: sentence-transformers>=2.6; extra == 'embeddings'
|
|
49
|
+
Requires-Dist: transformers<4.50; (sys_platform == 'darwin' and platform_machine == 'x86_64') and extra == 'embeddings'
|
|
48
50
|
Description-Content-Type: text/markdown
|
|
49
51
|
|
|
50
52
|
# sqlite-graph-memory
|
|
51
53
|
|
|
54
|
+
<!-- mcp-name: io.github.tonydzi/sqlite-graph-memory -->
|
|
55
|
+
|
|
52
56
|
**Your agent forgets everything between sessions, and plain vector search gives it back
|
|
53
|
-
flat, unrelated chunks. This gives it associative recall over your own markdown notes
|
|
54
|
-
|
|
57
|
+
flat, unrelated chunks. This gives it associative recall over your own markdown notes:
|
|
58
|
+
vector search finds the entry points, the `[[wikilinks]]` you already wrote are the graph.
|
|
59
|
+
One SQLite file, no graph database, no ETL pass, no server.**
|
|
60
|
+
|
|
61
|
+
## Three commands
|
|
55
62
|
|
|
56
63
|
```bash
|
|
57
|
-
pip install sqlite-graph-memory
|
|
64
|
+
pip install 'sqlite-graph-memory[embeddings]'
|
|
65
|
+
sgm-index ./notes
|
|
66
|
+
sgm-ask --ab "In which programming language is the tool behind Project Ouzel written?"
|
|
58
67
|
```
|
|
59
68
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
69
|
+
`./notes` is any folder of markdown notes. To get exactly the output below, use the
|
|
70
|
+
202-note synthetic vault from this repo (it is not inside the pip package):
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
git clone --depth 1 https://github.com/tonydzi/sqlite-graph-memory && cp -R sqlite-graph-memory/bench/vault ./notes
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Real output, top 5 of 12:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
--- DIRECT memory (vector) ---
|
|
80
|
+
1. [ 1.66] project-ouzel
|
|
81
|
+
2. [ -1.33] project-avocet
|
|
82
|
+
3. [ -1.79] tool-cobbleset
|
|
83
|
+
4. [ -2.44] meeting-2025-10-21-lighthouse-sync
|
|
84
|
+
5. [ -2.70] person-severin-ibarrondo
|
|
85
|
+
|
|
86
|
+
--- ASSOCIATIVE memory (vector+graph) ---
|
|
87
|
+
1. [ 1.66] project-ouzel
|
|
88
|
+
2. [ 1.14] tool-lanternfish <== +graph
|
|
89
|
+
3. [ -1.33] project-avocet
|
|
90
|
+
4. [ -1.79] tool-cobbleset
|
|
91
|
+
5. [ -2.44] meeting-2025-10-21-lighthouse-sync
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
The answer lives in `tool-lanternfish` ("Lanternfish is written in Elixir"). The question
|
|
95
|
+
never names Lanternfish, so the vector pass does not find it in the top 12 at all.
|
|
96
|
+
`project-ouzel` links to it, so one graph hop puts it second.
|
|
97
|
+
|
|
98
|
+
That is the idea in one query, and it is not a blanket win. On this same vault vector-only
|
|
99
|
+
ranks ahead of graph mode overall; the numbers are in [`bench/`](bench/README.md). `--ab`
|
|
100
|
+
exists so you can measure which one wins on your own notes.
|
|
101
|
+
|
|
102
|
+
**From any MCP client** (Claude Desktop, Cursor, Zed, Windsurf): `sgm-mcp` after the install
|
|
103
|
+
above, or `uvx --with 'sqlite-graph-memory[embeddings]' sqlite-graph-memory`. Set
|
|
104
|
+
`BRAIN_INDEX_DIR` to the `index` folder `sgm-index` wrote. Config:
|
|
105
|
+
[`examples/mcp-config.json`](examples/mcp-config.json).
|
|
106
|
+
|
|
107
|
+
## What it is
|
|
63
108
|
|
|
64
109
|
Graph RAG on SQLite for AI agents — a working pilot, not a framework. It is the extracted
|
|
65
110
|
memory layer of a personal "second brain" agent setup: vector search finds the entry
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
sqlite_graph_memory/__init__.py,sha256=zmDhq3ADXY29WMzJp6FtMnBDanbenCU1bQ9Sa3cLwv0,1151
|
|
2
|
+
sqlite_graph_memory/brain_ask.py,sha256=IU8AVk8VvDJr0XC02a7Foil_f0ui0N-Rr_jD734Onbk,14104
|
|
3
|
+
sqlite_graph_memory/index_notes.py,sha256=Hmt0_VVJHS-zXhPPw9h2te8iG1W48f1tJ_H0ALt9aLk,5333
|
|
4
|
+
sqlite_graph_memory/mcp_server.py,sha256=2pBRuKcWTIfQHfM6-P1fa1x1s1377RnAlyrsZdABFQM,8820
|
|
5
|
+
sqlite_graph_memory/schema.sql,sha256=8aySXKw3Azaxyzqbd76mKTfOaDP7FlpkLXtgwA8ZVK4,2543
|
|
6
|
+
sqlite_graph_memory/turnstate_hook.py,sha256=fypGmUcHQkzlRN74tvIG07lr9uAXpp2GjetqthkuMc8,8641
|
|
7
|
+
sqlite_graph_memory/turnstate_show.py,sha256=IED7fmJQM5VgBNwxmEoNSZtujRmWja-qVPg5ckbWVnY,2909
|
|
8
|
+
sqlite_graph_memory-0.3.1.dist-info/METADATA,sha256=8t6SsujTinP7SCt58hrfQKDrJIvMLw1tKlJfddGqCU4,28958
|
|
9
|
+
sqlite_graph_memory-0.3.1.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
10
|
+
sqlite_graph_memory-0.3.1.dist-info/entry_points.txt,sha256=klRDFFhyh3MrP3dfrF9wYciV9QnprfzmQCxU1lJ2FgU,338
|
|
11
|
+
sqlite_graph_memory-0.3.1.dist-info/licenses/LICENSE,sha256=p88nZdrfMUiES3_MpUEwhGmqz2hQFpyMh0k0cqdpfU8,1082
|
|
12
|
+
sqlite_graph_memory-0.3.1.dist-info/RECORD,,
|
{sqlite_graph_memory-0.3.0.dist-info → sqlite_graph_memory-0.3.1.dist-info}/entry_points.txt
RENAMED
|
@@ -4,3 +4,4 @@ sgm-index = sqlite_graph_memory.index_notes:main
|
|
|
4
4
|
sgm-mcp = sqlite_graph_memory.mcp_server:main
|
|
5
5
|
sgm-turnstate-hook = sqlite_graph_memory.turnstate_hook:main
|
|
6
6
|
sgm-turnstate-show = sqlite_graph_memory.turnstate_show:main
|
|
7
|
+
sqlite-graph-memory = sqlite_graph_memory.mcp_server:main
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
sqlite_graph_memory/__init__.py,sha256=T5govp5VGbquVPCrt9A206zFxMoSc9cyVZiP-1sMBcM,1151
|
|
2
|
-
sqlite_graph_memory/brain_ask.py,sha256=IU8AVk8VvDJr0XC02a7Foil_f0ui0N-Rr_jD734Onbk,14104
|
|
3
|
-
sqlite_graph_memory/index_notes.py,sha256=Hmt0_VVJHS-zXhPPw9h2te8iG1W48f1tJ_H0ALt9aLk,5333
|
|
4
|
-
sqlite_graph_memory/mcp_server.py,sha256=ncswz2La4JICUmvYhiOM5x9KipxbK7PXjxIyepKtgns,8771
|
|
5
|
-
sqlite_graph_memory/schema.sql,sha256=8aySXKw3Azaxyzqbd76mKTfOaDP7FlpkLXtgwA8ZVK4,2543
|
|
6
|
-
sqlite_graph_memory/turnstate_hook.py,sha256=fypGmUcHQkzlRN74tvIG07lr9uAXpp2GjetqthkuMc8,8641
|
|
7
|
-
sqlite_graph_memory/turnstate_show.py,sha256=IED7fmJQM5VgBNwxmEoNSZtujRmWja-qVPg5ckbWVnY,2909
|
|
8
|
-
sqlite_graph_memory-0.3.0.dist-info/METADATA,sha256=Ac_rhb4QZJz0bbKR2XqErNIKX2IiV3BDP9ilCBlSWzI,27081
|
|
9
|
-
sqlite_graph_memory-0.3.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
10
|
-
sqlite_graph_memory-0.3.0.dist-info/entry_points.txt,sha256=dyQ1KGmf1xgBfDKb3m_2GTXpF4IR4SDGm53oBNZy-CI,280
|
|
11
|
-
sqlite_graph_memory-0.3.0.dist-info/licenses/LICENSE,sha256=p88nZdrfMUiES3_MpUEwhGmqz2hQFpyMh0k0cqdpfU8,1082
|
|
12
|
-
sqlite_graph_memory-0.3.0.dist-info/RECORD,,
|
|
File without changes
|
{sqlite_graph_memory-0.3.0.dist-info → sqlite_graph_memory-0.3.1.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|