Concepts
Relational Memory
Raw LLMs are memoryless. They greet your patient on session 47 the same way they greet a stranger on session 1. Humane stores a semantic, per-end-user memory that persists across sessions, so the AI actually knows who it's talking to.
MemPalace
We call it MemPalace. It's a tenant-scoped vector store (Chroma under the hood today; swappable) keyed by (user_id, end_user_id). Every user message + AI response is embedded and stored, along with metadata: channel, detected emotions, intent, timestamp.
What gets stored
Each interaction writes one memory record:
{
"text": "User: I'm worried about the surgery tomorrow.\nAssistant: Let's talk through what's on your mind...",
"similarity": 0.0,
"timestamp": "2026-04-17T14:22:10Z",
"end_user_id": "patient_42",
"channel": "ios_app",
"metadata": {
"detected_emotions": ["anxiety"],
"intent": "emotional_support"
}
}How retrieval works
On every process()call, we embed the incoming message and top-K relevant memories (default 3, similarity threshold 0.3) are stitched into the LLM system prompt as context. You'll see them echoed back in the response:
"memory": {
"relevant_memories": [
{ "text": "User said their surgery is tomorrow morning...",
"similarity": 0.78, "timestamp": "..." },
{ "text": "User mentioned they struggle with medical anxiety...",
"similarity": 0.61, "timestamp": "..." }
],
"total_stored": 47,
"interaction_count": 12,
"known_since": "2025-12-03T09:14:00Z",
"last_seen": "2026-04-16T18:41:32Z"
}Why it matters
Longitudinal memory is the single biggest differentiatorbetween Humane and raw LLM calls. For chat-once use cases (search, Q&A) memory doesn't matter. For longitudinal use cases (coaching, therapy, elder care, CS) it's the product.
Retention policy
Memory is capped per plan tier: Community keeps the most recent 500 messages per end-user, Clinic 5,000, Enterprise unlimited. The cap is enforced automatically after every interaction and by a nightly retention sweep.
Privacy & deletion
Right-to-erasure is a single API call:
# Python
client.clear_history("patient_42")
# Or via the platform privacy API
# DELETE /api/privacy/erase/{external_id} → wipes messages, memories, triggers, assignmentsThe privacy API is audit-logged — your compliance officer can prove the deletion happened.
Related API
GET /api/sdk/memory/{user_id}?query=...— Memory explorer (returns hits + match reasons)GET /api/sdk/history/{user_id}— Raw conversation historyDELETE /api/privacy/erase/{external_id}— Full erasure