LangGraph integration for Hindsight - persistent memory tools, nodes, and memory instructions for AI agents
Project description
hindsight-langgraph
LangGraph and LangChain integration for Hindsight — persistent long-term memory for AI agents.
Provides three integration patterns:
- Tools — retain/recall/reflect as LangChain
@toolfunctions for agent-driven memory. Works with both LangChain and LangGraph. - Nodes (LangGraph) — pre-built graph nodes for automatic memory injection and storage
- Memory Instructions — pre-fetch memories into a system prompt string. Works with any LangChain model, no graph needed.
Prerequisites
- A Hindsight Cloud account or a self-hosted Hindsight instance
- Python 3.10+
Installation
pip install hindsight-langgraph
Quick Start: Tools
Bind Hindsight memory tools to your LangGraph agent so it can store and retrieve memories on demand.
from hindsight_langgraph import create_hindsight_tools
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
# Set HINDSIGHT_API_KEY env var to authenticate
tools = create_hindsight_tools(bank_id="user-123")
agent = create_react_agent(
ChatOpenAI(model="gpt-4o"),
tools=tools,
)
result = await agent.ainvoke(
{"messages": [{"role": "user", "content": "Remember that I prefer dark mode"}]}
)
Quick Start: Memory Nodes
Add recall and retain nodes to your graph for automatic memory injection before LLM calls and storage after responses.
from hindsight_langgraph import create_recall_node, create_retain_node
from langgraph.graph import StateGraph, MessagesState, START, END
recall = create_recall_node(bank_id="user-123")
retain = create_retain_node(bank_id="user-123")
builder = StateGraph(MessagesState)
builder.add_node("recall", recall)
builder.add_node("agent", agent_node) # your LLM node
builder.add_node("retain", retain)
builder.add_edge(START, "recall")
builder.add_edge("recall", "agent")
builder.add_edge("agent", "retain")
builder.add_edge("retain", END)
graph = builder.compile()
Dynamic Bank IDs
Use bank_id_from_config to resolve the bank per-request from the graph's config:
recall = create_recall_node(bank_id_from_config="user_id")
retain = create_retain_node(bank_id_from_config="user_id")
# Bank ID resolved at runtime
result = await graph.ainvoke(
{"messages": [{"role": "user", "content": "hello"}]},
config={"configurable": {"user_id": "user-456"}},
)
Quick Start: Memory Instructions
Pre-fetch memories and inject them into a system prompt. Works with any LangChain model — no graph needed.
from hindsight_langgraph import memory_instructions
from langchain_openai import ChatOpenAI
get_instructions = memory_instructions(
bank_id="user-123",
base_instructions="You are a helpful assistant.",
)
# Each call re-fetches memories, so it stays up to date
instructions = await get_instructions()
response = await ChatOpenAI(model="gpt-4o").ainvoke([
{"role": "system", "content": instructions},
{"role": "user", "content": "What do you know about me?"},
])
Configuration
Global config
from hindsight_langgraph import configure
configure(
api_key="your-api-key", # or set HINDSIGHT_API_KEY env var
budget="mid",
tags=["source:langgraph"],
)
Self-hosted instance
To connect to a self-hosted Hindsight instance instead of Hindsight Cloud:
configure(
hindsight_api_url="http://localhost:8888",
)
Or pass hindsight_api_url directly to any factory function:
tools = create_hindsight_tools(bank_id="user-123", hindsight_api_url="http://localhost:8888")
Per-call overrides
All factory functions accept client, hindsight_api_url, and api_key to override the global config.
| Parameter | Description | Default |
|---|---|---|
hindsight_api_url |
Hindsight API URL | https://api.hindsight.vectorize.io |
api_key |
API key (or HINDSIGHT_API_KEY env var) |
None |
budget |
Recall budget: low, mid, high |
mid |
max_tokens |
Max tokens for recall results | 4096 |
tags |
Tags applied to retain operations | None |
recall_tags |
Tags to filter recall results | None |
recall_tags_match |
Tag matching: any, all, any_strict, all_strict |
any |
Requirements
- Python 3.10+
langchain-core >= 0.3.0hindsight-client >= 0.4.0langgraph >= 0.3.0(only for nodes pattern — install withpip install hindsight-langgraph[langgraph])
Documentation
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hindsight_langgraph-0.2.0.tar.gz.
File metadata
- Download URL: hindsight_langgraph-0.2.0.tar.gz
- Upload date:
- Size: 165.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa8178e6848e6345b706416d008e3734865885909ae9911c36cdb37da1517b88
|
|
| MD5 |
1c66f160167d94e8b1381a64b5ff380d
|
|
| BLAKE2b-256 |
a058d568d37086fd54c26477db6bf0c64eae831733a1f22e91133c65f75769bf
|
Provenance
The following attestation bundles were made for hindsight_langgraph-0.2.0.tar.gz:
Publisher:
release-integration.yml on vectorize-io/hindsight
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hindsight_langgraph-0.2.0.tar.gz -
Subject digest:
fa8178e6848e6345b706416d008e3734865885909ae9911c36cdb37da1517b88 - Sigstore transparency entry: 1735591694
- Sigstore integration time:
-
Permalink:
vectorize-io/hindsight@05602730e8484ffa1f07c93dac304419214e893b -
Branch / Tag:
refs/tags/integrations/langgraph/v0.2.0 - Owner: https://github.com/vectorize-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-integration.yml@05602730e8484ffa1f07c93dac304419214e893b -
Trigger Event:
push
-
Statement type:
File details
Details for the file hindsight_langgraph-0.2.0-py3-none-any.whl.
File metadata
- Download URL: hindsight_langgraph-0.2.0-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c5f1af3e317b687cea7855cc825549cd206200aa4c7edd72b1b85917c8ab290
|
|
| MD5 |
fbdffc8dc7d6d2ba253fda7ba568b31b
|
|
| BLAKE2b-256 |
f25104eca09d0e2ca69b05f2c4402c8b158ecf46f8419bbd32b510f645545241
|
Provenance
The following attestation bundles were made for hindsight_langgraph-0.2.0-py3-none-any.whl:
Publisher:
release-integration.yml on vectorize-io/hindsight
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
hindsight_langgraph-0.2.0-py3-none-any.whl -
Subject digest:
9c5f1af3e317b687cea7855cc825549cd206200aa4c7edd72b1b85917c8ab290 - Sigstore transparency entry: 1735592046
- Sigstore integration time:
-
Permalink:
vectorize-io/hindsight@05602730e8484ffa1f07c93dac304419214e893b -
Branch / Tag:
refs/tags/integrations/langgraph/v0.2.0 - Owner: https://github.com/vectorize-io
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release-integration.yml@05602730e8484ffa1f07c93dac304419214e893b -
Trigger Event:
push
-
Statement type: