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.
Files changed (98) hide show
  1. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/MANIFEST.in +3 -0
  2. {hermes_plugin_qdrant_memory-0.2.2/hermes_plugin_qdrant_memory.egg-info → hermes_plugin_qdrant_memory-0.4.0}/PKG-INFO +49 -15
  3. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/README.md +46 -14
  4. hermes_plugin_qdrant_memory-0.4.0/docs/local-embedding.md +152 -0
  5. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0/hermes_plugin_qdrant_memory.egg-info}/PKG-INFO +49 -15
  6. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/hermes_plugin_qdrant_memory.egg-info/SOURCES.txt +29 -1
  7. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/hermes_plugin_qdrant_memory.egg-info/requires.txt +3 -0
  8. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/pyproject.toml +2 -1
  9. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/cli.py +4 -0
  10. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/config.py +14 -3
  11. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/embedding.py +6 -1
  12. hermes_plugin_qdrant_memory-0.4.0/qdrant_memory/local_embedding.py +87 -0
  13. hermes_plugin_qdrant_memory-0.4.0/qdrant_memory/local_model.py +226 -0
  14. hermes_plugin_qdrant_memory-0.4.0/qdrant_memory/managed_setup.py +228 -0
  15. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/mcp_server.py +6 -4
  16. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/plugin.yaml +1 -1
  17. hermes_plugin_qdrant_memory-0.4.0/qdrant_memory/private_paths.py +26 -0
  18. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/reset.py +3 -2
  19. hermes_plugin_qdrant_memory-0.4.0/qdrant_memory/shared_client.py +79 -0
  20. hermes_plugin_qdrant_memory-0.4.0/qdrant_memory/shared_service.py +469 -0
  21. hermes_plugin_qdrant_memory-0.4.0/qdrant_memory/shared_state.py +28 -0
  22. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/standalone.py +68 -4
  23. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/version.py +1 -1
  24. hermes_plugin_qdrant_memory-0.4.0/requirements-local.txt +1080 -0
  25. hermes_plugin_qdrant_memory-0.4.0/requirements.txt +22 -0
  26. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/scripts/demo.sh +48 -10
  27. hermes_plugin_qdrant_memory-0.4.0/tests/__init__.py +1 -0
  28. hermes_plugin_qdrant_memory-0.4.0/tests/conftest.py +39 -0
  29. hermes_plugin_qdrant_memory-0.4.0/tests/helpers.py +101 -0
  30. hermes_plugin_qdrant_memory-0.4.0/tests/local_model/test_acceptance.py +211 -0
  31. hermes_plugin_qdrant_memory-0.4.0/tests/standalone/__init__.py +1 -0
  32. hermes_plugin_qdrant_memory-0.4.0/tests/standalone/test_explicit_writes.py +109 -0
  33. hermes_plugin_qdrant_memory-0.4.0/tests/standalone/test_managed_setup.py +332 -0
  34. hermes_plugin_qdrant_memory-0.4.0/tests/standalone/test_public_api.py +388 -0
  35. hermes_plugin_qdrant_memory-0.4.0/tests/standalone/test_shared_contracts.py +295 -0
  36. hermes_plugin_qdrant_memory-0.4.0/tests/standalone/test_shared_evaluation.py +53 -0
  37. hermes_plugin_qdrant_memory-0.4.0/tests/standalone/test_shared_service.py +700 -0
  38. hermes_plugin_qdrant_memory-0.4.0/tests/standalone/test_standalone.py +386 -0
  39. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_checkpoint_lifecycle.py +7 -4
  40. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_ci_gate.py +6 -5
  41. hermes_plugin_qdrant_memory-0.4.0/tests/test_host_pins.py +180 -0
  42. hermes_plugin_qdrant_memory-0.4.0/tests/test_local_embedding.py +148 -0
  43. hermes_plugin_qdrant_memory-0.4.0/tests/test_local_embedding_provider.py +151 -0
  44. hermes_plugin_qdrant_memory-0.4.0/tests/test_local_model.py +208 -0
  45. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_migration_progress.py +4 -1
  46. hermes_plugin_qdrant_memory-0.4.0/tests/test_readme_release_contract.py +136 -0
  47. hermes_plugin_qdrant_memory-0.4.0/tests/test_reset_inspection.py +55 -0
  48. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/LICENSE +0 -0
  49. {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
  50. {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
  51. {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
  52. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/__init__.py +0 -0
  53. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/config_schema.py +0 -0
  54. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/dedupe.py +0 -0
  55. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/extraction.py +0 -0
  56. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/inventory.py +0 -0
  57. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/ledger.py +0 -0
  58. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/migration.py +0 -0
  59. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/models.py +0 -0
  60. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/ownership.py +0 -0
  61. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/progress.py +0 -0
  62. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/provider.py +0 -0
  63. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/qdrant_store.py +0 -0
  64. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/retry.py +0 -0
  65. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/runtime.py +0 -0
  66. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/qdrant_memory/tools.py +0 -0
  67. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/setup.cfg +0 -0
  68. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_backend_contracts.py +0 -0
  69. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_bot_scope.py +0 -0
  70. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_bounded_recovery.py +0 -0
  71. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_cli_output.py +0 -0
  72. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_config_embedding.py +0 -0
  73. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_deletion_ordering.py +0 -0
  74. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_discovery_cli.py +0 -0
  75. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_explicit_dedupe.py +0 -0
  76. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_host_lifecycle.py +0 -0
  77. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_input_validation.py +0 -0
  78. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_inventory_export.py +0 -0
  79. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_live_metrics.py +0 -0
  80. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_maintenance.py +0 -0
  81. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_manifest_contract.py +0 -0
  82. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_migration.py +0 -0
  83. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_migration_endpoints.py +0 -0
  84. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_migration_resume.py +0 -0
  85. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_migration_superseded.py +0 -0
  86. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_profile_scope.py +0 -0
  87. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_provider.py +0 -0
  88. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_recovery_benchmark.py +0 -0
  89. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_recovery_evaluation.py +0 -0
  90. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_remote_qdrant.py +0 -0
  91. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_reset_recovery.py +0 -0
  92. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_retention.py +0 -0
  93. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_review_regressions.py +0 -0
  94. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_session_provenance.py +0 -0
  95. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_setup_contract.py +0 -0
  96. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_shutdown_contract.py +0 -0
  97. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_store_runtime.py +0 -0
  98. {hermes_plugin_qdrant_memory-0.2.2 → hermes_plugin_qdrant_memory-0.4.0}/tests/test_writer_ownership.py +0 -0
@@ -4,3 +4,6 @@ prune assets
4
4
 
5
5
  # The text demo script is small and ships with the source distribution.
6
6
  include scripts/demo.sh
7
+ include docs/local-embedding.md
8
+ include requirements.txt requirements-local.txt
9
+ recursive-include tests *.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hermes-plugin-qdrant-memory
3
- Version: 0.2.2
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
  [![CI](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/ci.yml/badge.svg)](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/ci.yml)
25
31
  [![Platform compatibility](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/platform-compat.yml/badge.svg)](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/platform-compat.yml)
26
32
  [![Standalone CLI and MCP](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/standalone.yml/badge.svg)](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/standalone.yml)
@@ -28,15 +34,22 @@ Dynamic: license-file
28
34
  [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/downloads/)
29
35
  [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
30
36
 
31
- > **Runtime 0.2.2** supports MCP Python SDK 1.x and 2.x for the standalone
32
- > CLI/MCP. MCP distribution 0.1.2 pins Runtime 0.2.2. Explicit writes retain
33
- > canonical-text deduplication without an LLM.
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.2.2.md) and [validation](docs/validation.md).
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.2.2'` (omit `[mcp]`
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
  ![Terminal recording: install the plugin, store a preference, and recall it in a new session](https://raw.githubusercontent.com/cnkang/hermes-plugin-qdrant-memory/main/assets/demo.gif)
109
122
 
110
- The recording shows the full flow on a clean profile. It installs from the
111
- official Hermes Plugin Catalog, teaches a preference, and waits for the
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
- **Recommended: install from the official Hermes Plugin Catalog.**
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
- **Version-locked: install the verified Runtime 0.2.2 source through the Hermes CLI.**
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 MCP SDK 1.x/2.x support and the
147
- explicit-write fix. It does not
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 2fd43ad2259bd98d039394b8b714e5e89b5ab3a8 # verified Runtime 0.2.2 source
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.2.2.
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
  [![CI](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/ci.yml/badge.svg)](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/ci.yml)
4
8
  [![Platform compatibility](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/platform-compat.yml/badge.svg)](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/platform-compat.yml)
5
9
  [![Standalone CLI and MCP](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/standalone.yml/badge.svg)](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/standalone.yml)
@@ -7,15 +11,22 @@
7
11
  [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/downloads/)
8
12
  [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
9
13
 
10
- > **Runtime 0.2.2** supports MCP Python SDK 1.x and 2.x for the standalone
11
- > CLI/MCP. MCP distribution 0.1.2 pins Runtime 0.2.2. Explicit writes retain
12
- > canonical-text deduplication without an LLM.
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.2.2.md) and [validation](docs/validation.md).
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.2.2'` (omit `[mcp]`
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
  ![Terminal recording: install the plugin, store a preference, and recall it in a new session](https://raw.githubusercontent.com/cnkang/hermes-plugin-qdrant-memory/main/assets/demo.gif)
88
99
 
89
- The recording shows the full flow on a clean profile. It installs from the
90
- official Hermes Plugin Catalog, teaches a preference, and waits for the
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
- **Recommended: install from the official Hermes Plugin Catalog.**
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
- **Version-locked: install the verified Runtime 0.2.2 source through the Hermes CLI.**
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 MCP SDK 1.x/2.x support and the
126
- explicit-write fix. It does not
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 2fd43ad2259bd98d039394b8b714e5e89b5ab3a8 # verified Runtime 0.2.2 source
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.2.2.
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.2.2
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
  [![CI](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/ci.yml/badge.svg)](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/ci.yml)
25
31
  [![Platform compatibility](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/platform-compat.yml/badge.svg)](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/platform-compat.yml)
26
32
  [![Standalone CLI and MCP](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/standalone.yml/badge.svg)](https://github.com/cnkang/hermes-plugin-qdrant-memory/actions/workflows/standalone.yml)
@@ -28,15 +34,22 @@ Dynamic: license-file
28
34
  [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/downloads/)
29
35
  [![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
30
36
 
31
- > **Runtime 0.2.2** supports MCP Python SDK 1.x and 2.x for the standalone
32
- > CLI/MCP. MCP distribution 0.1.2 pins Runtime 0.2.2. Explicit writes retain
33
- > canonical-text deduplication without an LLM.
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.2.2.md) and [validation](docs/validation.md).
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.2.2'` (omit `[mcp]`
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
  ![Terminal recording: install the plugin, store a preference, and recall it in a new session](https://raw.githubusercontent.com/cnkang/hermes-plugin-qdrant-memory/main/assets/demo.gif)
109
122
 
110
- The recording shows the full flow on a clean profile. It installs from the
111
- official Hermes Plugin Catalog, teaches a preference, and waits for the
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
- **Recommended: install from the official Hermes Plugin Catalog.**
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
- **Version-locked: install the verified Runtime 0.2.2 source through the Hermes CLI.**
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 MCP SDK 1.x/2.x support and the
147
- explicit-write fix. It does not
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 2fd43ad2259bd98d039394b8b714e5e89b5ab3a8 # verified Runtime 0.2.2 source
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.2.2.
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
@@ -2,5 +2,8 @@ qdrant-client<2,>=1.15
2
2
  httpx<1,>=0.28
3
3
  portalocker<4,>=3.2
4
4
 
5
+ [local]
6
+ fastembed==0.9.0
7
+
5
8
  [mcp]
6
9
  mcp<3,>=1.30