hermes-plugin-qdrant-memory 0.2.2__tar.gz → 0.4.0__tar.gz
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.
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/MANIFEST.in +3 -0
- {hermes_plugin_qdrant_memory-0.2.2/hermes_plugin_qdrant_memory.egg-info → hermes_plugin_qdrant_memory-0.4.0}/PKG-INFO +49 -15
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/README.md +46 -14
- hermes_plugin_qdrant_memory-0.4.0/docs/local-embedding.md +152 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0/hermes_plugin_qdrant_memory.egg-info}/PKG-INFO +49 -15
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/hermes_plugin_qdrant_memory.egg-info/SOURCES.txt +29 -1
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/hermes_plugin_qdrant_memory.egg-info/requires.txt +3 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/pyproject.toml +2 -1
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/cli.py +4 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/config.py +14 -3
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/embedding.py +6 -1
- hermes_plugin_qdrant_memory-0.4.0/qdrant_memory/local_embedding.py +87 -0
- hermes_plugin_qdrant_memory-0.4.0/qdrant_memory/local_model.py +226 -0
- hermes_plugin_qdrant_memory-0.4.0/qdrant_memory/managed_setup.py +228 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/mcp_server.py +6 -4
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/plugin.yaml +1 -1
- hermes_plugin_qdrant_memory-0.4.0/qdrant_memory/private_paths.py +26 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/reset.py +3 -2
- hermes_plugin_qdrant_memory-0.4.0/qdrant_memory/shared_client.py +79 -0
- hermes_plugin_qdrant_memory-0.4.0/qdrant_memory/shared_service.py +469 -0
- hermes_plugin_qdrant_memory-0.4.0/qdrant_memory/shared_state.py +28 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/standalone.py +68 -4
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/version.py +1 -1
- hermes_plugin_qdrant_memory-0.4.0/requirements-local.txt +1080 -0
- hermes_plugin_qdrant_memory-0.4.0/requirements.txt +22 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/scripts/demo.sh +48 -10
- hermes_plugin_qdrant_memory-0.4.0/tests/__init__.py +1 -0
- hermes_plugin_qdrant_memory-0.4.0/tests/conftest.py +39 -0
- hermes_plugin_qdrant_memory-0.4.0/tests/helpers.py +101 -0
- hermes_plugin_qdrant_memory-0.4.0/tests/local_model/test_acceptance.py +211 -0
- hermes_plugin_qdrant_memory-0.4.0/tests/standalone/__init__.py +1 -0
- hermes_plugin_qdrant_memory-0.4.0/tests/standalone/test_explicit_writes.py +109 -0
- hermes_plugin_qdrant_memory-0.4.0/tests/standalone/test_managed_setup.py +332 -0
- hermes_plugin_qdrant_memory-0.4.0/tests/standalone/test_public_api.py +388 -0
- hermes_plugin_qdrant_memory-0.4.0/tests/standalone/test_shared_contracts.py +295 -0
- hermes_plugin_qdrant_memory-0.4.0/tests/standalone/test_shared_evaluation.py +53 -0
- hermes_plugin_qdrant_memory-0.4.0/tests/standalone/test_shared_service.py +700 -0
- hermes_plugin_qdrant_memory-0.4.0/tests/standalone/test_standalone.py +386 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_checkpoint_lifecycle.py +7 -4
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_ci_gate.py +6 -5
- hermes_plugin_qdrant_memory-0.4.0/tests/test_host_pins.py +180 -0
- hermes_plugin_qdrant_memory-0.4.0/tests/test_local_embedding.py +148 -0
- hermes_plugin_qdrant_memory-0.4.0/tests/test_local_embedding_provider.py +151 -0
- hermes_plugin_qdrant_memory-0.4.0/tests/test_local_model.py +208 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_migration_progress.py +4 -1
- hermes_plugin_qdrant_memory-0.4.0/tests/test_readme_release_contract.py +136 -0
- hermes_plugin_qdrant_memory-0.4.0/tests/test_reset_inspection.py +55 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/LICENSE +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/hermes_plugin_qdrant_memory.egg-info/dependency_links.txt +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/hermes_plugin_qdrant_memory.egg-info/entry_points.txt +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/hermes_plugin_qdrant_memory.egg-info/top_level.txt +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/__init__.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/config_schema.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/dedupe.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/extraction.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/inventory.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/ledger.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/migration.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/models.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/ownership.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/progress.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/provider.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/qdrant_store.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/retry.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/runtime.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/tools.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/setup.cfg +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_backend_contracts.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_bot_scope.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_bounded_recovery.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_cli_output.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_config_embedding.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_deletion_ordering.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_discovery_cli.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_explicit_dedupe.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_host_lifecycle.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_input_validation.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_inventory_export.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_live_metrics.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_maintenance.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_manifest_contract.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_migration.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_migration_endpoints.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_migration_resume.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_migration_superseded.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_profile_scope.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_provider.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_recovery_benchmark.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_recovery_evaluation.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_remote_qdrant.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_reset_recovery.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_retention.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_review_regressions.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_session_provenance.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_setup_contract.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_shutdown_contract.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_store_runtime.py +0 -0
- {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_writer_ownership.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hermes-plugin-qdrant-memory
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: Durable Qdrant memory for Hermes, standalone CLI and local MCP
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/cnkang/hermes-plugin-qdrant-memory
|
|
@@ -17,10 +17,16 @@ Requires-Dist: httpx<1,>=0.28
|
|
|
17
17
|
Requires-Dist: portalocker<4,>=3.2
|
|
18
18
|
Provides-Extra: mcp
|
|
19
19
|
Requires-Dist: mcp<3,>=1.30; extra == "mcp"
|
|
20
|
+
Provides-Extra: local
|
|
21
|
+
Requires-Dist: fastembed==0.9.0; extra == "local"
|
|
20
22
|
Dynamic: license-file
|
|
21
23
|
|
|
22
24
|
# Qdrant Memory for Hermes
|
|
23
25
|
|
|
26
|
+
## One Memory, Multiple Agents — opt-in shared owner
|
|
27
|
+
|
|
28
|
+
Runtime 0.4.0 adds an opt-in authenticated local shared owner and stdio bridge. Multiple agents can share an explicitly authorized space while legacy records remain private. Hermes Native Provider and existing private defaults remain unchanged. See [setup, Hermes/DSH walkthrough and limits](docs/shared-memory/README.md), [architecture](docs/shared-memory/architecture.md), and [validation](docs/shared-memory/report.md). Native Provider automatic shared extraction is planned, not implemented.
|
|
29
|
+
|
|
24
30
|
[](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/ci.yml)
|
|
25
31
|
[](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/platform-compat.yml)
|
|
26
32
|
[](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/standalone.yml)
|
|
@@ -28,15 +34,22 @@ Dynamic: license-file
|
|
|
28
34
|
[](https://www.python.org/downloads/)
|
|
29
35
|
[](LICENSE)
|
|
30
36
|
|
|
31
|
-
> **Runtime 0.
|
|
32
|
-
>
|
|
33
|
-
>
|
|
37
|
+
> **Runtime 0.4.0** adds an opt-in authenticated local shared owner and a stdio
|
|
38
|
+
> bridge for explicit shared memory. It keeps the optional offline CPU embedding,
|
|
39
|
+
> trusted setup and MCP Python SDK 1.x/2.x support from 0.3.0.
|
|
40
|
+
> Explicit writes retain canonical-text deduplication without an LLM.
|
|
41
|
+
> Runtime 0.4.0 is available on [PyPI](https://pypi.org/project/hermes-plugin-qdrant-memory/0.4.0/).
|
|
42
|
+
> The generic MCP distribution and managed launcher select their own exact Runtime
|
|
43
|
+
> dependency and are released independently.
|
|
34
44
|
> The Hermes Plugin Catalog has its own reviewed immutable pin. A PyPI release
|
|
35
45
|
> does not upgrade it. One writer per destination remains required.
|
|
36
|
-
> See [release notes](docs/releases/0.
|
|
46
|
+
> See [release notes](docs/releases/0.4.0.md) and [validation](docs/validation.md).
|
|
37
47
|
|
|
38
48
|
[English](README.md) | [简体中文](README.zh-CN.md)
|
|
39
49
|
|
|
50
|
+
New in 0.4.0: [shared memory for multiple agents](docs/shared-memory/README.md)
|
|
51
|
+
adds an opt-in authenticated local owner without changing private defaults.
|
|
52
|
+
|
|
40
53
|
Native long-term memory plugin for Hermes Agent, implemented as a `MemoryProvider`.
|
|
41
54
|
Hermes performs extraction
|
|
42
55
|
through its trusted `ctx.llm` facade. Qdrant stores named dense vectors and schema-v1
|
|
@@ -48,7 +61,7 @@ as a community-maintained plugin.
|
|
|
48
61
|
## How it works
|
|
49
62
|
|
|
50
63
|
For non-Hermes users, install in a private Python 3.11+
|
|
51
|
-
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.
|
|
64
|
+
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.4.0'` (omit `[mcp]`
|
|
52
65
|
for CLI only). `qdrant-memory` is the CLI and `mcp` is its server subcommand.
|
|
53
66
|
Standalone does not require Hermes. See [setup and quick start](docs/standalone.md).
|
|
54
67
|
MCP-focused agents may instead use the [metadata-only distribution](https://github.com/cnkang/qdrant-memory-mcp).
|
|
@@ -107,8 +120,8 @@ The published v0.1.0 plugin release does not include the MCP entrypoint.
|
|
|
107
120
|
|
|
108
121
|

|
|
109
122
|
|
|
110
|
-
The recording shows the full flow on a clean profile. It installs
|
|
111
|
-
|
|
123
|
+
The recording shows the full flow on a clean profile. It installs the
|
|
124
|
+
verified pinned Runtime source, teaches a preference, and waits for the
|
|
112
125
|
background extraction. Then it recalls the preference in a new session and
|
|
113
126
|
cleans up the demo scope. All steps
|
|
114
127
|
run in embedded mode. `scripts/demo.sh` reproduces the same walkthrough with
|
|
@@ -124,7 +137,11 @@ to serve `qwen3-embedding:4b`.
|
|
|
124
137
|
|
|
125
138
|
Choose the **active profile's** home explicitly. Do not reuse another profile's data.
|
|
126
139
|
|
|
127
|
-
**
|
|
140
|
+
**Catalog option: install the version reviewed by the official Hermes Plugin Catalog.**
|
|
141
|
+
|
|
142
|
+
The Catalog selects its own fixed revision, which may be older than Runtime
|
|
143
|
+
0.4.0. To use the current release, including opt-in shared memory, follow the
|
|
144
|
+
recommended version-locked installation below.
|
|
128
145
|
|
|
129
146
|
```bash
|
|
130
147
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
@@ -141,18 +158,35 @@ The install resolves the catalog's reviewed commit and prints the entry's declar
|
|
|
141
158
|
tools, requirements and known issues before it clones anything.
|
|
142
159
|
`hermes plugins enable` prepares the declared dependencies through Hermes PM.
|
|
143
160
|
|
|
144
|
-
**
|
|
161
|
+
**Recommended: install the version-locked Runtime 0.4.0 source through the Hermes CLI.**
|
|
162
|
+
|
|
163
|
+
This immutable source revision includes opt-in shared memory. It does not depend
|
|
164
|
+
on a PyPI release or a catalog update.
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
168
|
+
ollama pull qwen3-embedding:4b
|
|
169
|
+
# Start Ollama if it is not running. Keep its service available.
|
|
170
|
+
hermes plugins install https://github.com/cnkang/hermes-plugin-qdrant-memory \
|
|
171
|
+
--ref 534562f1df43541dbf906d248bb11cd085b211ee # Runtime 0.3.0 release
|
|
172
|
+
hermes plugins enable qdrant-memory
|
|
173
|
+
hermes memory setup
|
|
174
|
+
hermes config set memory.provider qdrant-memory
|
|
175
|
+
hermes qdrant-memory init
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Previous verified source: install Runtime 0.3.0 through the Hermes CLI.**
|
|
145
179
|
|
|
146
|
-
This immutable source revision includes
|
|
147
|
-
|
|
148
|
-
depend on a PyPI release or a catalog update.
|
|
180
|
+
This older immutable source revision includes optional CPU embedding and guided
|
|
181
|
+
setup, but it predates opt-in shared memory. For the current release use
|
|
182
|
+
Runtime 0.4.0 above. It does not depend on a PyPI release or a catalog update.
|
|
149
183
|
|
|
150
184
|
```bash
|
|
151
185
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
152
186
|
ollama pull qwen3-embedding:4b
|
|
153
187
|
# Start Ollama if it is not running. Keep its service available.
|
|
154
188
|
hermes plugins install https://github.com/cnkang/hermes-plugin-qdrant-memory \
|
|
155
|
-
--ref
|
|
189
|
+
--ref 534562f1df43541dbf906d248bb11cd085b211ee # verified Runtime 0.3.0 source
|
|
156
190
|
hermes plugins enable qdrant-memory
|
|
157
191
|
hermes memory setup
|
|
158
192
|
hermes config set memory.provider qdrant-memory
|
|
@@ -169,7 +203,7 @@ environment. Omit `--ref` to track `main`, the development line.
|
|
|
169
203
|
**Historical release: clone a published tag manually.**
|
|
170
204
|
|
|
171
205
|
The v0.1.0 tag below predates the standalone interfaces and the explicit-write
|
|
172
|
-
fix. Use the pinned source above for Runtime 0.
|
|
206
|
+
fix. Use the pinned source above for Runtime 0.4.0.
|
|
173
207
|
|
|
174
208
|
```bash
|
|
175
209
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Qdrant Memory for Hermes
|
|
2
2
|
|
|
3
|
+
## One Memory, Multiple Agents — opt-in shared owner
|
|
4
|
+
|
|
5
|
+
Runtime 0.4.0 adds an opt-in authenticated local shared owner and stdio bridge. Multiple agents can share an explicitly authorized space while legacy records remain private. Hermes Native Provider and existing private defaults remain unchanged. See [setup, Hermes/DSH walkthrough and limits](docs/shared-memory/README.md), [architecture](docs/shared-memory/architecture.md), and [validation](docs/shared-memory/report.md). Native Provider automatic shared extraction is planned, not implemented.
|
|
6
|
+
|
|
3
7
|
[](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/ci.yml)
|
|
4
8
|
[](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/platform-compat.yml)
|
|
5
9
|
[](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/standalone.yml)
|
|
@@ -7,15 +11,22 @@
|
|
|
7
11
|
[](https://www.python.org/downloads/)
|
|
8
12
|
[](LICENSE)
|
|
9
13
|
|
|
10
|
-
> **Runtime 0.
|
|
11
|
-
>
|
|
12
|
-
>
|
|
14
|
+
> **Runtime 0.4.0** adds an opt-in authenticated local shared owner and a stdio
|
|
15
|
+
> bridge for explicit shared memory. It keeps the optional offline CPU embedding,
|
|
16
|
+
> trusted setup and MCP Python SDK 1.x/2.x support from 0.3.0.
|
|
17
|
+
> Explicit writes retain canonical-text deduplication without an LLM.
|
|
18
|
+
> Runtime 0.4.0 is available on [PyPI](https://pypi.org/project/hermes-plugin-qdrant-memory/0.4.0/).
|
|
19
|
+
> The generic MCP distribution and managed launcher select their own exact Runtime
|
|
20
|
+
> dependency and are released independently.
|
|
13
21
|
> The Hermes Plugin Catalog has its own reviewed immutable pin. A PyPI release
|
|
14
22
|
> does not upgrade it. One writer per destination remains required.
|
|
15
|
-
> See [release notes](docs/releases/0.
|
|
23
|
+
> See [release notes](docs/releases/0.4.0.md) and [validation](docs/validation.md).
|
|
16
24
|
|
|
17
25
|
[English](README.md) | [简体中文](README.zh-CN.md)
|
|
18
26
|
|
|
27
|
+
New in 0.4.0: [shared memory for multiple agents](docs/shared-memory/README.md)
|
|
28
|
+
adds an opt-in authenticated local owner without changing private defaults.
|
|
29
|
+
|
|
19
30
|
Native long-term memory plugin for Hermes Agent, implemented as a `MemoryProvider`.
|
|
20
31
|
Hermes performs extraction
|
|
21
32
|
through its trusted `ctx.llm` facade. Qdrant stores named dense vectors and schema-v1
|
|
@@ -27,7 +38,7 @@ as a community-maintained plugin.
|
|
|
27
38
|
## How it works
|
|
28
39
|
|
|
29
40
|
For non-Hermes users, install in a private Python 3.11+
|
|
30
|
-
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.
|
|
41
|
+
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.4.0'` (omit `[mcp]`
|
|
31
42
|
for CLI only). `qdrant-memory` is the CLI and `mcp` is its server subcommand.
|
|
32
43
|
Standalone does not require Hermes. See [setup and quick start](docs/standalone.md).
|
|
33
44
|
MCP-focused agents may instead use the [metadata-only distribution](https://github.com/cnkang/qdrant-memory-mcp).
|
|
@@ -86,8 +97,8 @@ The published v0.1.0 plugin release does not include the MCP entrypoint.
|
|
|
86
97
|
|
|
87
98
|

|
|
88
99
|
|
|
89
|
-
The recording shows the full flow on a clean profile. It installs
|
|
90
|
-
|
|
100
|
+
The recording shows the full flow on a clean profile. It installs the
|
|
101
|
+
verified pinned Runtime source, teaches a preference, and waits for the
|
|
91
102
|
background extraction. Then it recalls the preference in a new session and
|
|
92
103
|
cleans up the demo scope. All steps
|
|
93
104
|
run in embedded mode. `scripts/demo.sh` reproduces the same walkthrough with
|
|
@@ -103,7 +114,11 @@ to serve `qwen3-embedding:4b`.
|
|
|
103
114
|
|
|
104
115
|
Choose the **active profile's** home explicitly. Do not reuse another profile's data.
|
|
105
116
|
|
|
106
|
-
**
|
|
117
|
+
**Catalog option: install the version reviewed by the official Hermes Plugin Catalog.**
|
|
118
|
+
|
|
119
|
+
The Catalog selects its own fixed revision, which may be older than Runtime
|
|
120
|
+
0.4.0. To use the current release, including opt-in shared memory, follow the
|
|
121
|
+
recommended version-locked installation below.
|
|
107
122
|
|
|
108
123
|
```bash
|
|
109
124
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
@@ -120,18 +135,35 @@ The install resolves the catalog's reviewed commit and prints the entry's declar
|
|
|
120
135
|
tools, requirements and known issues before it clones anything.
|
|
121
136
|
`hermes plugins enable` prepares the declared dependencies through Hermes PM.
|
|
122
137
|
|
|
123
|
-
**
|
|
138
|
+
**Recommended: install the version-locked Runtime 0.4.0 source through the Hermes CLI.**
|
|
139
|
+
|
|
140
|
+
This immutable source revision includes opt-in shared memory. It does not depend
|
|
141
|
+
on a PyPI release or a catalog update.
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
145
|
+
ollama pull qwen3-embedding:4b
|
|
146
|
+
# Start Ollama if it is not running. Keep its service available.
|
|
147
|
+
hermes plugins install https://github.com/cnkang/hermes-plugin-qdrant-memory \
|
|
148
|
+
--ref 534562f1df43541dbf906d248bb11cd085b211ee # Runtime 0.3.0 release
|
|
149
|
+
hermes plugins enable qdrant-memory
|
|
150
|
+
hermes memory setup
|
|
151
|
+
hermes config set memory.provider qdrant-memory
|
|
152
|
+
hermes qdrant-memory init
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Previous verified source: install Runtime 0.3.0 through the Hermes CLI.**
|
|
124
156
|
|
|
125
|
-
This immutable source revision includes
|
|
126
|
-
|
|
127
|
-
depend on a PyPI release or a catalog update.
|
|
157
|
+
This older immutable source revision includes optional CPU embedding and guided
|
|
158
|
+
setup, but it predates opt-in shared memory. For the current release use
|
|
159
|
+
Runtime 0.4.0 above. It does not depend on a PyPI release or a catalog update.
|
|
128
160
|
|
|
129
161
|
```bash
|
|
130
162
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
131
163
|
ollama pull qwen3-embedding:4b
|
|
132
164
|
# Start Ollama if it is not running. Keep its service available.
|
|
133
165
|
hermes plugins install https://github.com/cnkang/hermes-plugin-qdrant-memory \
|
|
134
|
-
--ref
|
|
166
|
+
--ref 534562f1df43541dbf906d248bb11cd085b211ee # verified Runtime 0.3.0 source
|
|
135
167
|
hermes plugins enable qdrant-memory
|
|
136
168
|
hermes memory setup
|
|
137
169
|
hermes config set memory.provider qdrant-memory
|
|
@@ -148,7 +180,7 @@ environment. Omit `--ref` to track `main`, the development line.
|
|
|
148
180
|
**Historical release: clone a published tag manually.**
|
|
149
181
|
|
|
150
182
|
The v0.1.0 tag below predates the standalone interfaces and the explicit-write
|
|
151
|
-
fix. Use the pinned source above for Runtime 0.
|
|
183
|
+
fix. Use the pinned source above for Runtime 0.4.0.
|
|
152
184
|
|
|
153
185
|
```bash
|
|
154
186
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# Optional local CPU embedding and guided setup
|
|
2
|
+
|
|
3
|
+
These commands ship with Runtime 0.4.0. Published Runtime 0.2.2 and MCP
|
|
4
|
+
distribution 0.1.3 predate them. Those packages keep their existing
|
|
5
|
+
configuration workflow.
|
|
6
|
+
|
|
7
|
+
## Choose your embedding provider
|
|
8
|
+
|
|
9
|
+
The existing default remains Ollama. CPU embedding is optional and is never
|
|
10
|
+
selected because Ollama or a cloud service happens to be unavailable. Existing
|
|
11
|
+
profiles, models, fingerprints and collections are not changed by installation.
|
|
12
|
+
|
|
13
|
+
| Choice | Requirements | Model download by this Runtime |
|
|
14
|
+
| --- | --- | --- |
|
|
15
|
+
| Ollama | Running service and installed embedding model | None |
|
|
16
|
+
| OpenAI-compatible | Endpoint, model, dimensions and any required key | None |
|
|
17
|
+
| FastEmbed CPU | Optional `local` extra and explicitly prepared model cache | About 252 MB for the pinned model/tokenizer files |
|
|
18
|
+
|
|
19
|
+
The CPU model is multilingual MiniLM-L12-v2, 384 dimensions, using the
|
|
20
|
+
[Qdrant ONNX artifacts](https://huggingface.co/Qdrant/paraphrase-multilingual-MiniLM-L12-v2-onnx-Q)
|
|
21
|
+
and [FastEmbed](https://qdrant.github.io/fastembed/). The model is listed as
|
|
22
|
+
Apache-2.0. Files are pinned to an immutable model revision and checked against
|
|
23
|
+
exact sizes and SHA-256 values. Dependencies and installed environments require
|
|
24
|
+
additional disk space. No remote Python model code is downloaded or executed.
|
|
25
|
+
|
|
26
|
+
## Set up a new private profile without editing JSON
|
|
27
|
+
|
|
28
|
+
For a reviewed source checkout, install the desired extras into a virtual
|
|
29
|
+
environment. The `mcp` extra is needed for MCP, while `local` is needed only for
|
|
30
|
+
CPU embedding:
|
|
31
|
+
|
|
32
|
+
```sh
|
|
33
|
+
python -m pip install '.[mcp,local]'
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
For a published package, install the same extras with the release version:
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
python -m pip install 'hermes-plugin-qdrant-memory[mcp,local]==0.4.0'
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Choose **one** setup command and replace the profile path with a new absolute
|
|
43
|
+
private directory. The command writes the configuration and initializes embedded
|
|
44
|
+
Qdrant using the existing Runtime initialization, writer lease and validation.
|
|
45
|
+
It does not install Python or prepare WorkBuddy's runtime environment.
|
|
46
|
+
|
|
47
|
+
With an existing Ollama model (the `local` extra is unnecessary):
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
qdrant-memory setup --profile /absolute/new-profile --embedding-provider ollama --model qwen3-embedding:4b --dimensions 2560 --agent-id workbuddy
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
With an explicitly chosen CPU model:
|
|
54
|
+
|
|
55
|
+
```sh
|
|
56
|
+
qdrant-memory setup --profile /absolute/new-profile --embedding-provider fastembed --agent-id workbuddy
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
With an OpenAI-compatible embedding service:
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
qdrant-memory setup --profile /absolute/new-profile --embedding-provider openai-compatible --base-url https://embedding.example.com/v1 --model YOUR_MODEL --dimensions YOUR_DIMENSIONS --agent-id workbuddy
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Replace the example endpoint/model/dimensions with the service's actual values.
|
|
66
|
+
Provide `EMBEDDING_API_KEY` through a private process environment or a secret
|
|
67
|
+
manager. Do not pass its value as a command argument. To use a different variable
|
|
68
|
+
name, supply `--embedding-api-key-env VARIABLE_NAME`.
|
|
69
|
+
|
|
70
|
+
Use a different profile and `--agent-id` for each client. `--user-id` defaults to
|
|
71
|
+
`local-user`. Self-hosted/Cloud Qdrant storage continues to use the existing
|
|
72
|
+
[configuration workflow](configuration.md); this setup command creates only a
|
|
73
|
+
new embedded destination. A remote embedding choice is distinct from remote
|
|
74
|
+
Qdrant storage.
|
|
75
|
+
|
|
76
|
+
Once setup succeeds, configure the client's stdio command as `qdrant-memory`
|
|
77
|
+
(or the installed `qdrant-memory-mcp` alias), with arguments:
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
--home /absolute/new-profile mcp
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
The MCP tool catalogue remains search, add, update and delete. Model downloads
|
|
84
|
+
and profile creation are trusted CLI operations, not conversational tools.
|
|
85
|
+
WorkBuddy needs the launcher executable on its PATH or its absolute path.
|
|
86
|
+
This source feature alone does not establish marketplace one-click installation.
|
|
87
|
+
|
|
88
|
+
## Prepare the CPU model separately
|
|
89
|
+
|
|
90
|
+
Installers can download the model before attempting MCP connection:
|
|
91
|
+
|
|
92
|
+
```sh
|
|
93
|
+
qdrant-memory prepare-model
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
`--cache-dir /absolute/model-cache` chooses a separate cache. Use the same cache
|
|
97
|
+
with `setup --model-cache-dir /absolute/model-cache`, or set the profile's
|
|
98
|
+
`embedding.model_cache_dir`. The default model-only cache follows platform
|
|
99
|
+
conventions: macOS Library/Caches, Windows LOCALAPPDATA and Linux XDG_CACHE_HOME
|
|
100
|
+
or `~/.cache`. It is separate from memory profiles, Qdrant data and the ledger.
|
|
101
|
+
Managed cache/profile paths must be canonical absolute paths without symlinks
|
|
102
|
+
or Windows reparse points, including intermediate directories.
|
|
103
|
+
|
|
104
|
+
Preparation requires network access and may take several minutes. Start MCP
|
|
105
|
+
after preparation and setup complete; do not place the download inside a
|
|
106
|
+
30-second connection handshake. Normal provider startup verifies cached files
|
|
107
|
+
and performs no downloads. Prepared CPU inference works offline and does not
|
|
108
|
+
send memory/query text to an embedding service.
|
|
109
|
+
|
|
110
|
+
Downloads use a provisioning lock and a private staging directory. The complete
|
|
111
|
+
cache is published only after every file passes validation. Failed preparation
|
|
112
|
+
can be retried with the same command. A corrupt completed cache is rejected and
|
|
113
|
+
left untouched; it is not silently replaced. Select a new cache directory for
|
|
114
|
+
explicit re-preparation, preserving the old files for diagnosis or recovery.
|
|
115
|
+
|
|
116
|
+
## Safety, limits and recovery
|
|
117
|
+
|
|
118
|
+
- Repeating the same setup request preserves memories. Setup refuses an unrelated
|
|
119
|
+
directory or a request changing the owned profile's configuration or scope.
|
|
120
|
+
- A failed initialization can be retried with the same settings after fixing its
|
|
121
|
+
dependency/service problem. Existing data is never reset by setup.
|
|
122
|
+
- CPU input is limited to **128 tokens including instruction prefixes**. Longer
|
|
123
|
+
input is rejected rather than silently truncated. Keep facts concise, or choose
|
|
124
|
+
an explicitly configured provider/model supporting longer inputs.
|
|
125
|
+
- Cache location does not change CPU embedding identity. Model revision,
|
|
126
|
+
artifact hashes, preprocessing and the pinned FastEmbed version do.
|
|
127
|
+
- Choosing CPU for a collection created with Ollama or another model is not a
|
|
128
|
+
migration. Existing incompatible collections fail compatibility checks.
|
|
129
|
+
- `LocalModelNotPreparedError`: run explicit preparation with the correct cache.
|
|
130
|
+
- `LocalModelIntegrityError`: do not bypass checks; explicitly prepare a new cache.
|
|
131
|
+
- `LocalEmbeddingUnavailableError`: install the reviewed `local` extra.
|
|
132
|
+
- `ManagedProfileConflictError`: retain the existing profile and choose a new
|
|
133
|
+
directory, or use the existing advanced configuration/maintenance workflow.
|
|
134
|
+
|
|
135
|
+
Ordinary clients may still send recalled text to their chat model. Local embedding
|
|
136
|
+
does not change the client's own data handling. No automatic conversation
|
|
137
|
+
extraction, new network listener or cloud credential custody is introduced.
|
|
138
|
+
|
|
139
|
+
## Validation boundary
|
|
140
|
+
|
|
141
|
+
Real local CPU inference and offline official-MCP CRUD/restart tests are separate
|
|
142
|
+
from package installation and real WorkBuddy GUI acceptance. The optional local
|
|
143
|
+
embedding workflow tests native Linux x64, Windows x64 and macOS Apple Silicon
|
|
144
|
+
with Python 3.11. macOS Intel is best-effort compatibility and is not a release
|
|
145
|
+
gate or a formally supported CPU platform. A successful dependency resolution
|
|
146
|
+
alone is not a platform support claim. ARM64 variants outside macOS require
|
|
147
|
+
separate acceptance.
|
|
148
|
+
|
|
149
|
+
The optional CPU dependency security snapshot is pinned with artifact hashes in
|
|
150
|
+
`requirements-local.txt`, constrained by the existing base snapshot. CI scans
|
|
151
|
+
both base and optional dependency sets. It does not make CPU packages mandatory
|
|
152
|
+
for normal installations or replace platform/runtime installation acceptance.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hermes-plugin-qdrant-memory
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: Durable Qdrant memory for Hermes, standalone CLI and local MCP
|
|
5
5
|
License-Expression: MIT
|
|
6
6
|
Project-URL: Homepage, https://github.com/cnkang/hermes-plugin-qdrant-memory
|
|
@@ -17,10 +17,16 @@ Requires-Dist: httpx<1,>=0.28
|
|
|
17
17
|
Requires-Dist: portalocker<4,>=3.2
|
|
18
18
|
Provides-Extra: mcp
|
|
19
19
|
Requires-Dist: mcp<3,>=1.30; extra == "mcp"
|
|
20
|
+
Provides-Extra: local
|
|
21
|
+
Requires-Dist: fastembed==0.9.0; extra == "local"
|
|
20
22
|
Dynamic: license-file
|
|
21
23
|
|
|
22
24
|
# Qdrant Memory for Hermes
|
|
23
25
|
|
|
26
|
+
## One Memory, Multiple Agents — opt-in shared owner
|
|
27
|
+
|
|
28
|
+
Runtime 0.4.0 adds an opt-in authenticated local shared owner and stdio bridge. Multiple agents can share an explicitly authorized space while legacy records remain private. Hermes Native Provider and existing private defaults remain unchanged. See [setup, Hermes/DSH walkthrough and limits](docs/shared-memory/README.md), [architecture](docs/shared-memory/architecture.md), and [validation](docs/shared-memory/report.md). Native Provider automatic shared extraction is planned, not implemented.
|
|
29
|
+
|
|
24
30
|
[](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/ci.yml)
|
|
25
31
|
[](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/platform-compat.yml)
|
|
26
32
|
[](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/standalone.yml)
|
|
@@ -28,15 +34,22 @@ Dynamic: license-file
|
|
|
28
34
|
[](https://www.python.org/downloads/)
|
|
29
35
|
[](LICENSE)
|
|
30
36
|
|
|
31
|
-
> **Runtime 0.
|
|
32
|
-
>
|
|
33
|
-
>
|
|
37
|
+
> **Runtime 0.4.0** adds an opt-in authenticated local shared owner and a stdio
|
|
38
|
+
> bridge for explicit shared memory. It keeps the optional offline CPU embedding,
|
|
39
|
+
> trusted setup and MCP Python SDK 1.x/2.x support from 0.3.0.
|
|
40
|
+
> Explicit writes retain canonical-text deduplication without an LLM.
|
|
41
|
+
> Runtime 0.4.0 is available on [PyPI](https://pypi.org/project/hermes-plugin-qdrant-memory/0.4.0/).
|
|
42
|
+
> The generic MCP distribution and managed launcher select their own exact Runtime
|
|
43
|
+
> dependency and are released independently.
|
|
34
44
|
> The Hermes Plugin Catalog has its own reviewed immutable pin. A PyPI release
|
|
35
45
|
> does not upgrade it. One writer per destination remains required.
|
|
36
|
-
> See [release notes](docs/releases/0.
|
|
46
|
+
> See [release notes](docs/releases/0.4.0.md) and [validation](docs/validation.md).
|
|
37
47
|
|
|
38
48
|
[English](README.md) | [简体中文](README.zh-CN.md)
|
|
39
49
|
|
|
50
|
+
New in 0.4.0: [shared memory for multiple agents](docs/shared-memory/README.md)
|
|
51
|
+
adds an opt-in authenticated local owner without changing private defaults.
|
|
52
|
+
|
|
40
53
|
Native long-term memory plugin for Hermes Agent, implemented as a `MemoryProvider`.
|
|
41
54
|
Hermes performs extraction
|
|
42
55
|
through its trusted `ctx.llm` facade. Qdrant stores named dense vectors and schema-v1
|
|
@@ -48,7 +61,7 @@ as a community-maintained plugin.
|
|
|
48
61
|
## How it works
|
|
49
62
|
|
|
50
63
|
For non-Hermes users, install in a private Python 3.11+
|
|
51
|
-
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.
|
|
64
|
+
environment: `pip install 'hermes-plugin-qdrant-memory[mcp]==0.4.0'` (omit `[mcp]`
|
|
52
65
|
for CLI only). `qdrant-memory` is the CLI and `mcp` is its server subcommand.
|
|
53
66
|
Standalone does not require Hermes. See [setup and quick start](docs/standalone.md).
|
|
54
67
|
MCP-focused agents may instead use the [metadata-only distribution](https://github.com/cnkang/qdrant-memory-mcp).
|
|
@@ -107,8 +120,8 @@ The published v0.1.0 plugin release does not include the MCP entrypoint.
|
|
|
107
120
|
|
|
108
121
|

|
|
109
122
|
|
|
110
|
-
The recording shows the full flow on a clean profile. It installs
|
|
111
|
-
|
|
123
|
+
The recording shows the full flow on a clean profile. It installs the
|
|
124
|
+
verified pinned Runtime source, teaches a preference, and waits for the
|
|
112
125
|
background extraction. Then it recalls the preference in a new session and
|
|
113
126
|
cleans up the demo scope. All steps
|
|
114
127
|
run in embedded mode. `scripts/demo.sh` reproduces the same walkthrough with
|
|
@@ -124,7 +137,11 @@ to serve `qwen3-embedding:4b`.
|
|
|
124
137
|
|
|
125
138
|
Choose the **active profile's** home explicitly. Do not reuse another profile's data.
|
|
126
139
|
|
|
127
|
-
**
|
|
140
|
+
**Catalog option: install the version reviewed by the official Hermes Plugin Catalog.**
|
|
141
|
+
|
|
142
|
+
The Catalog selects its own fixed revision, which may be older than Runtime
|
|
143
|
+
0.4.0. To use the current release, including opt-in shared memory, follow the
|
|
144
|
+
recommended version-locked installation below.
|
|
128
145
|
|
|
129
146
|
```bash
|
|
130
147
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
@@ -141,18 +158,35 @@ The install resolves the catalog's reviewed commit and prints the entry's declar
|
|
|
141
158
|
tools, requirements and known issues before it clones anything.
|
|
142
159
|
`hermes plugins enable` prepares the declared dependencies through Hermes PM.
|
|
143
160
|
|
|
144
|
-
**
|
|
161
|
+
**Recommended: install the version-locked Runtime 0.4.0 source through the Hermes CLI.**
|
|
162
|
+
|
|
163
|
+
This immutable source revision includes opt-in shared memory. It does not depend
|
|
164
|
+
on a PyPI release or a catalog update.
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
168
|
+
ollama pull qwen3-embedding:4b
|
|
169
|
+
# Start Ollama if it is not running. Keep its service available.
|
|
170
|
+
hermes plugins install https://github.com/cnkang/hermes-plugin-qdrant-memory \
|
|
171
|
+
--ref 534562f1df43541dbf906d248bb11cd085b211ee # Runtime 0.3.0 release
|
|
172
|
+
hermes plugins enable qdrant-memory
|
|
173
|
+
hermes memory setup
|
|
174
|
+
hermes config set memory.provider qdrant-memory
|
|
175
|
+
hermes qdrant-memory init
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Previous verified source: install Runtime 0.3.0 through the Hermes CLI.**
|
|
145
179
|
|
|
146
|
-
This immutable source revision includes
|
|
147
|
-
|
|
148
|
-
depend on a PyPI release or a catalog update.
|
|
180
|
+
This older immutable source revision includes optional CPU embedding and guided
|
|
181
|
+
setup, but it predates opt-in shared memory. For the current release use
|
|
182
|
+
Runtime 0.4.0 above. It does not depend on a PyPI release or a catalog update.
|
|
149
183
|
|
|
150
184
|
```bash
|
|
151
185
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
152
186
|
ollama pull qwen3-embedding:4b
|
|
153
187
|
# Start Ollama if it is not running. Keep its service available.
|
|
154
188
|
hermes plugins install https://github.com/cnkang/hermes-plugin-qdrant-memory \
|
|
155
|
-
--ref
|
|
189
|
+
--ref 534562f1df43541dbf906d248bb11cd085b211ee # verified Runtime 0.3.0 source
|
|
156
190
|
hermes plugins enable qdrant-memory
|
|
157
191
|
hermes memory setup
|
|
158
192
|
hermes config set memory.provider qdrant-memory
|
|
@@ -169,7 +203,7 @@ environment. Omit `--ref` to track `main`, the development line.
|
|
|
169
203
|
**Historical release: clone a published tag manually.**
|
|
170
204
|
|
|
171
205
|
The v0.1.0 tag below predates the standalone interfaces and the explicit-write
|
|
172
|
-
fix. Use the pinned source above for Runtime 0.
|
|
206
|
+
fix. Use the pinned source above for Runtime 0.4.0.
|
|
173
207
|
|
|
174
208
|
```bash
|
|
175
209
|
export HERMES_HOME="/absolute/path/to/your/hermes-profile"
|
|
@@ -2,6 +2,9 @@ LICENSE
|
|
|
2
2
|
MANIFEST.in
|
|
3
3
|
README.md
|
|
4
4
|
pyproject.toml
|
|
5
|
+
requirements-local.txt
|
|
6
|
+
requirements.txt
|
|
7
|
+
docs/local-embedding.md
|
|
5
8
|
hermes_plugin_qdrant_memory.egg-info/PKG-INFO
|
|
6
9
|
hermes_plugin_qdrant_memory.egg-info/SOURCES.txt
|
|
7
10
|
hermes_plugin_qdrant_memory.egg-info/dependency_links.txt
|
|
@@ -17,21 +20,31 @@ qdrant_memory/embedding.py
|
|
|
17
20
|
qdrant_memory/extraction.py
|
|
18
21
|
qdrant_memory/inventory.py
|
|
19
22
|
qdrant_memory/ledger.py
|
|
23
|
+
qdrant_memory/local_embedding.py
|
|
24
|
+
qdrant_memory/local_model.py
|
|
25
|
+
qdrant_memory/managed_setup.py
|
|
20
26
|
qdrant_memory/mcp_server.py
|
|
21
27
|
qdrant_memory/migration.py
|
|
22
28
|
qdrant_memory/models.py
|
|
23
29
|
qdrant_memory/ownership.py
|
|
24
30
|
qdrant_memory/plugin.yaml
|
|
31
|
+
qdrant_memory/private_paths.py
|
|
25
32
|
qdrant_memory/progress.py
|
|
26
33
|
qdrant_memory/provider.py
|
|
27
34
|
qdrant_memory/qdrant_store.py
|
|
28
35
|
qdrant_memory/reset.py
|
|
29
36
|
qdrant_memory/retry.py
|
|
30
37
|
qdrant_memory/runtime.py
|
|
38
|
+
qdrant_memory/shared_client.py
|
|
39
|
+
qdrant_memory/shared_service.py
|
|
40
|
+
qdrant_memory/shared_state.py
|
|
31
41
|
qdrant_memory/standalone.py
|
|
32
42
|
qdrant_memory/tools.py
|
|
33
43
|
qdrant_memory/version.py
|
|
34
44
|
scripts/demo.sh
|
|
45
|
+
tests/__init__.py
|
|
46
|
+
tests/conftest.py
|
|
47
|
+
tests/helpers.py
|
|
35
48
|
tests/test_backend_contracts.py
|
|
36
49
|
tests/test_bot_scope.py
|
|
37
50
|
tests/test_bounded_recovery.py
|
|
@@ -43,9 +56,13 @@ tests/test_deletion_ordering.py
|
|
|
43
56
|
tests/test_discovery_cli.py
|
|
44
57
|
tests/test_explicit_dedupe.py
|
|
45
58
|
tests/test_host_lifecycle.py
|
|
59
|
+
tests/test_host_pins.py
|
|
46
60
|
tests/test_input_validation.py
|
|
47
61
|
tests/test_inventory_export.py
|
|
48
62
|
tests/test_live_metrics.py
|
|
63
|
+
tests/test_local_embedding.py
|
|
64
|
+
tests/test_local_embedding_provider.py
|
|
65
|
+
tests/test_local_model.py
|
|
49
66
|
tests/test_maintenance.py
|
|
50
67
|
tests/test_manifest_contract.py
|
|
51
68
|
tests/test_migration.py
|
|
@@ -55,9 +72,11 @@ tests/test_migration_resume.py
|
|
|
55
72
|
tests/test_migration_superseded.py
|
|
56
73
|
tests/test_profile_scope.py
|
|
57
74
|
tests/test_provider.py
|
|
75
|
+
tests/test_readme_release_contract.py
|
|
58
76
|
tests/test_recovery_benchmark.py
|
|
59
77
|
tests/test_recovery_evaluation.py
|
|
60
78
|
tests/test_remote_qdrant.py
|
|
79
|
+
tests/test_reset_inspection.py
|
|
61
80
|
tests/test_reset_recovery.py
|
|
62
81
|
tests/test_retention.py
|
|
63
82
|
tests/test_review_regressions.py
|
|
@@ -65,4 +84,13 @@ tests/test_session_provenance.py
|
|
|
65
84
|
tests/test_setup_contract.py
|
|
66
85
|
tests/test_shutdown_contract.py
|
|
67
86
|
tests/test_store_runtime.py
|
|
68
|
-
tests/test_writer_ownership.py
|
|
87
|
+
tests/test_writer_ownership.py
|
|
88
|
+
tests/local_model/test_acceptance.py
|
|
89
|
+
tests/standalone/__init__.py
|
|
90
|
+
tests/standalone/test_explicit_writes.py
|
|
91
|
+
tests/standalone/test_managed_setup.py
|
|
92
|
+
tests/standalone/test_public_api.py
|
|
93
|
+
tests/standalone/test_shared_contracts.py
|
|
94
|
+
tests/standalone/test_shared_evaluation.py
|
|
95
|
+
tests/standalone/test_shared_service.py
|
|
96
|
+
tests/standalone/test_standalone.py
|