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:

json
{
  "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:

json
"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.

Explore it in the UI
Open any patient in the Ambuja reference client. The Patient Journey page has a live memory explorer — type a query, see which stored memories match, with similarity scores and a human-readable "match strength" (strong / moderate / weak).

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
# Python
client.clear_history("patient_42")

# Or via the platform privacy API
# DELETE /api/privacy/erase/{external_id}  →  wipes messages, memories, triggers, assignments

The 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 history
  • DELETE /api/privacy/erase/{external_id} — Full erasure