@xdarkicex/openclaw-memory-libravdb 1.6.23 → 1.6.27
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/README.md +219 -38
- package/dist/context-engine.js +72 -8
- package/dist/identity.d.ts +10 -1
- package/dist/identity.js +20 -0
- package/dist/index.js +814 -136
- package/dist/libravdb-client.d.ts +3 -0
- package/dist/libravdb-client.js +12 -1
- package/dist/manifest.d.ts +46 -0
- package/dist/manifest.js +127 -0
- package/dist/markdown-ingest.js +14 -1
- package/dist/memory-runtime.js +12 -7
- package/dist/plugin-runtime.d.ts +1 -1
- package/dist/plugin-runtime.js +10 -3
- package/dist/types.d.ts +5 -0
- package/docs/README.md +4 -4
- package/docs/TLS_configuration.md +17 -17
- package/docs/architecture-decisions/adr-004-sidecar-over-native-ts.md +1 -1
- package/docs/architecture.md +8 -8
- package/docs/configuration.md +15 -15
- package/docs/contributing.md +5 -5
- package/docs/dependencies.md +1 -1
- package/docs/development.md +9 -9
- package/docs/embedding-profiles.md +13 -11
- package/docs/features.md +6 -6
- package/docs/install.md +19 -19
- package/docs/installation.md +33 -25
- package/docs/mTLS_configuration.md +2 -2
- package/docs/models.md +3 -3
- package/docs/performance-and-tuning.md +5 -5
- package/docs/problem.md +1 -1
- package/docs/security.md +4 -4
- package/docs/uninstall.md +5 -5
- package/openclaw.plugin.json +7 -2
- package/package.json +2 -2
package/docs/contributing.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Contributing
|
|
2
2
|
|
|
3
|
-
Use [Development](./development.md) for source setup, local
|
|
3
|
+
Use [Development](./development.md) for source setup, local vector service preparation,
|
|
4
4
|
generated IPC files, and validation commands. This document covers contribution
|
|
5
5
|
expectations.
|
|
6
6
|
|
|
@@ -13,11 +13,11 @@ pnpm check
|
|
|
13
13
|
npm run test:integration
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
-
Integration tests require a running
|
|
16
|
+
Integration tests require a running vector service or a prepared local vector service binary.
|
|
17
17
|
Use:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
bash scripts/build-
|
|
20
|
+
bash scripts/build-vector service.sh
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
## Behavioral Changes
|
|
@@ -28,8 +28,8 @@ regression.
|
|
|
28
28
|
|
|
29
29
|
## PR Expectations
|
|
30
30
|
|
|
31
|
-
- Keep plugin lifecycle and
|
|
31
|
+
- Keep plugin lifecycle and vector service lifecycle separate.
|
|
32
32
|
- Include focused docs updates for user-visible behavior or config changes.
|
|
33
33
|
- Keep internal design changes reflected in the appropriate design notes.
|
|
34
|
-
- Do not add install-time
|
|
34
|
+
- Do not add install-time vector service bootstrap to the npm/OpenClaw package without
|
|
35
35
|
documenting the security and distribution trade-off.
|
package/docs/dependencies.md
CHANGED
|
@@ -33,6 +33,6 @@ Slab-style raw-vector storage was selected because:
|
|
|
33
33
|
- collections grow in bursty append patterns
|
|
34
34
|
- compaction and search create pressure on allocation churn
|
|
35
35
|
|
|
36
|
-
The measured conclusion from the internal profiling pass was that slab-backed raw-vector storage was performance-competitive with the plain in-memory backend while making allocation behavior more predictable. The main trade-off is reserved-but-unused capacity, which is acceptable for this local
|
|
36
|
+
The measured conclusion from the internal profiling pass was that slab-backed raw-vector storage was performance-competitive with the plain in-memory backend while making allocation behavior more predictable. The main trade-off is reserved-but-unused capacity, which is acceptable for this local vector service workload.
|
|
37
37
|
|
|
38
38
|
The dependency is therefore justified by workload shape, not by novelty.
|
package/docs/development.md
CHANGED
|
@@ -8,9 +8,9 @@ installation, use [Install](./install.md).
|
|
|
8
8
|
- Node.js `>= 22`
|
|
9
9
|
- `pnpm`
|
|
10
10
|
- OpenClaw CLI for end-to-end plugin testing
|
|
11
|
-
- a published or locally built `libravdbd`
|
|
11
|
+
- a published or locally built `libravdbd` vector service for integration tests
|
|
12
12
|
|
|
13
|
-
Go is only required when building the
|
|
13
|
+
Go is only required when building the vector service from a local vector service checkout or
|
|
14
14
|
regenerating Go gRPC stubs.
|
|
15
15
|
|
|
16
16
|
## Source Setup
|
|
@@ -29,19 +29,19 @@ pnpm run test:ts
|
|
|
29
29
|
|
|
30
30
|
## Local Daemon Build
|
|
31
31
|
|
|
32
|
-
Prepare `.
|
|
32
|
+
Prepare `.vector service-bin/libravdbd` for local plugin testing:
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
bash scripts/build-
|
|
35
|
+
bash scripts/build-vector service.sh
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
Supported inputs:
|
|
39
39
|
|
|
40
|
-
- installed
|
|
40
|
+
- installed vector service on `PATH`, such as `brew install libravdbd`
|
|
41
41
|
- `LIBRAVDBD_BINARY_PATH=/path/to/libravdbd`
|
|
42
|
-
- `LIBRAVDBD_SOURCE_DIR=/path/to/libravdbd` to build from a local
|
|
42
|
+
- `LIBRAVDBD_SOURCE_DIR=/path/to/libravdbd` to build from a local vector service repo
|
|
43
43
|
|
|
44
|
-
For
|
|
44
|
+
For vector service-internal Go development and release work, use the separate
|
|
45
45
|
`libravdbd` repository.
|
|
46
46
|
|
|
47
47
|
## Validation Commands
|
|
@@ -96,7 +96,7 @@ The npm package contains:
|
|
|
96
96
|
- `dist/`
|
|
97
97
|
|
|
98
98
|
The package is connect-only. It does not compile Go code, download models, or
|
|
99
|
-
manage the
|
|
99
|
+
manage the vector service process during plugin installation.
|
|
100
100
|
|
|
101
101
|
## Release Automation
|
|
102
102
|
|
|
@@ -113,5 +113,5 @@ label. The workflow auto-bumps, tags, and publishes.
|
|
|
113
113
|
|
|
114
114
|
## Auto-Install Script
|
|
115
115
|
|
|
116
|
-
`scripts/auto-install.sh` automates
|
|
116
|
+
`scripts/auto-install.sh` automates vector service + plugin installation. Run it when
|
|
117
117
|
setting up a machine that needs the full stack quickly.
|
|
@@ -9,7 +9,8 @@ Default selection baseline:
|
|
|
9
9
|
|
|
10
10
|
Why:
|
|
11
11
|
|
|
12
|
-
-
|
|
12
|
+
- GGUF is the recommended default and preferred backend for local embedding. It delivers Matryoshka-trained `nomic-embed-text-v1.5` embeddings with no ONNX Runtime dependency and hardware-native acceleration on Apple Silicon (Metal), NVIDIA (CUDA), and CPU.
|
|
13
|
+
- `bundled` uses the ONNX build of `nomic-embed-text-v1.5` and is the full-featured fallback when GGUF is unavailable.
|
|
13
14
|
- bge-small-en-v1.5 is the fallback for resource-constrained systems and is automatically selected when the primary model's dimensions do not match the active collection.
|
|
14
15
|
- Intel Macs without reliable Metal/MPS support should set `onnxDevice: "cpu"` to force CPU ONNX execution and bypass CoreML.
|
|
15
16
|
|
|
@@ -32,39 +33,40 @@ How it works:
|
|
|
32
33
|
- `embeddingProfile` supplies metadata defaults like family, dimensions, and normalize behavior.
|
|
33
34
|
- `onnx-local` still requires local model assets through `embeddingModelPath`, typically a directory containing `embedding.json`.
|
|
34
35
|
- The manifest may override or refine the profile, but explicit dimension mismatches fail closed.
|
|
35
|
-
- The
|
|
36
|
-
- `onnxDevice` is passed through as `LIBRAVDB_ONNX_DEVICE` for
|
|
36
|
+
- The vector service store persists an embedding fingerprint, so reopening an existing store with a different effective model profile will fail instead of silently mixing vector spaces.
|
|
37
|
+
- `onnxDevice` is passed through as `LIBRAVDB_ONNX_DEVICE` for vector service versions that support execution-provider selection (`auto`, `cpu` (default), `cuda`, `coreml`, `directml`, `openvino`).
|
|
37
38
|
|
|
38
39
|
## Store Compatibility and Upgrades
|
|
39
40
|
|
|
40
41
|
The persisted embedding fingerprint is part of the database compatibility check.
|
|
41
|
-
That is intentional: if a
|
|
42
|
+
That is intentional: if a vector service opens a store with a different effective model
|
|
42
43
|
profile, the safest outcome is to stop before mixing vector spaces.
|
|
43
44
|
|
|
44
45
|
When updating `libravdbd`, keep the same effective embedding profile unless you
|
|
45
46
|
intend to rebuild the store. The effective profile includes the profile family,
|
|
46
47
|
dimensions, normalization setting, and any metadata supplied by the model
|
|
47
|
-
manifest or
|
|
48
|
+
manifest or vector service defaults.
|
|
48
49
|
|
|
49
50
|
Legacy local setups can be more fragile than the current packaged profiles. For
|
|
50
|
-
example, older `all-minilm-l6-v2` stores may fail to reopen after a
|
|
51
|
-
if the
|
|
51
|
+
example, older `all-minilm-l6-v2` stores may fail to reopen after a vector service update
|
|
52
|
+
if the vector service now computes different metadata for that local profile. This does
|
|
52
53
|
not imply that current packaged `nomic-embed-text-v1.5` or
|
|
53
54
|
`bge-small-en-v1.5` stores are incompatible; it means the old local profile must
|
|
54
55
|
be treated as a separate vector space unless a migration path is provided.
|
|
55
56
|
|
|
56
|
-
If a
|
|
57
|
+
If a vector service update reports that the database format or embedding profile is
|
|
57
58
|
incompatible:
|
|
58
59
|
|
|
59
60
|
1. back up both the `.libravdb` file and its `.embedding.json` metadata file;
|
|
60
|
-
2. either downgrade to the previous
|
|
61
|
-
old store aside and let the new
|
|
61
|
+
2. either downgrade to the previous vector service that created the store, or move the
|
|
62
|
+
old store aside and let the new vector service initialize a fresh database;
|
|
62
63
|
3. rebuild/reingest memories with the new effective embedding profile.
|
|
63
64
|
|
|
64
65
|
Do not delete the old store until the replacement has been verified.
|
|
65
66
|
|
|
66
67
|
Recommended usage:
|
|
67
68
|
|
|
68
|
-
- `
|
|
69
|
+
- `gguf` for the recommended local embedding path, using `nomic-embed-text-v1.5` with hardware-native acceleration and no ONNX Runtime dependency.
|
|
70
|
+
- `bundled` for the ONNX build of `nomic-embed-text-v1.5` when GGUF is unavailable.
|
|
69
71
|
- `onnx-local` plus `embeddingProfile` when a power user wants a known model family with local assets.
|
|
70
72
|
- treat remote/Ollama providers as future separate backend types, not as overloads of `custom-local`.
|
package/docs/features.md
CHANGED
|
@@ -7,7 +7,7 @@ commands.
|
|
|
7
7
|
## Markdown Ingestion
|
|
8
8
|
|
|
9
9
|
LibraVDB Memory can watch markdown roots and sync changed notes into vector
|
|
10
|
-
memory without changing the
|
|
10
|
+
memory without changing the vector service gRPC interface.
|
|
11
11
|
|
|
12
12
|
The built-in source adapters are:
|
|
13
13
|
|
|
@@ -78,7 +78,7 @@ Each promoted bullet should include trailing metadata with the gating fields:
|
|
|
78
78
|
- Preserve the recent tail buffer {score=0.82 recall=3 unique=2}
|
|
79
79
|
```
|
|
80
80
|
|
|
81
|
-
Only bullets that satisfy the
|
|
81
|
+
Only bullets that satisfy the vector service gates are inserted. The dream collection
|
|
82
82
|
is isolated from normal `user:` and `global` retrieval by default, and dream
|
|
83
83
|
phrasing in chat or search queries routes there automatically.
|
|
84
84
|
|
|
@@ -109,7 +109,7 @@ openclaw memory dream-promote --user-id <userId> --dream-file ~/DREAMS.md
|
|
|
109
109
|
```
|
|
110
110
|
|
|
111
111
|
Dream diary files must live under the operator's home directory or the configured
|
|
112
|
-
`OPENCLAW_STATE_DIR`. The manual command and watcher both use the same
|
|
112
|
+
`OPENCLAW_STATE_DIR`. The manual command and watcher both use the same vector service
|
|
113
113
|
promotion RPC, so admission gates and provenance metadata are identical.
|
|
114
114
|
|
|
115
115
|
## Memory CLI
|
|
@@ -119,14 +119,14 @@ CLI API.
|
|
|
119
119
|
|
|
120
120
|
| Command | Purpose |
|
|
121
121
|
|---|---|
|
|
122
|
-
| `openclaw memory status` | Show
|
|
123
|
-
| `openclaw memory index --force` | Refresh delegated
|
|
122
|
+
| `openclaw memory status` | Show vector service health, counts, active thresholds, and model readiness. Use `--deep` to probe authored collection search health. |
|
|
123
|
+
| `openclaw memory index --force` | Refresh delegated vector service index state for OpenClaw memory CLI compatibility. |
|
|
124
124
|
| `openclaw memory search "query"` | Search LibraVDB memory through the active memory runtime bridge. |
|
|
125
125
|
| `openclaw memory export --user-id <userId>` | Stream stored memories as newline-delimited JSON for one durable namespace. |
|
|
126
126
|
| `openclaw memory export --session-key <sessionKey>` | Export a namespace derived from a session key. |
|
|
127
127
|
| `openclaw memory flush --user-id <userId>` | Delete one durable user namespace after confirmation. |
|
|
128
128
|
| `openclaw memory flush --session-key <sessionKey>` | Delete a namespace derived from a session key after confirmation. |
|
|
129
|
-
| `openclaw memory journal --limit 50` | Inspect bounded lifecycle hints recorded by the
|
|
129
|
+
| `openclaw memory journal --limit 50` | Inspect bounded lifecycle hints recorded by the vector service. |
|
|
130
130
|
| `openclaw memory dream-promote --user-id <userId> --dream-file <path>` | Promote vetted dream diary bullets from a file under the operator home directory or `OPENCLAW_STATE_DIR`. |
|
|
131
131
|
|
|
132
132
|
Use `--yes` with `flush` only when you intentionally want to skip the
|
package/docs/install.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
LibraVDB Memory is a connect-only OpenClaw plugin. Install the plugin as a
|
|
4
4
|
normal package, install `libravdbd` separately, and point the plugin at the
|
|
5
|
-
|
|
5
|
+
vector service endpoint when you need a non-default location.
|
|
6
6
|
|
|
7
7
|
OpenClaw compatibility note:
|
|
8
8
|
|
|
9
|
-
- the plugin is currently verified against OpenClaw `2026.
|
|
9
|
+
- the plugin is currently verified against OpenClaw `2026.5.22`
|
|
10
10
|
|
|
11
11
|
For deeper operational detail, use the full
|
|
12
12
|
[installation reference](./installation.md).
|
|
@@ -26,7 +26,7 @@ This gives you:
|
|
|
26
26
|
|
|
27
27
|
- a managed `libravdbd` service
|
|
28
28
|
- a scanner-clean plugin install
|
|
29
|
-
- a clean separation between plugin lifecycle and
|
|
29
|
+
- a clean separation between plugin lifecycle and vector service lifecycle
|
|
30
30
|
|
|
31
31
|
## Plugin Install
|
|
32
32
|
|
|
@@ -53,7 +53,7 @@ Activate the plugin in `~/.openclaw/openclaw.json`:
|
|
|
53
53
|
}
|
|
54
54
|
```
|
|
55
55
|
|
|
56
|
-
If you run the
|
|
56
|
+
If you run the vector service on a non-default endpoint, add a plugin config:
|
|
57
57
|
|
|
58
58
|
```json
|
|
59
59
|
{
|
|
@@ -76,15 +76,15 @@ If you run the daemon on a non-default endpoint, add a plugin config:
|
|
|
76
76
|
|
|
77
77
|
When `sidecarPath` is set to `"auto"`, the plugin resolves endpoints in this order on macOS/Linux:
|
|
78
78
|
|
|
79
|
-
1. `LIBRAVDB_GRPC_ENDPOINT` if it is set to a valid
|
|
79
|
+
1. `LIBRAVDB_GRPC_ENDPOINT` if it is set to a valid vector service endpoint
|
|
80
80
|
2. `$HOME/.libravdbd/run/libravdb.sock` if it exists
|
|
81
81
|
3. `/opt/homebrew/var/libravdbd/run/libravdb.sock` if it exists
|
|
82
82
|
4. `/usr/local/var/libravdbd/run/libravdb.sock` if it exists
|
|
83
83
|
5. fallback to `$HOME/.libravdbd/run/libravdb.sock`
|
|
84
84
|
|
|
85
|
-
##
|
|
85
|
+
## Vector Service Install
|
|
86
86
|
|
|
87
|
-
The
|
|
87
|
+
The vector service owns the local database, embeddings, and gRPC endpoint.
|
|
88
88
|
|
|
89
89
|
Default endpoints:
|
|
90
90
|
|
|
@@ -100,7 +100,7 @@ Default data path:
|
|
|
100
100
|
|
|
101
101
|
### Homebrew
|
|
102
102
|
|
|
103
|
-
Homebrew is the preferred
|
|
103
|
+
Homebrew is the preferred vector service lifecycle on macOS:
|
|
104
104
|
|
|
105
105
|
```bash
|
|
106
106
|
brew tap xDarkicex/homebrew-openclaw-libravdb-memory
|
|
@@ -118,7 +118,7 @@ brew info libravdbd
|
|
|
118
118
|
|
|
119
119
|
### Manual Service Management
|
|
120
120
|
|
|
121
|
-
If you are not using Homebrew, manage the
|
|
121
|
+
If you are not using Homebrew, manage the vector service explicitly.
|
|
122
122
|
|
|
123
123
|
Linux user service from the repo template:
|
|
124
124
|
|
|
@@ -146,7 +146,7 @@ Windows uses a loopback TCP endpoint by default:
|
|
|
146
146
|
- `tcp:127.0.0.1:37421`
|
|
147
147
|
|
|
148
148
|
This guide does not yet include a full Windows service-install walkthrough.
|
|
149
|
-
For now, use the published Windows
|
|
149
|
+
For now, use the published Windows vector service asset from the GitHub releases page
|
|
150
150
|
and run it under your preferred process supervisor or a manual terminal session.
|
|
151
151
|
|
|
152
152
|
Foreground manual run:
|
|
@@ -161,11 +161,11 @@ you wrap it in `brew services`, `systemd`, or `launchd`.
|
|
|
161
161
|
### Containers and Docker
|
|
162
162
|
|
|
163
163
|
The npm plugin does not start `libravdbd`. In a container, either run a separate
|
|
164
|
-
|
|
164
|
+
vector service or use a small entrypoint wrapper that starts the vector service before
|
|
165
165
|
the OpenClaw gateway.
|
|
166
166
|
|
|
167
|
-
Keep the
|
|
168
|
-
|
|
167
|
+
Keep the vector service assets and database in a mounted volume and point both the
|
|
168
|
+
vector service and plugin at paths inside the container:
|
|
169
169
|
|
|
170
170
|
```sh
|
|
171
171
|
export LIBRAVDB_GRPC_ENDPOINT=unix:/home/node/.openclaw/libravdbd/run/libravdb.sock
|
|
@@ -223,19 +223,19 @@ store directly. The context engine can still use LibraVDB for recall while
|
|
|
223
223
|
- Update it with your normal OpenClaw plugin update flow.
|
|
224
224
|
- Disable it by removing the slot assignment from `~/.openclaw/openclaw.json`.
|
|
225
225
|
|
|
226
|
-
The plugin does not manage the
|
|
227
|
-
|
|
226
|
+
The plugin does not manage the vector service process. Treat plugin activation and
|
|
227
|
+
vector service supervision as separate lifecycle decisions.
|
|
228
228
|
|
|
229
229
|
### Daemon Lifecycle
|
|
230
230
|
|
|
231
231
|
- Start it with `brew services`, `systemd --user`, `launchctl bootstrap`, or a manual `libravdbd serve`.
|
|
232
|
-
- Restart it when you change
|
|
232
|
+
- Restart it when you change vector service-level environment variables or replace the binary.
|
|
233
233
|
- Stop it before uninstalling or deleting on-disk data.
|
|
234
234
|
- Point the plugin at the correct endpoint with `sidecarPath` if you do not use the default location.
|
|
235
235
|
|
|
236
236
|
## Verification
|
|
237
237
|
|
|
238
|
-
After the plugin and
|
|
238
|
+
After the plugin and vector service are both in place, run:
|
|
239
239
|
|
|
240
240
|
```bash
|
|
241
241
|
openclaw memory status
|
|
@@ -243,11 +243,11 @@ openclaw memory status
|
|
|
243
243
|
|
|
244
244
|
Healthy output should show that:
|
|
245
245
|
|
|
246
|
-
- the
|
|
246
|
+
- the vector service answered the local health check
|
|
247
247
|
- the memory and context-engine slots are active
|
|
248
248
|
- the plugin can read stored counts and runtime settings
|
|
249
249
|
|
|
250
|
-
If OpenClaw cannot reach the
|
|
250
|
+
If OpenClaw cannot reach the vector service, verify the endpoint first:
|
|
251
251
|
|
|
252
252
|
- macOS/Linux default: `unix:$HOME/.libravdbd/run/libravdb.sock`
|
|
253
253
|
- Windows default: `tcp:127.0.0.1:37421`
|
package/docs/installation.md
CHANGED
|
@@ -10,23 +10,23 @@ This is the full installation reference for
|
|
|
10
10
|
|---|---:|---|
|
|
11
11
|
| Node.js | `22.0.0` | Enforced by `package.json` `engines.node`. |
|
|
12
12
|
| OpenClaw | `2026.3.22` | Earliest supported host version for this plugin API shape. |
|
|
13
|
-
| `libravdbd` | published
|
|
14
|
-
| Go | `1.22` | Required only for local
|
|
13
|
+
| `libravdbd` | published vector service asset | Required for normal runtime. |
|
|
14
|
+
| Go | `1.22` | Required only for local vector service development. |
|
|
15
15
|
| OS | macOS, Linux, Windows | Unix uses a local socket; Windows uses TCP loopback. |
|
|
16
|
-
| Architecture | `arm64`, `x64` | Must match the
|
|
16
|
+
| Architecture | `arm64`, `x64` | Must match the vector service release asset. |
|
|
17
17
|
|
|
18
18
|
Resource sizing and benchmark data live in
|
|
19
19
|
[Performance and tuning](./performance-and-tuning.md).
|
|
20
20
|
|
|
21
21
|
OpenClaw compatibility note:
|
|
22
22
|
|
|
23
|
-
- the plugin is currently verified against OpenClaw `2026.
|
|
23
|
+
- the plugin is currently verified against OpenClaw `2026.5.22`
|
|
24
24
|
|
|
25
25
|
## Install Flow
|
|
26
26
|
|
|
27
27
|
The published plugin package is connect-only. It installs TypeScript plugin code
|
|
28
28
|
and docs; it does not compile Go code, download model assets, or supervise the
|
|
29
|
-
|
|
29
|
+
vector service.
|
|
30
30
|
|
|
31
31
|
Recommended macOS path:
|
|
32
32
|
|
|
@@ -55,7 +55,7 @@ tcp:127.0.0.1:37421
|
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
This repository does not yet include a full Windows service-install walkthrough.
|
|
58
|
-
Use the published Windows
|
|
58
|
+
Use the published Windows vector service asset under your preferred process supervisor
|
|
59
59
|
or run `libravdbd serve` in a terminal for validation.
|
|
60
60
|
|
|
61
61
|
## Activation
|
|
@@ -77,7 +77,7 @@ The memory slot owns `openclaw memory ...` and memory-runtime calls. The
|
|
|
77
77
|
context-engine slot enables automatic bootstrap, ingest, after-turn, and recall
|
|
78
78
|
hooks during sessions.
|
|
79
79
|
|
|
80
|
-
If the
|
|
80
|
+
If the vector service uses a non-default endpoint, add `sidecarPath`:
|
|
81
81
|
|
|
82
82
|
```json
|
|
83
83
|
{
|
|
@@ -122,7 +122,7 @@ $HOME/.libravdbd/data_nomic-embed-text-v1_5.libravdb
|
|
|
122
122
|
|
|
123
123
|
## Container Layout
|
|
124
124
|
|
|
125
|
-
In Docker, keep the
|
|
125
|
+
In Docker, keep the vector service, model assets, socket, logs, and database in the
|
|
126
126
|
same mounted OpenClaw state volume. A typical container-side layout is:
|
|
127
127
|
|
|
128
128
|
```text
|
|
@@ -133,7 +133,7 @@ same mounted OpenClaw state volume. A typical container-side layout is:
|
|
|
133
133
|
/home/node/.openclaw/libravdbd/models/nomic-embed-text-v1.5/embedding.json
|
|
134
134
|
```
|
|
135
135
|
|
|
136
|
-
Start the
|
|
136
|
+
Start the vector service with explicit local ONNX paths before starting the gateway:
|
|
137
137
|
|
|
138
138
|
```sh
|
|
139
139
|
LIBRAVDB_GRPC_ENDPOINT=unix:/home/node/.openclaw/libravdbd/run/libravdb.sock \
|
|
@@ -171,7 +171,7 @@ Then configure the plugin with the same socket and asset paths:
|
|
|
171
171
|
|
|
172
172
|
Do not let a container initialize a database with deterministic fallback
|
|
173
173
|
embeddings and later switch the same file to ONNX embeddings. Move the fallback
|
|
174
|
-
database aside first, then let the
|
|
174
|
+
database aside first, then let the vector service create a fresh ONNX-backed store.
|
|
175
175
|
|
|
176
176
|
## Verification
|
|
177
177
|
|
|
@@ -185,7 +185,7 @@ Expected output shape:
|
|
|
185
185
|
|
|
186
186
|
```text
|
|
187
187
|
┌────────────────────┬──────────────────────────────┐
|
|
188
|
-
│
|
|
188
|
+
│ Daemon │ running │
|
|
189
189
|
│ Turns stored │ 0 │
|
|
190
190
|
│ Memories stored │ 0 │
|
|
191
191
|
│ Lifecycle hints │ 0 │
|
|
@@ -198,7 +198,7 @@ Expected output shape:
|
|
|
198
198
|
|
|
199
199
|
Interpretation:
|
|
200
200
|
|
|
201
|
-
- `
|
|
201
|
+
- `Daemon=running` means the vector service answered the health check.
|
|
202
202
|
- `Gate threshold=0.35` confirms the default durable-memory gate.
|
|
203
203
|
- `Abstractive model=not provisioned` is acceptable; compaction falls back to
|
|
204
204
|
the extractive path.
|
|
@@ -216,7 +216,7 @@ Common causes:
|
|
|
216
216
|
- `embeddingBackend` is set to `onnx-local` but `embeddingRuntimePath` or
|
|
217
217
|
`embeddingModelPath` is missing from plugin config
|
|
218
218
|
|
|
219
|
-
Check the
|
|
219
|
+
Check the vector service first:
|
|
220
220
|
|
|
221
221
|
```bash
|
|
222
222
|
openclaw memory status
|
|
@@ -231,18 +231,26 @@ libravdbd serve
|
|
|
231
231
|
|
|
232
232
|
### Deterministic fallback embeddings
|
|
233
233
|
|
|
234
|
-
If
|
|
235
|
-
configured ONNX runtime or model
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
234
|
+
If the vector service falls back to deterministic embeddings, it could not locate
|
|
235
|
+
the configured ONNX runtime or model assets. The service will still run but all
|
|
236
|
+
embedding operations will fail until resolved.
|
|
237
|
+
|
|
238
|
+
To resolve: stop the vector service, then set `LIBRAVDB_ONNX_RUNTIME` to the
|
|
239
|
+
full path of the ONNX runtime library (e.g. `libonnxruntime.so` or
|
|
240
|
+
`libonnxruntime.dylib`) and `LIBRAVDB_EMBEDDING_MODEL` to the model directory
|
|
241
|
+
containing `embedding.json`. Verify the model directory also contains the
|
|
242
|
+
corresponding `.onnx` model file and `tokenizer.json`.
|
|
243
|
+
|
|
244
|
+
If a database was created while the service was in fallback mode, move that
|
|
245
|
+
`.libravdb` file and its adjacent `.embedding.json` aside before restarting —
|
|
246
|
+
a store initialized with deterministic embeddings is incompatible with ONNX-backed
|
|
247
|
+
operation.
|
|
240
248
|
|
|
241
249
|
### Incompatible database or embedding profile
|
|
242
250
|
|
|
243
|
-
If the
|
|
251
|
+
If the vector service exits with `database format is incompatible` or `database
|
|
244
252
|
embedding profile is incompatible`, it is refusing to open a store whose saved
|
|
245
|
-
format or embedding fingerprint differs from the current
|
|
253
|
+
format or embedding fingerprint differs from the current vector service settings. This
|
|
246
254
|
fail-closed behavior protects the store from mixing incompatible vector spaces.
|
|
247
255
|
|
|
248
256
|
Before changing anything, back up both files for the affected store:
|
|
@@ -252,12 +260,12 @@ Before changing anything, back up both files for the affected store:
|
|
|
252
260
|
|
|
253
261
|
Then choose one recovery path:
|
|
254
262
|
|
|
255
|
-
- downgrade to the
|
|
256
|
-
- move the old store aside, start the new
|
|
263
|
+
- downgrade to the vector service version that created the store; or
|
|
264
|
+
- move the old store aside, start the new vector service so it creates a fresh store,
|
|
257
265
|
and rebuild/reingest memories with the current embedding profile.
|
|
258
266
|
|
|
259
267
|
This can affect legacy local profiles such as older `all-minilm-l6-v2` setups
|
|
260
|
-
when
|
|
268
|
+
when vector service defaults or model metadata change across releases. It is not
|
|
261
269
|
expected for stores that stay on the current packaged profiles and assets. See
|
|
262
270
|
[Embedding Profiles](./embedding-profiles.md#store-compatibility-and-upgrades)
|
|
263
271
|
for more detail.
|
|
@@ -276,6 +284,6 @@ automatic session ingest and recall may not run.
|
|
|
276
284
|
|
|
277
285
|
### Lifecycle journal looks empty
|
|
278
286
|
|
|
279
|
-
The
|
|
287
|
+
The vector service journal only records advisory lifecycle hints such as `before_reset`
|
|
280
288
|
and `session_end`. It is bounded by `lifecycleJournalMaxEntries`, default `500`,
|
|
281
289
|
and is not part of normal memory recall.
|
|
@@ -6,7 +6,7 @@ The plugin supports mutual TLS (mTLS) for gRPC connections to the Vector Service
|
|
|
6
6
|
|
|
7
7
|
The Vector Service operator enables mTLS by configuring a client CA on the service side. When this is enabled, the Vector Service requires every connecting client to present a certificate signed by that CA. If the plugin is configured to use TLS but does not present a client certificate, the TLS handshake will fail and the connection will be rejected.
|
|
8
8
|
|
|
9
|
-
The plugin cannot detect whether the
|
|
9
|
+
The plugin cannot detect whether the vector service requires mTLS — it must be configured explicitly. If connections fail with a "client did not provide a certificate" error, the plugin likely needs a client certificate configured.
|
|
10
10
|
|
|
11
11
|
## Configuration fields
|
|
12
12
|
|
|
@@ -65,7 +65,7 @@ openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key \
|
|
|
65
65
|
-CAcreateserial -out client.crt -days 365
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
Replace `ca.crt` and `ca.key` with the CA certificate and key that the
|
|
68
|
+
Replace `ca.crt` and `ca.key` with the CA certificate and key that the vector service operator provided.
|
|
69
69
|
|
|
70
70
|
## Error reference
|
|
71
71
|
|
package/docs/models.md
CHANGED
|
@@ -8,7 +8,7 @@ available offline after assets are installed.
|
|
|
8
8
|
|
|
9
9
|
`assemble` runs before each response build. An embedding request that crosses a
|
|
10
10
|
process and HTTP server boundary adds avoidable tail latency. Local ONNX
|
|
11
|
-
inference inside the
|
|
11
|
+
inference inside the vector service keeps retrieval close to the database and avoids a
|
|
12
12
|
runtime dependency on a separate model server.
|
|
13
13
|
|
|
14
14
|
ONNX assets can be provisioned once and reused without network access. Given
|
|
@@ -23,7 +23,7 @@ latency and offline operation are part of the product contract.
|
|
|
23
23
|
The default profile is `nomic-embed-text-v1.5`. Nomic was chosen as the default
|
|
24
24
|
because its Matryoshka-trained embeddings deliver significantly higher retrieval
|
|
25
25
|
accuracy than MiniLM, with principled dimensionality tiering (`64d → 256d →
|
|
26
|
-
768d`) that lets the
|
|
26
|
+
768d`) that lets the vector service trade memory for precision without re-embedding.
|
|
27
27
|
|
|
28
28
|
`bge-small-en-v1.5` is the fallback profile. It has a smaller disk and memory
|
|
29
29
|
footprint than Nomic and is automatically selected when the primary model's
|
|
@@ -35,7 +35,7 @@ For exact profile metadata, read [Embedding profiles](./embedding-profiles.md).
|
|
|
35
35
|
## Summarization
|
|
36
36
|
|
|
37
37
|
Compaction can run without an abstractive summarizer. When the optional T5-small
|
|
38
|
-
assets are not provisioned, the
|
|
38
|
+
assets are not provisioned, the vector service degrades to the extractive path.
|
|
39
39
|
|
|
40
40
|
T5-small is the optional local abstractive summarizer because it is small enough
|
|
41
41
|
for CPU-local operation while still useful for session-cluster summaries. Larger
|
|
@@ -12,7 +12,7 @@ The numbers below are local measurements from this repository as of
|
|
|
12
12
|
|
|
13
13
|
Measured local asset sizes:
|
|
14
14
|
|
|
15
|
-
-
|
|
15
|
+
- vector service binary: `7.7M`
|
|
16
16
|
- bundled Nomic model directory: `523M`
|
|
17
17
|
- bundled MiniLM fallback model directory: `87M`
|
|
18
18
|
- optional T5 summarizer directory: `371M`
|
|
@@ -34,7 +34,7 @@ structure, and index state are stored as well.
|
|
|
34
34
|
|
|
35
35
|
### Memory
|
|
36
36
|
|
|
37
|
-
Measured on Apple M2 by starting the
|
|
37
|
+
Measured on Apple M2 by starting the vector service and reading RSS after startup:
|
|
38
38
|
|
|
39
39
|
- Nomic embedding path loaded without optional T5 summarizer: about `266 MB`
|
|
40
40
|
- Nomic plus local ONNX T5 summarizer loaded: about `503 MB`
|
|
@@ -89,7 +89,7 @@ are advanced controls, not required install settings.
|
|
|
89
89
|
| `compactionThresholdFraction` | Dynamic trigger ratio when `compactThreshold` is unset, default `0.8`. |
|
|
90
90
|
| `compactSessionTokenBudget` | Auto-compaction budget since the last compaction, default `2000`; set `0` to disable. |
|
|
91
91
|
| `rpcTimeoutMs` | Sidecar RPC timeout, default `30000`. |
|
|
92
|
-
| `maxRetries` | Retry budget for
|
|
92
|
+
| `maxRetries` | Retry budget for vector service RPC calls. |
|
|
93
93
|
| `logLevel` | Plugin log level. |
|
|
94
94
|
|
|
95
95
|
Model-related fields live in [Embedding profiles](./embedding-profiles.md) and
|
|
@@ -111,7 +111,7 @@ Run it with:
|
|
|
111
111
|
LONGMEMEVAL_DATA_FILE=/path/to/longmemeval_oracle.json pnpm run benchmark:longmemeval
|
|
112
112
|
```
|
|
113
113
|
|
|
114
|
-
If you already have a
|
|
114
|
+
If you already have a vector service running and do not want the benchmark to spawn
|
|
115
115
|
another one, set:
|
|
116
116
|
|
|
117
117
|
```bash
|
|
@@ -127,7 +127,7 @@ Optional controls:
|
|
|
127
127
|
- `LONGMEMEVAL_OUT_FILE` writes JSONL records for analysis
|
|
128
128
|
|
|
129
129
|
The harness writes JSONL incrementally, so partial results survive if a
|
|
130
|
-
transient
|
|
130
|
+
transient vector service failure interrupts a long run. If the local test vector service drops
|
|
131
131
|
mid-run, the benchmark restarts it and retries the current instance once before
|
|
132
132
|
recording an error result.
|
|
133
133
|
|
package/docs/problem.md
CHANGED
|
@@ -9,7 +9,7 @@ The default `memory-lancedb` style plugin is still a good fit when you want:
|
|
|
9
9
|
- a simple top-k semantic lookup over durable notes
|
|
10
10
|
- a low-complexity setup
|
|
11
11
|
- a heuristic capture model where the agent decides what to save
|
|
12
|
-
- no additional
|
|
12
|
+
- no additional vector service process
|
|
13
13
|
|
|
14
14
|
For short sessions and light persistent memory, that is often the right answer.
|
|
15
15
|
|
package/docs/security.md
CHANGED
|
@@ -18,7 +18,7 @@ The system is designed so a failure in one layer does not automatically collapse
|
|
|
18
18
|
|
|
19
19
|
The published plugin package intentionally avoids install-time process execution.
|
|
20
20
|
That is a deliberate trust and distribution choice: the OpenClaw plugin is a
|
|
21
|
-
thin client, and the local `libravdbd`
|
|
21
|
+
thin client, and the local `libravdbd` vector service is a separate operator-managed
|
|
22
22
|
component.
|
|
23
23
|
|
|
24
24
|
Current implementation facts:
|
|
@@ -28,9 +28,9 @@ Current implementation facts:
|
|
|
28
28
|
- the published plugin source contains no direct `child_process` usage
|
|
29
29
|
- the plugin connects only to a configured local endpoint such as
|
|
30
30
|
`unix:/Users/<you>/.libravdbd/run/libravdb.sock` or `tcp:127.0.0.1:37421`
|
|
31
|
-
-
|
|
31
|
+
- vector service installation and lifecycle are explicit user or operator actions
|
|
32
32
|
|
|
33
|
-
The
|
|
33
|
+
The vector service distribution surface should be evaluated separately from the plugin
|
|
34
34
|
package. If you install `libravdbd` from release assets or another package
|
|
35
35
|
channel, validate that channel directly.
|
|
36
36
|
|
|
@@ -76,7 +76,7 @@ It reduces risk; it does not create a trusted execution environment.
|
|
|
76
76
|
|
|
77
77
|
## Deletion and Data Protection
|
|
78
78
|
|
|
79
|
-
The
|
|
79
|
+
The vector service exposes deletion and flush primitives. That matters operationally for:
|
|
80
80
|
|
|
81
81
|
- user-requested memory removal
|
|
82
82
|
- namespace cleanup
|