Compatibility model
These distinctions follow the providers’ official models:
- Mem0 memory operations distinguish add, search, update, delete, entities, and asynchronous events.
- LangGraph persistence stores graph state as checkpoints, while its memory guide separates thread state from cross-thread stores.
- Zep’s graph model distinguishes episodes, entity nodes, and relationship edges.
- Graphiti models temporal facts with validity and episode provenance.
- Letta memory blocks are persistent, always-visible agent context; archival memory is a separate retrieval surface.
- OpenAI Agents SDK sessions maintain ordered conversation history across runs.
Result rules
- A result is always source-labelled.
- Source-local relevance scores stay source-local. Do not compare
0.8from one provider with0.8from another as if they shared a calibration. - Source-qualified duplicates may be grouped for display, but provenance is never discarded.
- Contradictions remain visible. Federation does not silently pick a universal truth.
- Each source reports
ok,timed_out,unavailable, orerror. The aggregate status ispartialonly when at least one source succeeds, andfailedwhen none succeeds. Provider failures are returned with per-source errors rather than thrown, so callers must inspectresult.statusandresult.sources;failedis never disguised as an empty success.
Candidate is not personal memory
The hosted plane uses portable candidate records so developers can opt into Praxa storage later. A candidate is not promptable Praxa personal memory and carries no AHCE consent. Any future promotion requires a separate authenticated owner-review contract and canonical erasure fencing. The hosted vocabulary is deliberately closed. It acceptsmessage, fact, summary, episode,
pinned_context, document, entity, and edge. It rejects LangGraph checkpoints: a checkpoint
is execution state, not a portable durable-memory record. A custom provider ID is available for a
caller-defined adapter only when its records still satisfy the same bounded envelope.