Skip to content

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-core 1.6.12 langchain-tests VectorStore (sync+async) and Retriever suites
langgraph langgraph 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 llama-index-core 0.14.25 21 filter cases against SimpleVectorStore; index, retriever, storage-context, memory round trips
haystack haystack haystack-ai 3.4.0 haystack.testing.document_store mixins (81 passed, 2 upstream-only skips)
dspy dspy dspy 3.4.1 real ChainOfThought and ReAct programs on DummyLM
openai-agents openai-agents openai-agents 0.24.0 real Runner with a scripted model
pydantic-ai pydantic-ai pydantic-ai-slim 2.58.0 Agent.run with FunctionModel / TestModel
smolagents smolagents smolagents 1.26.0 CodeAgent and ToolCallingAgent with a scripted model
litellm litellm litellm 1.106.0, mcp 2.3.0 LiteLLM mock_response / mock_tool_calls loops
crewai crewai crewai 1.15.28 real Crew.kickoff() with a scripted LLM
autogen autogen autogen-agentchat / core / ext 0.7.5 real AssistantAgent with a replay client
ag2 autogen ag2 1.1.2 tool toolkit (AG2 1.x has no memory interface HMS can back)
semantic-kernel semantic-kernel semantic-kernel 1.45.0 real Kernel.invoke of a search function
mem0 mem0 mem0ai 2.2.1 one scenario through real mem0 and the shim; result shapes compared
letta letta 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 n/a 19 tests
@holographic-memory/vercel-ai vercel-ai ai 7.0.146, zod 4.1 SDK mock models, real tool loop, streamText
@holographic-memory/mastra mastra @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 @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 0.12.1, @llamaindex/core 0.6.22 18 tests: VectorStoreIndex, all 13 FilterOperators, KV store vs SimpleKVStore
@holographic-memory/openai-agents openai-agents-js @openai/agents 0.20.0, zod 4.6.7 11 tests: HmsSession vs MemorySession, real Runner; ordering at 99/100/101/200+ items