HindsightEmbedded forwarded every LLM/daemon setting on every construction, using placeholder defaults for the ones the caller never mentioned. The embed manager merges the caller's config over the profile .env and copies any non-None HINDSIGHT_* entry into the daemon environment, so a client built without credentials overwrote a key inherited from the profile or the parent shell -- and _register_profile then persisted the placeholders back into the profile's .env file, leaving a profile configured for anthropic recorded as groq on disk. llm_provider, llm_api_key, llm_model, log_level and idle_timeout now default to None and are omitted when not passed, so the daemon resolves them from the profile .env, then the parent environment, then its own defaults. An explicit empty string remains an override, which is how a local LLM service with no authentication clears an inherited key.
hindsight-all
All-in-one package for Hindsight - Agent Memory That Works Like Human Memory
Quick Start
from hindsight import start_server, HindsightClient
# Start server with embedded PostgreSQL
server = start_server(
llm_provider="groq",
llm_api_key="your-api-key",
llm_model="openai/gpt-oss-120b"
)
# Create client
client = HindsightClient(base_url=server.url)
# Store memories
client.put(agent_id="assistant", content="User prefers Python for data analysis")
# Search memories
results = client.search(agent_id="assistant", query="programming preferences")
# Generate contextual response
response = client.think(agent_id="assistant", query="What languages should I recommend?")
# Stop server when done
server.stop()
Using Context Manager
from hindsight import HindsightServer, HindsightClient
with HindsightServer(llm_provider="groq", llm_api_key="...") as server:
client = HindsightClient(base_url=server.url)
# ... use client ...
# Server automatically stops
Installation
pip install hindsight-all