Four steps to
persistent memory
CLAIV extracts structured facts from conversations, recalls them within your token budget, and deletes them with cryptographic proof.
Three API endpoints. No memory logic to build.
Ingest Messages
Send conversation messages via a single POST. CLAIV stores the event immediately and queues it for background enrichment. No schemas to define — any message content works.
POST /v6/ingest
{
"user_id": "user-123",
"type": "message",
"role": "user",
"content": "I switched from Vue to React last month.
Using TypeScript for everything now."
}
=> {
"event_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"deduped": false
}Background Enrichment
The worker runs a 5-step pipeline on every ingested message: Extract propositions (LLM), Map to catalog predicates, Gate by utility score, Embed for vector search, and Tier by importance. Typically 1–5 seconds.
// Facts extracted and stored automatically:
{
"fact_id": "uuid-1",
"subject": "user",
"kind": "preference",
"predicate": "prefers_framework",
"object_text": "React",
"relation_phrase": "prefers working with",
"source_text": "I switched from Vue to React",
"confidence": 0.95,
"importance": 0.8,
"tier": "hot"
}Recall
Before each LLM response, ask CLAIV for relevant context. Optionally include a conversation_id for conversation-scoped memory (recent turns weighted higher), or omit it for cross-chat memory across all conversations. Multiple search channels run in parallel — predicate match, vector similarity, keyword, and temporal — returning tiered facts plus a pre-synthesized narrative.
POST /v6/recall
{
"user_id": "user-123",
"conversation_id": "conv-session-456", // optional
"query": "What tech stack does this user prefer?"
}
=> {
"llm_context": {
"text": "The user prefers React and TypeScript.
They switched from Vue last month."
},
"answer_facts": [
{
"predicate": "prefers_framework",
"object_text": "React",
"source_text": "I switched from Vue to React"
}
],
"routing": { "mode": "single" }
}Forget with Deletion Receipts
Delete a user's memory and receive a structured receipt documenting exactly what was removed — events, facts, episodes, and derived data. GDPR and CCPA compliant deletion with provable counts.
POST /v6/forget
{
"user_id": "user-123"
}
=> {
"receipt_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"deleted_counts": {
"events": 5,
"episodes": 2,
"facts": 12,
"chunks": 0,
"claims": 0,
"open_loops": 0
}
}Production-ready
Built for production AI
Not a vector database with a memory label. Structured, deterministic, and auditable by design.
Tiered Memory
Facts are automatically classified as hot, warm, or cold based on importance and access frequency. Hot-tier facts are always included in recall. Lower tiers surface via vector search.
Evidence Spans
Every extracted fact includes a verbatim quote from the original message that produced it. Know exactly where each fact came from with character-exact source attribution.
Temporal Resolution
Facts containing temporal expressions ("last week", "next month") are resolved to absolute date ranges. Recall queries with time intent retrieve facts whose dates match.
Predicate Routing
Each recall query is analyzed to identify the target fact kinds and predicates. Multiple search channels run in parallel — predicate match, vector similarity, keyword, and temporal — then merged.
Deletion Receipts
Every forget operation returns a structured receipt with exact counts of what was deleted — events, facts, episodes, and derived data. Verifiable compliance for GDPR and CCPA.
Synthesized Context
Every recall response includes a pre-built llm_context.text narrative synthesized from the top facts. Inject it directly into your system prompt — no post-processing required.
Ready to get started?
Add persistent memory to your AI application in minutes. Start with the free tier, scale as you grow.