holographic-memory 0.6.4

Local-first search engine and agent memory: fast approximate nearest-neighbor and BM25 full-text search, encrypted stores, provable deletion, built on vector-symbolic architectures.
Documentation
# Framework adapter matrix

Every adapter was run against a real `hms-server` (Python) or the native Node addon (JS). Python 3.12, one isolated environment per framework (`integrations/python/run-matrix.sh`). Framework dependency trees conflict, so install exactly one framework extra per environment.

## Python (`pip install "holographic-integrations[<extra>]"`)

| Extra | Adapter docs | Tested version | Verification |
|---|---|---|---|
| `langchain` | [langchain]langchain.md | langchain-core 1.6.12 | `langchain-tests` VectorStore (sync+async) and Retriever suites |
| `langgraph` | [langgraph]langgraph.md | langgraph 1.2.16, langgraph-checkpoint 4.3.0 | `langgraph-checkpoint-conformance` 0.0.2, level FULL (81 passed); store checked against `InMemoryStore` |
| `llamaindex` | [llamaindex]llamaindex.md | llama-index-core 0.14.25 | 21 filter cases against `SimpleVectorStore`; index, retriever, storage-context, memory round trips |
| `haystack` | [haystack]haystack.md | haystack-ai 3.4.0 | `haystack.testing.document_store` mixins (81 passed, 2 upstream-only skips) |
| `dspy` | [dspy]dspy.md | dspy 3.4.1 | real `ChainOfThought` and `ReAct` programs on `DummyLM` |
| `openai-agents` | [openai-agents]openai-agents.md | openai-agents 0.24.0 | real `Runner` with a scripted model |
| `pydantic-ai` | [pydantic-ai]pydantic-ai.md | pydantic-ai-slim 2.58.0 | `Agent.run` with `FunctionModel` / `TestModel` |
| `smolagents` | [smolagents]smolagents.md | smolagents 1.26.0 | `CodeAgent` and `ToolCallingAgent` with a scripted model |
| `litellm` | [litellm]litellm.md | litellm 1.106.0, mcp 2.3.0 | LiteLLM `mock_response` / `mock_tool_calls` loops |
| `crewai` | [crewai]crewai.md | crewai 1.15.28 | real `Crew.kickoff()` with a scripted LLM |
| `autogen` | [autogen]autogen.md | autogen-agentchat / core / ext 0.7.5 | real `AssistantAgent` with a replay client |
| `ag2` | [autogen]autogen.md | ag2 1.1.2 | tool toolkit (AG2 1.x has no memory interface HMS can back) |
| `semantic-kernel` | [semantic-kernel]semantic-kernel.md | semantic-kernel 1.45.0 | real `Kernel.invoke` of a search function |
| `mem0` | [mem0]mem0.md | mem0ai 2.2.1 | one scenario through real mem0 and the shim; result shapes compared |
| `letta` | [letta]letta.md | letta-client 1.12.1 | `PassagesResource` signatures; tool source executed against the real server |

Not verified anywhere: `text_queries=True` (the service embeds text itself) needs a server built with `--features local-models` and model directories; it is covered at the wire level with a mock transport only. A running Letta server was not used.

## Limits common to all adapters

They come from `hms-server` (see `docs/SERVER.md`), and each adapter's page lists how it surfaces them:

- No get-by-id or list endpoint: get is an id-filtered query, enumeration is bounded by the server's `--max-top-k` (default 100) and reported as `truncated`. Adapters that must enumerate more (mem0 `get_all`, stores, chat history) partition records into hash buckets or pages.
- Filters are equality on top-level metadata only. Other operators run client-side after an over-fetch (`overfetch`, bounded by `max_fetch`), so such a filter can return fewer than `k` results.
- `k` greater than `max_fetch` raises `ValueError` instead of silently truncating.
- Scores are cosine similarity in vector mode and a fused rank score in text mode.
- Metadata keys beginning `_hms_` are reserved.

## JavaScript / TypeScript (`integrations/js`, npm workspace; Node 26.8, TypeScript 5.9)

All packages run against the real native addon (`holographic-memory`), no mocks of HMS.

| Package | Adapter docs | Tested version | Verification |
|---|---|---|---|
| `@holographic-memory/core` | [js-core]js-core.md | n/a | 19 tests |
| `@holographic-memory/vercel-ai` | [vercel-ai]vercel-ai.md | ai 7.0.146, zod 4.1 | SDK mock models, real tool loop, `streamText` |
| `@holographic-memory/mastra` | [mastra]mastra.md | @mastra/core 1.78.0, @mastra/memory 1.38.0 | 15 contract tests plus a real `Agent` with semantic recall (Mastra publishes no vector-store test suite) |
| `@holographic-memory/langchain` | [langchainjs]langchainjs.md | @langchain/core 1.2.19 | 23 tests mirroring the standard VectorStore behaviors (`@langchain/standard-tests` is not published on npm) and a real `RunnableWithMessageHistory` run |
| `@holographic-memory/llamaindex` | [llamaindex-ts]llamaindex-ts.md | llamaindex 0.12.1, @llamaindex/core 0.6.22 | 18 tests: `VectorStoreIndex`, all 13 `FilterOperator`s, KV store vs `SimpleKVStore` |
| `@holographic-memory/openai-agents` | [openai-agents-js]openai-agents-js.md | @openai/agents 0.20.0, zod 4.6.7 | 11 tests: `HmsSession` vs `MemorySession`, real `Runner`; ordering at 99/100/101/200+ items |