@openparachute/vault 0.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.
- package/.claude/settings.local.json +31 -0
- package/.dockerignore +8 -0
- package/.env.example +9 -0
- package/.playwright-mcp/console-2026-04-14T04-17-25-395Z.log +2 -0
- package/.playwright-mcp/console-2026-04-14T04-18-11-767Z.log +1 -0
- package/.playwright-mcp/console-2026-04-14T04-19-07-733Z.log +2 -0
- package/.playwright-mcp/console-2026-04-14T04-20-45-440Z.log +2 -0
- package/.playwright-mcp/page-2026-04-14T04-17-25-536Z.yml +1 -0
- package/.playwright-mcp/page-2026-04-14T04-18-11-816Z.yml +1 -0
- package/.playwright-mcp/page-2026-04-14T04-18-31-674Z.yml +211 -0
- package/.playwright-mcp/page-2026-04-14T04-19-07-795Z.yml +59 -0
- package/.playwright-mcp/page-2026-04-14T04-19-36-239Z.yml +232 -0
- package/.playwright-mcp/page-2026-04-14T04-19-58-327Z.yml +182 -0
- package/.playwright-mcp/page-2026-04-14T04-20-10-517Z.yml +91 -0
- package/.playwright-mcp/page-2026-04-14T04-20-14-796Z.yml +70 -0
- package/.playwright-mcp/page-2026-04-14T04-20-45-509Z.yml +59 -0
- package/CLAUDE.md +115 -0
- package/Caddyfile +3 -0
- package/Dockerfile +22 -0
- package/LICENSE +661 -0
- package/README.md +356 -0
- package/bun.lock +219 -0
- package/bunfig.toml +2 -0
- package/core/package.json +7 -0
- package/core/src/core.test.ts +940 -0
- package/core/src/hooks.test.ts +361 -0
- package/core/src/hooks.ts +234 -0
- package/core/src/links.ts +352 -0
- package/core/src/mcp.ts +672 -0
- package/core/src/notes.ts +520 -0
- package/core/src/obsidian.test.ts +380 -0
- package/core/src/obsidian.ts +322 -0
- package/core/src/paths.test.ts +197 -0
- package/core/src/paths.ts +53 -0
- package/core/src/schema.ts +331 -0
- package/core/src/store.ts +303 -0
- package/core/src/tag-schemas.ts +104 -0
- package/core/src/test-preload.ts +8 -0
- package/core/src/types.ts +140 -0
- package/core/src/wikilinks.test.ts +277 -0
- package/core/src/wikilinks.ts +402 -0
- package/deploy/parachute-vault.service +20 -0
- package/docker-compose.yml +50 -0
- package/docs/HTTP_API.md +328 -0
- package/fly.toml +24 -0
- package/package.json +32 -0
- package/railway.json +14 -0
- package/religions-abrahamic-filter.png +0 -0
- package/religions-buddhism-v2.png +0 -0
- package/religions-buddhism.png +0 -0
- package/religions-final.png +0 -0
- package/religions-v1.png +0 -0
- package/religions-v2.png +0 -0
- package/religions-zen.png +0 -0
- package/scripts/migrate-audio-to-opus.test.ts +237 -0
- package/scripts/migrate-audio-to-opus.ts +499 -0
- package/src/auth.ts +170 -0
- package/src/cli.ts +1131 -0
- package/src/config-triggers.test.ts +83 -0
- package/src/config.test.ts +125 -0
- package/src/config.ts +716 -0
- package/src/db.ts +14 -0
- package/src/launchd.ts +109 -0
- package/src/mcp-http.ts +113 -0
- package/src/mcp-tools.ts +155 -0
- package/src/oauth.test.ts +1242 -0
- package/src/oauth.ts +729 -0
- package/src/owner-auth.ts +159 -0
- package/src/prompt.ts +141 -0
- package/src/published.test.ts +214 -0
- package/src/qrcode-terminal.d.ts +9 -0
- package/src/routes.ts +822 -0
- package/src/server.ts +450 -0
- package/src/systemd.ts +84 -0
- package/src/token-store.test.ts +174 -0
- package/src/token-store.ts +241 -0
- package/src/triggers.test.ts +397 -0
- package/src/triggers.ts +412 -0
- package/src/two-factor.test.ts +246 -0
- package/src/two-factor.ts +222 -0
- package/src/vault-store.ts +47 -0
- package/src/vault.test.ts +1309 -0
- package/tsconfig.json +29 -0
- package/web/README.md +73 -0
- package/web/bun.lock +827 -0
- package/web/eslint.config.js +23 -0
- package/web/index.html +15 -0
- package/web/package.json +36 -0
- package/web/public/favicon.svg +1 -0
- package/web/public/icons.svg +24 -0
- package/web/src/App.tsx +149 -0
- package/web/src/Graph.tsx +200 -0
- package/web/src/NoteView.tsx +155 -0
- package/web/src/Sidebar.tsx +186 -0
- package/web/src/api.ts +21 -0
- package/web/src/index.css +50 -0
- package/web/src/main.tsx +10 -0
- package/web/src/types.ts +37 -0
- package/web/src/utils.ts +107 -0
- package/web/tsconfig.app.json +25 -0
- package/web/tsconfig.json +7 -0
- package/web/tsconfig.node.json +24 -0
- package/web/vite.config.ts +15 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
- generic [ref=e3]:
|
|
2
|
+
- generic [ref=e4]:
|
|
3
|
+
- generic [ref=e5]:
|
|
4
|
+
- heading "Religions of the World" [level=1] [ref=e6]
|
|
5
|
+
- paragraph [ref=e7]: Knowledge Graph
|
|
6
|
+
- textbox "Search notes..." [ref=e9]
|
|
7
|
+
- generic [ref=e10]:
|
|
8
|
+
- generic [ref=e11]:
|
|
9
|
+
- generic [ref=e12]: By Family
|
|
10
|
+
- button "Abrahamic 39" [ref=e13] [cursor=pointer]:
|
|
11
|
+
- generic [ref=e15]: Abrahamic
|
|
12
|
+
- generic [ref=e16]: "39"
|
|
13
|
+
- button "Dharmic 39" [ref=e17] [cursor=pointer]:
|
|
14
|
+
- generic [ref=e19]: Dharmic
|
|
15
|
+
- generic [ref=e20]: "39"
|
|
16
|
+
- button "East Asian 21" [ref=e21] [cursor=pointer]:
|
|
17
|
+
- generic [ref=e23]: East Asian
|
|
18
|
+
- generic [ref=e24]: "21"
|
|
19
|
+
- button "Iranian 6" [ref=e25] [cursor=pointer]:
|
|
20
|
+
- generic [ref=e27]: Iranian
|
|
21
|
+
- generic [ref=e28]: "6"
|
|
22
|
+
- button "Indigenous 6" [ref=e29] [cursor=pointer]:
|
|
23
|
+
- generic [ref=e31]: Indigenous
|
|
24
|
+
- generic [ref=e32]: "6"
|
|
25
|
+
- button "New Religious Movements 10" [ref=e33] [cursor=pointer]:
|
|
26
|
+
- generic [ref=e35]: New Religious Movements
|
|
27
|
+
- generic [ref=e36]: "10"
|
|
28
|
+
- generic [ref=e37]:
|
|
29
|
+
- generic [ref=e38]: By Type
|
|
30
|
+
- button "Traditions 24" [ref=e39] [cursor=pointer]:
|
|
31
|
+
- generic [ref=e41]: Traditions
|
|
32
|
+
- generic [ref=e42]: "24"
|
|
33
|
+
- button "Concepts 26" [ref=e43] [cursor=pointer]:
|
|
34
|
+
- generic [ref=e45]: Concepts
|
|
35
|
+
- generic [ref=e46]: "26"
|
|
36
|
+
- button "Figures 14" [ref=e47] [cursor=pointer]:
|
|
37
|
+
- generic [ref=e49]: Figures
|
|
38
|
+
- generic [ref=e50]: "14"
|
|
39
|
+
- button "Texts 13" [ref=e51] [cursor=pointer]:
|
|
40
|
+
- generic [ref=e53]: Texts
|
|
41
|
+
- generic [ref=e54]: "13"
|
|
42
|
+
- button "Practices 9" [ref=e55] [cursor=pointer]:
|
|
43
|
+
- generic [ref=e57]: Practices
|
|
44
|
+
- generic [ref=e58]: "9"
|
|
45
|
+
- button "Schools 18" [ref=e59] [cursor=pointer]:
|
|
46
|
+
- generic [ref=e61]: Schools
|
|
47
|
+
- generic [ref=e62]: "18"
|
|
48
|
+
- button "Themes 9" [ref=e63] [cursor=pointer]:
|
|
49
|
+
- generic [ref=e65]: Themes
|
|
50
|
+
- generic [ref=e66]: "9"
|
|
51
|
+
- button "Maps of Content 7" [ref=e67] [cursor=pointer]:
|
|
52
|
+
- generic [ref=e69]: Maps of Content
|
|
53
|
+
- generic [ref=e70]: "7"
|
|
54
|
+
- generic [ref=e71]: Powered by Parachute Vault
|
|
55
|
+
- generic [ref=e72]:
|
|
56
|
+
- img [ref=e73]:
|
|
57
|
+
- generic [ref=e908]:
|
|
58
|
+
- generic: Index
|
|
59
|
+
- generic: Abrahamic
|
|
60
|
+
- generic: Dharmic
|
|
61
|
+
- generic: East Asian
|
|
62
|
+
- generic: Iranian
|
|
63
|
+
- generic: Indigenous
|
|
64
|
+
- generic: New Religious Movements
|
|
65
|
+
- generic: Judaism
|
|
66
|
+
- generic: Christianity
|
|
67
|
+
- generic: Islam
|
|
68
|
+
- generic: Hinduism
|
|
69
|
+
- generic: Buddhism
|
|
70
|
+
- generic: Sikhism
|
|
71
|
+
- generic: Jainism
|
|
72
|
+
- generic: Bahá'í Faith
|
|
73
|
+
- generic: Shinto
|
|
74
|
+
- generic: Taoism
|
|
75
|
+
- generic: Confucianism
|
|
76
|
+
- generic: Zoroastrianism
|
|
77
|
+
- generic: African Traditional Religions
|
|
78
|
+
- generic: Native American Spiritualities
|
|
79
|
+
- generic: Australian Aboriginal Spirituality
|
|
80
|
+
- generic: Afro-Caribbean Diasporic Religions
|
|
81
|
+
- generic: Circumpolar Spiritualities
|
|
82
|
+
- generic: Mormonism
|
|
83
|
+
- generic: Rastafari
|
|
84
|
+
- generic: Cao Đài
|
|
85
|
+
- generic: Tenrikyo
|
|
86
|
+
- generic: Wicca and Modern Paganism
|
|
87
|
+
- generic: Unitarian Universalism
|
|
88
|
+
- generic: Falun Gong
|
|
89
|
+
- generic:
|
|
90
|
+
- generic: 119 notes
|
|
91
|
+
- generic: 711 connections
|
|
92
|
+
- generic [ref=e911]:
|
|
93
|
+
- generic [ref=e912]:
|
|
94
|
+
- generic [ref=e913]:
|
|
95
|
+
- generic [ref=e914]:
|
|
96
|
+
- generic [ref=e916]: School
|
|
97
|
+
- generic [ref=e917]: /
|
|
98
|
+
- generic [ref=e918]: Dharmic
|
|
99
|
+
- generic [ref=e919]: Schools/Zen
|
|
100
|
+
- button "×" [ref=e920] [cursor=pointer]
|
|
101
|
+
- generic [ref=e922]:
|
|
102
|
+
- heading "Zen" [level=1] [ref=e1015]
|
|
103
|
+
- paragraph [ref=e924]:
|
|
104
|
+
- text: The meditation tradition of
|
|
105
|
+
- link "Mahayana" [ref=e1016] [cursor=pointer]:
|
|
106
|
+
- /url: ""
|
|
107
|
+
- link "Buddhism" [ref=e1017] [cursor=pointer]:
|
|
108
|
+
- /url: ""
|
|
109
|
+
- text: that emerged in China as
|
|
110
|
+
- emphasis [ref=e926]: Chan
|
|
111
|
+
- text: (from the Sanskrit
|
|
112
|
+
- emphasis [ref=e1018]: dhyana
|
|
113
|
+
- text: ", meditation), then spread to Vietnam ("
|
|
114
|
+
- emphasis [ref=e1019]: Thien
|
|
115
|
+
- text: ), Korea (
|
|
116
|
+
- emphasis [ref=e1020]: Seon
|
|
117
|
+
- text: ), and Japan (
|
|
118
|
+
- emphasis [ref=e1021]: Zen
|
|
119
|
+
- text: ). Distinguished by its emphasis on direct experience over scriptural study, on sitting meditation as the heart of practice, and on the going-beyond of conceptual knowing.
|
|
120
|
+
- heading "Origin" [level=2] [ref=e1022]
|
|
121
|
+
- paragraph [ref=e938]: "Traditionally traced to the meeting of the Indian master Bodhidharma with Chinese students around 500 CE. Bodhidharma's famous summary captures the school's spirit:"
|
|
122
|
+
- blockquote [ref=e1023]:
|
|
123
|
+
- paragraph [ref=e1024]: A special transmission outside the scriptures, Not depending on words or letters; Direct pointing to the human mind; Seeing into one's own nature and attaining buddhahood.
|
|
124
|
+
- paragraph [ref=e974]: Whether the historical Bodhidharma actually said this is uncertain; the formulation became canonical in later Zen.
|
|
125
|
+
- heading "What Zen does differently" [level=2] [ref=e1025]
|
|
126
|
+
- list [ref=e939]:
|
|
127
|
+
- listitem [ref=e940]:
|
|
128
|
+
- strong [ref=e1026]: Sitting meditation
|
|
129
|
+
- text: (
|
|
130
|
+
- link "Zazen" [ref=e1027] [cursor=pointer]:
|
|
131
|
+
- /url: ""
|
|
132
|
+
- text: ) is central. Other Buddhist schools also meditate, but Zen makes sitting the heart of the path in a particularly concentrated way.
|
|
133
|
+
- listitem [ref=e942]:
|
|
134
|
+
- strong [ref=e1028]: Direct pointing
|
|
135
|
+
- text: — a master may try to bring the student to awakening through unexpected gestures, paradoxes, blows, or wordless transmission rather than through doctrinal exposition
|
|
136
|
+
- listitem [ref=e944]:
|
|
137
|
+
- strong [ref=e1029]: Suspicion of scripture
|
|
138
|
+
- text: — not because scriptures are wrong, but because they can become substitutes for direct experience. Zen sayings include
|
|
139
|
+
- emphasis [ref=e946]: if you meet the Buddha on the road, kill him
|
|
140
|
+
- text: — a warning against attaching to even the highest concepts
|
|
141
|
+
- listitem [ref=e1030]:
|
|
142
|
+
- strong [ref=e1031]: Koan practice
|
|
143
|
+
- text: — short paradoxical anecdotes or questions used as the focus of meditation, especially in the
|
|
144
|
+
- link "Rinzai" [ref=e1032] [cursor=pointer]:
|
|
145
|
+
- /url: ""
|
|
146
|
+
- text: line.
|
|
147
|
+
- emphasis [ref=e1033]: What is the sound of one hand clapping?
|
|
148
|
+
- text: The koan is not a riddle to be solved but a tool to drive the mind past discursive thought.
|
|
149
|
+
- listitem [ref=e1034]:
|
|
150
|
+
- strong [ref=e1035]: The teacher-student relationship
|
|
151
|
+
- text: as the carrier of the lineage; the dharma is transmitted
|
|
152
|
+
- emphasis [ref=e1036]: mind to mind
|
|
153
|
+
- text: rather than only through texts
|
|
154
|
+
- heading "Major Japanese schools" [level=2] [ref=e1037]
|
|
155
|
+
- list [ref=e950]:
|
|
156
|
+
- listitem [ref=e951]:
|
|
157
|
+
- strong [ref=e1038]: Soto Zen
|
|
158
|
+
- text: — emphasizes
|
|
159
|
+
- link "shikantaza" [ref=e1039] [cursor=pointer]:
|
|
160
|
+
- /url: ""
|
|
161
|
+
- text: ", \"just sitting,\" without specific objects of contemplation. Founded by Dogen (1200–1253), one of the great religious philosophers of any tradition."
|
|
162
|
+
- listitem [ref=e953]:
|
|
163
|
+
- strong [ref=e1040]: Rinzai Zen
|
|
164
|
+
- text: — emphasizes koan practice and intense, sudden breakthroughs. Associated historically with the samurai class.
|
|
165
|
+
- listitem [ref=e957]:
|
|
166
|
+
- strong [ref=e1041]: Obaku Zen
|
|
167
|
+
- text: — a smaller school combining Zen and
|
|
168
|
+
- link "Pure Land" [ref=e1042] [cursor=pointer]:
|
|
169
|
+
- /url: ""
|
|
170
|
+
- text: elements, brought from China in the 17th century.
|
|
171
|
+
- heading "Cultural reach" [level=2] [ref=e1043]
|
|
172
|
+
- paragraph [ref=e981]: "Zen profoundly shaped Japanese (and East Asian more broadly) aesthetics: the tea ceremony, ink painting, garden design, calligraphy, archery, swordsmanship, flower arrangement, haiku. The Zen sensibility — austere, attentive, present, suspicious of decoration and self-conscious display — permeates these arts."
|
|
173
|
+
- heading "In the modern West" [level=2] [ref=e1044]
|
|
174
|
+
- paragraph [ref=e1045]: Zen was the first form of Buddhism to enter Western awareness on a large scale, through the translations and writings of D.T. Suzuki in the early 20th century, the postwar interest of the Beat poets and writers, and the founding of Zen centers across Europe and North America from the 1960s onward.
|
|
175
|
+
- generic [ref=e982]:
|
|
176
|
+
- generic [ref=e983]: Connected (5)
|
|
177
|
+
- generic [ref=e984]:
|
|
178
|
+
- button "Mahayana" [ref=e999] [cursor=pointer]: Mahayana
|
|
179
|
+
- button "Buddhism" [ref=e1046] [cursor=pointer]: Buddhism
|
|
180
|
+
- button "Zazen" [ref=e1011] [cursor=pointer]: Zazen
|
|
181
|
+
- button "Zazen" [ref=e1048] [cursor=pointer]: Zazen
|
|
182
|
+
- button "Pure Land" [ref=e1007] [cursor=pointer]: Pure Land
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
- generic [ref=e3]:
|
|
2
|
+
- generic [ref=e4]:
|
|
3
|
+
- generic [ref=e5]:
|
|
4
|
+
- heading "Religions of the World" [level=1] [ref=e6]
|
|
5
|
+
- paragraph [ref=e7]: Knowledge Graph
|
|
6
|
+
- textbox "Search notes..." [ref=e9]
|
|
7
|
+
- generic [ref=e10]:
|
|
8
|
+
- generic [ref=e11]:
|
|
9
|
+
- generic [ref=e12]: By Family
|
|
10
|
+
- button "Abrahamic 39" [ref=e13] [cursor=pointer]:
|
|
11
|
+
- generic [ref=e15]: Abrahamic
|
|
12
|
+
- generic [ref=e16]: "39"
|
|
13
|
+
- button "Dharmic 39" [ref=e17] [cursor=pointer]:
|
|
14
|
+
- generic [ref=e19]: Dharmic
|
|
15
|
+
- generic [ref=e20]: "39"
|
|
16
|
+
- button "East Asian 21" [ref=e21] [cursor=pointer]:
|
|
17
|
+
- generic [ref=e23]: East Asian
|
|
18
|
+
- generic [ref=e24]: "21"
|
|
19
|
+
- button "Iranian 6" [ref=e25] [cursor=pointer]:
|
|
20
|
+
- generic [ref=e27]: Iranian
|
|
21
|
+
- generic [ref=e28]: "6"
|
|
22
|
+
- button "Indigenous 6" [ref=e29] [cursor=pointer]:
|
|
23
|
+
- generic [ref=e31]: Indigenous
|
|
24
|
+
- generic [ref=e32]: "6"
|
|
25
|
+
- button "New Religious Movements 10" [ref=e33] [cursor=pointer]:
|
|
26
|
+
- generic [ref=e35]: New Religious Movements
|
|
27
|
+
- generic [ref=e36]: "10"
|
|
28
|
+
- generic [ref=e37]:
|
|
29
|
+
- generic [ref=e38]: By Type
|
|
30
|
+
- button "Traditions 24" [ref=e39] [cursor=pointer]:
|
|
31
|
+
- generic [ref=e41]: Traditions
|
|
32
|
+
- generic [ref=e42]: "24"
|
|
33
|
+
- button "Concepts 26" [ref=e43] [cursor=pointer]:
|
|
34
|
+
- generic [ref=e45]: Concepts
|
|
35
|
+
- generic [ref=e46]: "26"
|
|
36
|
+
- button "Figures 14" [ref=e47] [cursor=pointer]:
|
|
37
|
+
- generic [ref=e49]: Figures
|
|
38
|
+
- generic [ref=e50]: "14"
|
|
39
|
+
- button "Texts 13" [ref=e51] [cursor=pointer]:
|
|
40
|
+
- generic [ref=e53]: Texts
|
|
41
|
+
- generic [ref=e54]: "13"
|
|
42
|
+
- button "Practices 9" [ref=e55] [cursor=pointer]:
|
|
43
|
+
- generic [ref=e57]: Practices
|
|
44
|
+
- generic [ref=e58]: "9"
|
|
45
|
+
- button "Schools 18" [ref=e59] [cursor=pointer]:
|
|
46
|
+
- generic [ref=e61]: Schools
|
|
47
|
+
- generic [ref=e62]: "18"
|
|
48
|
+
- button "Themes 9" [ref=e63] [cursor=pointer]:
|
|
49
|
+
- generic [ref=e65]: Themes
|
|
50
|
+
- generic [ref=e66]: "9"
|
|
51
|
+
- button "Maps of Content 7" [ref=e67] [cursor=pointer]:
|
|
52
|
+
- generic [ref=e69]: Maps of Content
|
|
53
|
+
- generic [ref=e70]: "7"
|
|
54
|
+
- generic [ref=e71]: Powered by Parachute Vault
|
|
55
|
+
- generic [ref=e72]:
|
|
56
|
+
- img [ref=e73]:
|
|
57
|
+
- generic [ref=e908]:
|
|
58
|
+
- generic: Index
|
|
59
|
+
- generic: Abrahamic
|
|
60
|
+
- generic: Dharmic
|
|
61
|
+
- generic: East Asian
|
|
62
|
+
- generic: Iranian
|
|
63
|
+
- generic: Indigenous
|
|
64
|
+
- generic: New Religious Movements
|
|
65
|
+
- generic: Judaism
|
|
66
|
+
- generic: Christianity
|
|
67
|
+
- generic: Islam
|
|
68
|
+
- generic: Hinduism
|
|
69
|
+
- generic: Buddhism
|
|
70
|
+
- generic: Sikhism
|
|
71
|
+
- generic: Jainism
|
|
72
|
+
- generic: Bahá'í Faith
|
|
73
|
+
- generic: Shinto
|
|
74
|
+
- generic: Taoism
|
|
75
|
+
- generic: Confucianism
|
|
76
|
+
- generic: Zoroastrianism
|
|
77
|
+
- generic: African Traditional Religions
|
|
78
|
+
- generic: Native American Spiritualities
|
|
79
|
+
- generic: Australian Aboriginal Spirituality
|
|
80
|
+
- generic: Afro-Caribbean Diasporic Religions
|
|
81
|
+
- generic: Circumpolar Spiritualities
|
|
82
|
+
- generic: Mormonism
|
|
83
|
+
- generic: Rastafari
|
|
84
|
+
- generic: Cao Đài
|
|
85
|
+
- generic: Tenrikyo
|
|
86
|
+
- generic: Wicca and Modern Paganism
|
|
87
|
+
- generic: Unitarian Universalism
|
|
88
|
+
- generic: Falun Gong
|
|
89
|
+
- generic:
|
|
90
|
+
- generic: 119 notes
|
|
91
|
+
- generic: 711 connections
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
- generic [ref=e3]:
|
|
2
|
+
- generic [ref=e4]:
|
|
3
|
+
- generic [ref=e5]:
|
|
4
|
+
- heading "Religions of the World" [level=1] [ref=e6]
|
|
5
|
+
- paragraph [ref=e7]: Knowledge Graph
|
|
6
|
+
- textbox "Search notes..." [ref=e9]
|
|
7
|
+
- generic [ref=e10]:
|
|
8
|
+
- button "× Clear filter" [ref=e1050] [cursor=pointer]
|
|
9
|
+
- generic [ref=e11]:
|
|
10
|
+
- generic [ref=e12]: By Family
|
|
11
|
+
- button "Abrahamic 39" [active] [ref=e13] [cursor=pointer]:
|
|
12
|
+
- generic [ref=e15]: Abrahamic
|
|
13
|
+
- generic [ref=e16]: "39"
|
|
14
|
+
- button "Dharmic 39" [ref=e17] [cursor=pointer]:
|
|
15
|
+
- generic [ref=e19]: Dharmic
|
|
16
|
+
- generic [ref=e20]: "39"
|
|
17
|
+
- button "East Asian 21" [ref=e21] [cursor=pointer]:
|
|
18
|
+
- generic [ref=e23]: East Asian
|
|
19
|
+
- generic [ref=e24]: "21"
|
|
20
|
+
- button "Iranian 6" [ref=e25] [cursor=pointer]:
|
|
21
|
+
- generic [ref=e27]: Iranian
|
|
22
|
+
- generic [ref=e28]: "6"
|
|
23
|
+
- button "Indigenous 6" [ref=e29] [cursor=pointer]:
|
|
24
|
+
- generic [ref=e31]: Indigenous
|
|
25
|
+
- generic [ref=e32]: "6"
|
|
26
|
+
- button "New Religious Movements 10" [ref=e33] [cursor=pointer]:
|
|
27
|
+
- generic [ref=e35]: New Religious Movements
|
|
28
|
+
- generic [ref=e36]: "10"
|
|
29
|
+
- generic [ref=e37]:
|
|
30
|
+
- generic [ref=e38]: By Type
|
|
31
|
+
- button "Traditions 24" [ref=e39] [cursor=pointer]:
|
|
32
|
+
- generic [ref=e41]: Traditions
|
|
33
|
+
- generic [ref=e42]: "24"
|
|
34
|
+
- button "Concepts 26" [ref=e43] [cursor=pointer]:
|
|
35
|
+
- generic [ref=e45]: Concepts
|
|
36
|
+
- generic [ref=e46]: "26"
|
|
37
|
+
- button "Figures 14" [ref=e47] [cursor=pointer]:
|
|
38
|
+
- generic [ref=e49]: Figures
|
|
39
|
+
- generic [ref=e50]: "14"
|
|
40
|
+
- button "Texts 13" [ref=e51] [cursor=pointer]:
|
|
41
|
+
- generic [ref=e53]: Texts
|
|
42
|
+
- generic [ref=e54]: "13"
|
|
43
|
+
- button "Practices 9" [ref=e55] [cursor=pointer]:
|
|
44
|
+
- generic [ref=e57]: Practices
|
|
45
|
+
- generic [ref=e58]: "9"
|
|
46
|
+
- button "Schools 18" [ref=e59] [cursor=pointer]:
|
|
47
|
+
- generic [ref=e61]: Schools
|
|
48
|
+
- generic [ref=e62]: "18"
|
|
49
|
+
- button "Themes 9" [ref=e63] [cursor=pointer]:
|
|
50
|
+
- generic [ref=e65]: Themes
|
|
51
|
+
- generic [ref=e66]: "9"
|
|
52
|
+
- button "Maps of Content 7" [ref=e67] [cursor=pointer]:
|
|
53
|
+
- generic [ref=e69]: Maps of Content
|
|
54
|
+
- generic [ref=e70]: "7"
|
|
55
|
+
- generic [ref=e71]: Powered by Parachute Vault
|
|
56
|
+
- generic [ref=e72]:
|
|
57
|
+
- img [ref=e73]:
|
|
58
|
+
- generic [ref=e1286]:
|
|
59
|
+
- generic: Abrahamic
|
|
60
|
+
- generic: Judaism
|
|
61
|
+
- generic: Christianity
|
|
62
|
+
- generic: Islam
|
|
63
|
+
- generic: Bahá'í Faith
|
|
64
|
+
- generic: Mormonism
|
|
65
|
+
- generic: Rastafari
|
|
66
|
+
- generic: Unitarian Universalism
|
|
67
|
+
- generic:
|
|
68
|
+
- generic: 119 notes
|
|
69
|
+
- generic: 711 connections
|
|
70
|
+
- generic: "filtered: family/abrahamic"
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
- generic [ref=e3]:
|
|
2
|
+
- generic [ref=e4]:
|
|
3
|
+
- generic [ref=e5]:
|
|
4
|
+
- heading "Religions of the World" [level=1] [ref=e6]
|
|
5
|
+
- paragraph [ref=e7]: Knowledge Graph
|
|
6
|
+
- textbox "Search notes..." [ref=e9]
|
|
7
|
+
- generic [ref=e10]:
|
|
8
|
+
- generic [ref=e11]:
|
|
9
|
+
- generic [ref=e12]: By Family
|
|
10
|
+
- button "Abrahamic 39" [ref=e13] [cursor=pointer]:
|
|
11
|
+
- generic [ref=e15]: Abrahamic
|
|
12
|
+
- generic [ref=e16]: "39"
|
|
13
|
+
- button "Dharmic 39" [ref=e17] [cursor=pointer]:
|
|
14
|
+
- generic [ref=e19]: Dharmic
|
|
15
|
+
- generic [ref=e20]: "39"
|
|
16
|
+
- button "East Asian 21" [ref=e21] [cursor=pointer]:
|
|
17
|
+
- generic [ref=e23]: East Asian
|
|
18
|
+
- generic [ref=e24]: "21"
|
|
19
|
+
- button "Iranian 6" [ref=e25] [cursor=pointer]:
|
|
20
|
+
- generic [ref=e27]: Iranian
|
|
21
|
+
- generic [ref=e28]: "6"
|
|
22
|
+
- button "Indigenous 6" [ref=e29] [cursor=pointer]:
|
|
23
|
+
- generic [ref=e31]: Indigenous
|
|
24
|
+
- generic [ref=e32]: "6"
|
|
25
|
+
- button "New Religious Movements 10" [ref=e33] [cursor=pointer]:
|
|
26
|
+
- generic [ref=e35]: New Religious Movements
|
|
27
|
+
- generic [ref=e36]: "10"
|
|
28
|
+
- generic [ref=e37]:
|
|
29
|
+
- generic [ref=e38]: By Type
|
|
30
|
+
- button "Traditions 24" [ref=e39] [cursor=pointer]:
|
|
31
|
+
- generic [ref=e41]: Traditions
|
|
32
|
+
- generic [ref=e42]: "24"
|
|
33
|
+
- button "Concepts 26" [ref=e43] [cursor=pointer]:
|
|
34
|
+
- generic [ref=e45]: Concepts
|
|
35
|
+
- generic [ref=e46]: "26"
|
|
36
|
+
- button "Figures 14" [ref=e47] [cursor=pointer]:
|
|
37
|
+
- generic [ref=e49]: Figures
|
|
38
|
+
- generic [ref=e50]: "14"
|
|
39
|
+
- button "Texts 13" [ref=e51] [cursor=pointer]:
|
|
40
|
+
- generic [ref=e53]: Texts
|
|
41
|
+
- generic [ref=e54]: "13"
|
|
42
|
+
- button "Practices 9" [ref=e55] [cursor=pointer]:
|
|
43
|
+
- generic [ref=e57]: Practices
|
|
44
|
+
- generic [ref=e58]: "9"
|
|
45
|
+
- button "Schools 18" [ref=e59] [cursor=pointer]:
|
|
46
|
+
- generic [ref=e61]: Schools
|
|
47
|
+
- generic [ref=e62]: "18"
|
|
48
|
+
- button "Themes 9" [ref=e63] [cursor=pointer]:
|
|
49
|
+
- generic [ref=e65]: Themes
|
|
50
|
+
- generic [ref=e66]: "9"
|
|
51
|
+
- button "Maps of Content 7" [ref=e67] [cursor=pointer]:
|
|
52
|
+
- generic [ref=e69]: Maps of Content
|
|
53
|
+
- generic [ref=e70]: "7"
|
|
54
|
+
- generic [ref=e71]: Powered by Parachute Vault
|
|
55
|
+
- generic [ref=e72]:
|
|
56
|
+
- img [ref=e73]
|
|
57
|
+
- generic:
|
|
58
|
+
- generic: 119 notes
|
|
59
|
+
- generic: 711 connections
|
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Parachute Vault
|
|
2
|
+
|
|
3
|
+
Agent-native knowledge graph. Notes, tags, links over MCP. Self-hosted, one command setup.
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
parachute vault init → ~/.parachute/ (config, .env, daemon, MCP)
|
|
9
|
+
parachute vault create → new vault (SQLite DB + vault.yaml + API key)
|
|
10
|
+
parachute vault config → manage env vars (PORT, etc.)
|
|
11
|
+
parachute vault keys → list / create / revoke API keys
|
|
12
|
+
|
|
13
|
+
CLI → Bun server (port 1940) → multiple vaults (each its own SQLite DB)
|
|
14
|
+
↑
|
|
15
|
+
Any AI → MCP (stdio or HTTP) ─────────┘
|
|
16
|
+
Phone → REST API ──────────────────┘
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Packages
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
core/ — TypeScript library: schema, store, MCP tools, wikilinks, paths (bun:sqlite)
|
|
23
|
+
src/ — Bun CLI + server + MCP + webhook triggers
|
|
24
|
+
deploy/ — systemd unit, Dockerfile, docker-compose, fly.toml, railway.json
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Data Model
|
|
28
|
+
|
|
29
|
+
Five core tables per vault. Vaults start blank — no predefined tags or schema. Clients create the tags they need.
|
|
30
|
+
|
|
31
|
+
```sql
|
|
32
|
+
notes (id, content, path, metadata, created_at, updated_at)
|
|
33
|
+
tags (name)
|
|
34
|
+
note_tags (note_id, tag_name)
|
|
35
|
+
attachments (id, note_id, path, mime_type, metadata, created_at)
|
|
36
|
+
links (source_id, target_id, relationship, metadata, created_at)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Additional tables:
|
|
40
|
+
- `tag_schemas` — tag description + metadata field definitions (JSON)
|
|
41
|
+
- `unresolved_wikilinks` — pending wikilink resolution
|
|
42
|
+
- `schema_version` — migration tracking
|
|
43
|
+
|
|
44
|
+
Metadata is a JSON column on notes, links, and attachments. Queryable via `json_extract()`.
|
|
45
|
+
|
|
46
|
+
Path is unique (when set), normalized (no .md, no trailing slashes), and used for wikilink resolution.
|
|
47
|
+
|
|
48
|
+
### MCP Tools (9)
|
|
49
|
+
|
|
50
|
+
Notes: `query-notes` (single by ID/path, filter, search, graph neighborhood), `create-note` (single or batch), `update-note` (single or batch — content, tags, links, metadata merge), `delete-note`
|
|
51
|
+
|
|
52
|
+
Tags: `list-tags` (with optional schema detail), `update-tag` (upsert schema), `delete-tag`
|
|
53
|
+
|
|
54
|
+
Graph: `find-path` (BFS shortest path)
|
|
55
|
+
|
|
56
|
+
Vault: `vault-info` (get/update description + stats)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
## Bun-native
|
|
60
|
+
|
|
61
|
+
Use Bun for everything. No Node.js.
|
|
62
|
+
|
|
63
|
+
- `Bun.serve()` for HTTP server
|
|
64
|
+
- `bun:sqlite` for SQLite
|
|
65
|
+
- `Bun.$` for shell commands
|
|
66
|
+
- `bun test` for tests
|
|
67
|
+
|
|
68
|
+
## Key design decisions
|
|
69
|
+
|
|
70
|
+
- **Bare primitives**: Vault has no opinions about tags or conventions. It's the engine, not the schema. Clients (parachute-daily, etc.) bring their own tag schema.
|
|
71
|
+
- **Multi-vault**: One server hosts many vaults. Each vault = own SQLite DB + config + API keys.
|
|
72
|
+
- **Per-vault MCP descriptions**: vault.yaml is sent as MCP server instruction at session start. The vault teaches the AI how to use it.
|
|
73
|
+
- **Wikilink auto-linking**: `[[wikilinks]]` in note content are automatically parsed and maintained as links. Unresolved links auto-resolve when target notes are created.
|
|
74
|
+
- **Path normalization**: Paths are normalized on write (strip .md, collapse slashes, trim). UNIQUE constraint enforced. Rename cascading updates wikilinks in other notes.
|
|
75
|
+
- **Obsidian interop**: Import/export preserves frontmatter, tags, wikilinks, and file paths.
|
|
76
|
+
- **Unified config**: All env vars in `~/.parachute/.env` (or `$PARACHUTE_HOME/.env` in Docker).
|
|
77
|
+
- **Docker-friendly**: `PARACHUTE_HOME` env var overrides data directory. Server auto-creates default vault on first run.
|
|
78
|
+
|
|
79
|
+
## Config
|
|
80
|
+
|
|
81
|
+
All configuration in `~/.parachute/.env`:
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
PORT=1940
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Naming
|
|
88
|
+
|
|
89
|
+
- Domain: `parachute.computer`
|
|
90
|
+
- Package ID: `computer.parachute.vault`
|
|
91
|
+
- npm scope: `@openparachute/`
|
|
92
|
+
- Launchd label: `computer.parachute.vault`
|
|
93
|
+
|
|
94
|
+
## Running
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
bun src/cli.ts vault init # setup everything
|
|
98
|
+
bun src/cli.ts vault status # check status
|
|
99
|
+
bun src/cli.ts vault config # view/edit config
|
|
100
|
+
bun src/cli.ts vault import <path> # import Obsidian vault
|
|
101
|
+
bun src/cli.ts vault export <path> # export as Obsidian markdown
|
|
102
|
+
bun test src/ # run server tests
|
|
103
|
+
bun test core/src/ # run core tests
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Deployment
|
|
107
|
+
|
|
108
|
+
Self-hosted:
|
|
109
|
+
- **Mac**: `bun install && vault init` (launchd daemon, localhost)
|
|
110
|
+
- **VPS**: `docker compose up -d` (Hetzner, DigitalOcean, etc.)
|
|
111
|
+
- **Remote access**: Cloudflare Tunnel for HTTPS (`cloudflared tunnel --url http://localhost:1940`)
|
|
112
|
+
|
|
113
|
+
Hosted (future, issue #5):
|
|
114
|
+
- Cloudflare Workers + D1 + R2
|
|
115
|
+
- Requires async Store interface refactor
|
package/Caddyfile
ADDED
package/Dockerfile
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
FROM oven/bun:1.2-alpine AS base
|
|
2
|
+
WORKDIR /app
|
|
3
|
+
|
|
4
|
+
# Install deps
|
|
5
|
+
COPY package.json bun.lock ./
|
|
6
|
+
RUN bun install --frozen-lockfile --production
|
|
7
|
+
|
|
8
|
+
# Copy source
|
|
9
|
+
COPY core core
|
|
10
|
+
COPY src src
|
|
11
|
+
COPY bunfig.toml ./
|
|
12
|
+
|
|
13
|
+
# Data directory — mount a volume here for persistence
|
|
14
|
+
ENV PARACHUTE_HOME=/data
|
|
15
|
+
RUN mkdir -p /data
|
|
16
|
+
|
|
17
|
+
EXPOSE 1940
|
|
18
|
+
|
|
19
|
+
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s \
|
|
20
|
+
CMD wget -qO- http://localhost:1940/health || exit 1
|
|
21
|
+
|
|
22
|
+
CMD ["bun", "src/server.ts"]
|