GoodMemGoodMem
IntegrationsObservability & Eval

HoneyHive

Wrap the GoodMem REST API in a traced Python client so every GoodMem call surfaces as a HoneyHive span.

Stable· Python

Overview

GoodMem is a memory layer for AI agents that handles embedding, vector search, reranking, and LLM-powered answering server-side. The HoneyHive integration wraps the GoodMem REST API in a Python client whose every operation is decorated with HoneyHive's @trace, so each GoodMem call — creating spaces, storing memories, semantic retrieval — shows up as a span in the active HoneyHive session for tracing and observability.

Installation

pip install honeyhive-goodmem

The pip package is honeyhive-goodmem; the import name is honeyhive_goodmem.

Configuration

GoodMem connection settings are passed to the client through a GoodMemConfig object rather than environment variables:

SettingDescription
base_urlBase URL of your GoodMem server (no /v1 suffix), e.g. https://your-goodmem-server.example.com.
api_keyGoodMem API key used to authenticate requests.
verify_sslSet to false to skip TLS verification for self-signed dev certs (default: true).

In addition, HoneyHive tracing is initialized separately via HoneyHiveTracer.init(), which requires your HoneyHive credentials:

ArgumentDescription
api_keyHoneyHive API key (e.g. hh_...).
projectHoneyHive project name that spans are reported under.

Quick start

from honeyhive import HoneyHiveTracer
from honeyhive_goodmem import GoodMemClient, GoodMemConfig

HoneyHiveTracer.init(api_key="hh_...", project="my-project")

client = GoodMemClient(
    GoodMemConfig(
        base_url="https://your-goodmem-server.example.com",
        api_key="gm_xxxxxxxxxxxxxxxxxxxxxxxx",
    )
)

embedders = client.list_embedders()
embedder_id = embedders["embedders"][0]["embedder_id"]

space = client.create_space(name="quickstart", embedder_id=embedder_id)
space_id = space["space_id"]

client.create_memory(
    space_id=space_id,
    text_content="The capital of France is Paris.",
)

results = client.retrieve_memories(
    query="What is the capital of France?",
    space_ids=[space_id],
    max_results=3,
)
print(results)

Local development. The example above uses a TLS-verified production URL. If you are running GoodMem locally with a self-signed certificate, use https://localhost:8080 and disable TLS verification with the client's verify-SSL option (see the Configuration table above). Keep TLS verification enabled for any deployed server.

Retrieval post-processing

GoodMem's retrieval call accepts these optional post-processing parameters (each framework exposes them under its own naming convention):

ParameterRangeDescription
reranker_idUUIDReranker model that reorders matched chunks by relevance.
llm_idUUIDLLM that generates a contextual answer (abstractReply) alongside the chunks.
relevance_threshold0–1Minimum relevance score for a result to be included.
llm_temperature0–2Sampling temperature for the LLM post-processor.
max_resultsintegerMaximum number of results to return.
chronological_resortbooleanRe-sort the final results by creation time instead of relevance.

Learn more

The full README, examples, and API reference are available on the PyPI package page.