virlow-mcp 3.18.0 → 3.68.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/LICENSE +8 -18
- package/README.md +46 -12
- package/dist/cli.js +2165 -179
- package/package.json +6 -6
package/LICENSE
CHANGED
|
@@ -1,21 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
Copyright (c) 2026 Bata Labs LLC. All rights reserved.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This software and its source code are proprietary and confidential.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
in
|
|
8
|
-
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
5
|
+
No license, express or implied, is granted to any person to use, copy,
|
|
6
|
+
modify, merge, publish, distribute, sublicense, or sell copies of this
|
|
7
|
+
software, in whole or in part, except under a separate written agreement
|
|
8
|
+
with Bata Labs LLC.
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
10
|
+
Unauthorized copying, distribution, or disclosure of this software is
|
|
11
|
+
prohibited.
|
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ entire time.
|
|
|
8
8
|
## What it is
|
|
9
9
|
|
|
10
10
|
virlow-mcp runs on your machine as a local process (`npx -y virlow-mcp`, launched by your
|
|
11
|
-
AI client over stdio). It exposes
|
|
11
|
+
AI client over stdio). It exposes 24 tools for three things:
|
|
12
12
|
|
|
13
13
|
- **Memories** — short, durable facts ("the user prefers TypeScript", "this repo's CI
|
|
14
14
|
runs on self-hosted runners") that any AI tool can add, search semantically, and recall
|
|
@@ -16,7 +16,20 @@ AI client over stdio). It exposes 19 tools for two things:
|
|
|
16
16
|
**Memories** folder, so you can read, edit, reorganise, and trash them in the Virlow
|
|
17
17
|
app like anything else you have written.
|
|
18
18
|
- **Notes** — full read/write access to your existing Virlow notes: search, list, read,
|
|
19
|
-
create, update, move, star, archive, and trash, plus folder management
|
|
19
|
+
create, update, move, star, archive, and trash, plus folder management and
|
|
20
|
+
`get_backlinks` (notes that link to a note, from encrypted link records). `update_note`
|
|
21
|
+
also accepts `props` (property id to typed value) and `aliases` (alternative titles a
|
|
22
|
+
note answers to when linked).
|
|
23
|
+
- **Properties**: typed fields on a folder's notes, the way a database column works:
|
|
24
|
+
`list_properties` reads a folder's definitions, `define_property` adds one (text, number,
|
|
25
|
+
select, multiSelect, date, checkbox, url, or relation), and `set_properties` sets values on
|
|
26
|
+
a note by property name, taking option names rather than ids. `list_folder_view` reads the
|
|
27
|
+
whole folder the way the app's table shows it, one row per note and one column per
|
|
28
|
+
property, with an optional `sortBy`; it answers "which of these is in review" or "what has
|
|
29
|
+
no owner" without reading a single note body. Definitions live in the folder's encrypted
|
|
30
|
+
schema and values in the note's encrypted attrs, so the server sees neither. Properties
|
|
31
|
+
ship in the Virlow app as of its epic 3, so what is written here is what the user sees in
|
|
32
|
+
the note, the table, the board and the calendar.
|
|
20
33
|
|
|
21
34
|
Everything is **end-to-end encrypted, zero-knowledge**: the encryption key is derived
|
|
22
35
|
from your Virlow master password inside this local process and never leaves it. Every
|
|
@@ -31,17 +44,17 @@ through a tool call, and never seen by the AI model.
|
|
|
31
44
|
### This is the local server, and that distinction is the whole security model
|
|
32
45
|
|
|
33
46
|
Every claim above is about **this package**, running on **your machine**. Virlow also
|
|
34
|
-
offers a **hosted connector
|
|
47
|
+
offers a **hosted connector**: the same 24 tools, served from Virlow's own servers, so a
|
|
35
48
|
client can connect by URL with nothing installed. It is a genuinely different trust model,
|
|
36
49
|
and the sentence "the key never leaves it" is the part that stops being true:
|
|
37
50
|
|
|
38
|
-
| | this local server | the hosted connector |
|
|
39
|
-
| --- | --- | --- |
|
|
40
|
-
| where the key is derived | this process, on your machine | Virlow's API process |
|
|
41
|
-
| who can read a decrypted note | this process | this process, and Virlow's server |
|
|
42
|
-
| what an unlock sends | nothing; the password stays local | your master password, over HTTPS |
|
|
43
|
-
| what it takes to run | Node on your machine | nothing |
|
|
44
|
-
| session lifetime | 4 hours idle | 30 minutes idle |
|
|
51
|
+
| | this local server | the desktop app | the hosted connector |
|
|
52
|
+
| --- | --- | --- | --- |
|
|
53
|
+
| where the key is derived | this process, on your machine | the Virlow app, on your machine | Virlow's API process |
|
|
54
|
+
| who can read a decrypted note | this process | the app's process | this process, and Virlow's server |
|
|
55
|
+
| what an unlock sends | nothing; the password stays local | nothing; the password stays local | your master password, over HTTPS |
|
|
56
|
+
| what it takes to run | Node on your machine | the installed app | nothing |
|
|
57
|
+
| session lifetime | 4 hours idle | follows the app's vault lock | 30 minutes idle |
|
|
45
58
|
|
|
46
59
|
The hosted connector is **off by default** on every account and has to be switched on in
|
|
47
60
|
Virlow's settings. If you are reading this page, you are looking at the option that keeps
|
|
@@ -122,6 +135,27 @@ Claude Desktop / Cursor:
|
|
|
122
135
|
}
|
|
123
136
|
```
|
|
124
137
|
|
|
138
|
+
### Connecting through the Virlow desktop app
|
|
139
|
+
|
|
140
|
+
If you run the [Virlow desktop app](../desktop/README.md), it already hosts this server
|
|
141
|
+
on your machine and unlocks with the app. Clients that can send a header connect to it
|
|
142
|
+
directly; the app shows the exact snippet under Settings, This computer. Clients that can
|
|
143
|
+
only spawn a command use this package as a pipe:
|
|
144
|
+
|
|
145
|
+
```json
|
|
146
|
+
{
|
|
147
|
+
"mcpServers": {
|
|
148
|
+
"virlow": {
|
|
149
|
+
"command": "npx",
|
|
150
|
+
"args": ["-y", "virlow-mcp", "--connect", "http://127.0.0.1:47821/mcp",
|
|
151
|
+
"--token-file", "<path the app shows you>"]
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
In this mode nothing is decrypted in this process. It forwards to the app and back.
|
|
158
|
+
|
|
125
159
|
## First use
|
|
126
160
|
|
|
127
161
|
1. Ask your AI client to run the **`unlock`** tool. This opens a browser window pointed
|
|
@@ -172,7 +206,7 @@ just give you two versions to keep in sync.
|
|
|
172
206
|
## Reaching your vault from a session that is not on this machine
|
|
173
207
|
|
|
174
208
|
By default `virlow-mcp` speaks stdio, so your AI client spawns it as a child
|
|
175
|
-
process and everything stays on one machine. `--http` serves the same
|
|
209
|
+
process and everything stays on one machine. `--http` serves the same 24 tools
|
|
176
210
|
over HTTP instead, so a client that cannot spawn a local process — a cloud
|
|
177
211
|
coding session, another laptop — can reach this vault:
|
|
178
212
|
|
|
@@ -266,7 +300,7 @@ npx -y virlow-mcp --no-memories
|
|
|
266
300
|
|
|
267
301
|
Use it when you want a connector that structurally cannot touch memories,
|
|
268
302
|
regardless of the account setting. Notes tools, `unlock`, `lock`, and `status`
|
|
269
|
-
are unaffected either way (
|
|
303
|
+
are unaffected either way (18 tools instead of 23).
|
|
270
304
|
|
|
271
305
|
## Suggested agent rules
|
|
272
306
|
|