AI memory for every app. Store, search, and chat with persistent memory.
Project description
HeroBrain Python SDK
AI memory for every app. Give your AI persistent, searchable memory in 3 lines of code.
Install
pip install herobrain
Quick start
from herobrain import HeroBrainMemory
m = HeroBrainMemory(api_key="hb_...")
# Store a memory
m.add("User prefers dark mode and uses Python 3.12")
# Search memories
results = m.search("what programming language?")
print(results[0]["memory"]["content"])
# → "User prefers dark mode and uses Python 3.12"
# Chat with memory context
reply = m.chat("What do you know about my preferences?")
print(reply["response"])
That's it. HeroBrain handles embedding, dedup, hybrid search, and fact extraction automatically.
Configuration
from herobrain import HeroBrainMemory
# Pass the key directly
m = HeroBrainMemory(api_key="hb_...")
# Or set an environment variable
# export HEROBRAIN_API_KEY=hb_...
m = HeroBrainMemory()
# Self-hosted
m = HeroBrainMemory(
api_key="hb_...",
base_url="https://your-instance.example.com",
)
Memories
# Add a memory (auto-extracts facts, deduplicates, and classifies)
memories = m.add("I have a meeting with Jake tomorrow at 2pm")
# Add with options
memories = m.add(
"Alice lives in Portland",
agent_id="user-alice", # isolate per user
type="identity", # semantic, episodic, identity, preference, task, procedural
importance=0.9,
metadata={"source": "onboarding"},
expires_at="2026-12-31T00:00:00Z", # auto-cleanup
)
# Search
results = m.search("where does alice live?", agent_id="user-alice")
# List all
all_memories = m.list(limit=50, agent_id="user-alice")
# Get one
memory = m.get("memory-uuid")
# Update
m.update("memory-uuid", content="Alice moved to Seattle")
# Delete
m.delete("memory-uuid")
# History (audit trail)
history = m.history("memory-uuid")
Chat
Memory-grounded conversations with streaming support.
# Simple chat
reply = m.chat("What meetings do I have?")
print(reply["response"])
print(reply["memoryReferences"]) # which memories were used
# Streaming
for event in m.chat_stream("Tell me about my week"):
if event["type"] == "text":
print(event["content"], end="", flush=True)
# Scoped to a user
reply = m.chat("What's my name?", agent_id="user-alice")
Multi-user / multi-agent
Use agent_id to isolate memory per user, agent, or session — just like Stripe uses customer_id.
# Each user gets their own memory space
m.add("Loves hiking", agent_id="user-42")
m.add("Prefers email", agent_id="user-42")
# Only searches user-42's memories
results = m.search("hobbies", agent_id="user-42")
# Chat with user-42's context only
reply = m.chat("What do I like?", agent_id="user-42")
Async
from herobrain import AsyncHeroBrainMemory
async def main():
m = AsyncHeroBrainMemory(api_key="hb_...")
memories = await m.add("User signed up for Pro plan")
results = await m.search("plan")
reply = await m.chat("What plan am I on?")
await m.close()
Error handling
from herobrain import HeroBrainMemory, HeroBrainAuthError, HeroBrainRateLimitError
m = HeroBrainMemory(api_key="hb_...")
try:
m.search("hello")
except HeroBrainAuthError:
print("Bad API key")
except HeroBrainRateLimitError as e:
print(f"Rate limited. Retry after {e.retry_after}s")
Get your API key
- Go to herobrain.app
- Create an account
- Go to API Keys and generate one
pip install herobrainand start building
Links
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 herobrain-0.1.3.tar.gz.
File metadata
- Download URL: herobrain-0.1.3.tar.gz
- Upload date:
- Size: 9.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc09ef1d335ea87a201152f296bd60e39296f3968ead1ec6dfd859ec2a6fc17e
|
|
| MD5 |
c88cf50adfa752702bc074ff344be601
|
|
| BLAKE2b-256 |
f5523d6c2ed6d2259436acedbe71b48017dec3b3ab1e26b20ff912c58ba159f7
|
File details
Details for the file herobrain-0.1.3-py3-none-any.whl.
File metadata
- Download URL: herobrain-0.1.3-py3-none-any.whl
- Upload date:
- Size: 8.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c53e143230da5436187874f697643e8f16e3d642bae1d35cd91c85b8b6fce596
|
|
| MD5 |
f9f3a5d19334aadc0294756f4b982b38
|
|
| BLAKE2b-256 |
f04a01ad3703953ef1feccdeb3dd3ca83639b422035bdf143587ec6c329af6f7
|