Memori synthesis
Type: agentic-system-analyses/types/agentic-system-synthesis.md
Bounded synthesis
From application turn to later context
Memori is a memory and context-engineering system around model clients and agent hosts, not the enclosing agent runtime. It claims to turn conversations and activity into reusable facts, preferences, relationships and skills. This analysis covers its shipped Python and TypeScript SDKs, Rust engine, host integrations, instructions and selected evaluators at commit 574b1ea3e876f100ef82c37817d603eb7e258e59, with an applicability cutoff of 2026-10-17. Its boundary is complete artifact, partial loop: normal augmentation depends on hosted derivation whose implementation is not supplied. Local database ownership does not imply local extraction. SRC-1 supplies inspected implementation, declared design and attributed operational claims, but no observed run or causal experiment. No target code, tests, examples or services were executed. See the boundary and evidence, Source register and EPI-CLM-structured-memory.
In the ordinary Python non-streaming path, an application registers a provider client and supplies attribution, model and messages. Memori selects recalled context and stored history before calling the original provider method. Afterwards it formats the interaction, persists conversation material and dispatches augmentation. The application still decides the next task action and interprets the returned answer. Synchronous persistence can fail after inference has succeeded; background augmentation is a separate completion boundary. The shipped SQLite caller makes successive calls but waits for augmentation only after its queries, so it does not establish that first-turn facts are ready for the next turn. See RT-RTE-python-invocation.
This progression is not universal. The generic Python iterator persists its accumulated response on exhaustion but does not invoke the non-streaming augmentation dispatcher; early termination does not reach that exhaustion write. TypeScript installs before/after middleware hooks, with caught memory failures that can leave the original request or answer available. Registered OpenAI originals remain reachable, so interception is not universal mediation. These are implemented route differences, not observed failures. See RT-RTE-stream-exhaustion and RT-RTE-typescript-hooks.
What is retained, and what admission establishes
Conversation rows and derived memory are different retained layers. The inspected SQLite history stores role/content values, not complete tool-call linkage. Replay removes tool rows and empty assistant messages on inspected compatible-provider paths. Facts are natural-language assertions; embeddings are dense numerical ranking representations, not updated model weights. Mention links associate facts with conversations and their current summaries, but do not retain an extraction justification. Summaries can be overwritten and later reused. See MEM-OBJ-conversation-message, MEM-OBJ-entity-fact, MEM-OBJ-content-embedding and MEM-OBJ-conversation-summary.
Normal augmentation submits selected interaction content to a service, maps its response into facts, graph triples, process attributes and summaries, and schedules writes without an inspected per-item human approval step. Python can reuse a prior summary with the latest user/assistant pair; Rust sends no prior summary. Native mock responses and empty-operation/raw-content fallback are separate alternatives, so not every emitted operation represents service-approved extraction, and fallback emission alone does not prove adapter persistence. See RT-RTE-augmentation-admission and MEM-OBJ-entity-fact.
Client checks establish handling permissions, not truth. Triple field checks license parsing; deterministic triple rendering re-expresses a simple positive relation. Nonempty fields and valid identities license scheduling, while database commits establish retention at their own boundary. None is an evidence-consuming decision accepting a proposition as true for a named epistemic use. The service's semantic transformation remains indeterminate: it cannot be classified as checked derivation or ampliative conjecture without appropriate evidence. See EPI-RTE-triple-shape, EPI-RTE-triple-rendering, EPI-RTE-memory-scheduling and EPI-RTE-local-retention.
Selection, influence and maintenance
At a later registered invocation, local recall combines entity-scoped candidate access, query embeddings, dense/lexical ranking, result limits and a relevance threshold. Python defaults include 1,000 embedding candidates, five facts and a 0.1 threshold; TypeScript local recall uses 100 dense candidates and ten results. Associated summaries expand the selected text. History replay is separate and is not rejected merely because every fact fails the relevance threshold. These count limits are not a token ceiling over facts, summaries and history. See MEM-RTE-fact-selection and the TypeScript memory annotation.
The backend request retrieves memory on demand; the wrapper's automatic selection then supplies that memory to the provider without a separate provider request for those items. This is within-invocation context supply, not unsolicited background messaging. Facts, summaries and replayed history reach model input by value. Their role is contextual/reference material, while fact text, vectors and recency/count metadata also affect ranking. System/instruction-channel placement does not establish obedience, truth or safe precedence over current user instructions. See RT-BAP-recalled-context, MEM-OBJ-fact-access and the profile verification.
Maintenance changes different parts independently. Repeated SQLite fact admission refreshes occurrence/time metadata rather than revising its meaning. Summary replacement revises a field; display-time summary deduplication removes repeated delivered text. BYODB entity withdrawal deletes facts and graph entries while preserving conversations and summaries, leaving replay and possible re-derivation paths. It does not revoke text already delivered. Feedback tools transmit reports without an inspected local fact-repair or policy-update consumer. See MEM-OBJ-fact-access, MEM-OBJ-conversation-summary, MEM-RTE-entity-withdrawal and MEM-RTE-feedback-submission.
Agent-host workflow and restoration
The representative shipped workflow is a Claude Code turn: the loaded skill asks the foreground agent to recall before substantive work, complete the user's task, then submit the drafted response and optional tool trace through a Bash CLI. This is policy-coordinated sequencing, not a Memori scheduler or a barrier preventing premature work. The CLI validates request shape, credentials, filters and trace structure, but does not verify task success, redaction or memory truth. Its default recall spans project sessions, rejects a query flag and permits explicit filters. Turn submission is awaited before collector augmentation; collector failure is logged but still returns success with augmentation: true. That response is not a derived-memory receipt. User delivery remains the enclosing agent's responsibility. See RT-RTE-claude-skill and the workflow account.
Other hosts have different control owners. Hermes prefetch is empty and recall is intentional tool use; OpenClaw registers prompt and completed-turn hooks, with capture conditioned on host access and parsed event content. Its sanitizer can discard everything through the last code fence, including a prohibition or necessary qualifier; this source deduction defeats a lossless-capture guarantee without establishing an observed false memory. Hosted MCP guidance asks for intentional recall and durable-only submission, unlike Claude's ambient bookkeeping policy. See RT-RTE-hermes-provider, RT-RTE-openclaw-hooks, EPI-RTE-capture-cleanup and RT-RTE-mcp-guidance.
Compaction tools request service-generated resume material and a recent-message tail after context loss. Advertised standing orders and continuation fields can guide future action, but their actual contents and private retained representation are unavailable. Clients do not themselves demonstrate host-window trimming, checkpoint restoration or isolated sub-agent frames. Prompts ask for current-user priority and verification of stale operational details; they do not enforce either. See MEM-OBJ-agent-memory and RT-BAP-host-memory-guidance.
What the evidence supports about learning and improvement
The strongest supported contribution is a wired interaction-fed update and later-consumer chain: completed conversations feed automatic durable fact/summary writes, and later invocations can receive those artifacts as context. Python's summary also feeds further durable derivation and selects the next input window. This supports trace-learning classification at that write-route meaning, without requiring weight changes or observed benefit. It does not establish improved capacity for future action, faithful extraction or successful recurrent use. Optional host tool-trace consumption and hosted resume derivation retain weaker, claimed support. See RT-RTE-augmentation-admission, MEM-OBJ-conversation-summary, MEM-RTE-fact-selection and profile verification.
A separate positive contribution is the implemented benchmark evaluator: notebooks reload externally preaugmented memories, retrieve context, generate answers, judge agreement with dataset gold answers and save reports. This is a real bounded scoring consumer, not a blanket absence of evaluation. Its labels govern aggregate reporting, not production-memory acceptance or extractor replacement. The lenient judge/parser, exclusion of null labels from accuracy, external inputs and lack of component interventions limit its warrant. Reported accuracy and token savings are attributed claims, not reproduced findings; public Zep-reduction figures are inconsistent. See MEM-RTE-benchmark-reload, EPI-RTE-benchmark-judging, EPI-RTE-benchmark-metrics and EPI-CLM-benchmark-warrant.
The independent higher-order properties remain unresolved at this boundary, rather than forming a single negative grade:
- Theory-builder condition 1, localized theory: not established for a concrete improvement episode. Stored facts, possible skills and process descriptions alone do not establish a formulated theory; particular hosted contents remain unavailable.
- Condition 2, content-dependent consumption: context delivery is wired, but decisions depending on what a formulated theory says are uninspected.
- Condition 3, content-directed criticism: no concrete formulated criticism with blame placement and resulting revision or changed reliance is supplied. Benchmark scores and feedback transport do not establish it.
- Condition 4, iteration: summary recursion is wired, but retention of a criticism's result shaping the next theory round is not established.
- Improvement through criticism of consumed theory: uninspected; neither a concrete criticism/revision chain nor evidence of improved future capacity is supplied.
- Reflection: unestablished; retained user/project context does not establish a self-representation with both causal directions.
- Autonomous theory building: unestablished independently of automatic memory operations; computation performing every internal theory-building role is not shown.
- Self-improvement: retained organization can change and has a wired path into later context, but objective-bearing evidence determining the update is opaque, and later exercised causal dependence on the change is unobserved. Thus neither exercised self-improvement nor successful improvement is established across later sessions.
These assessments follow EPI-CLM-agent-learning, RT-RTE-augmentation-admission and MEM-RTE-feedback-submission; opacity proves neither presence nor absence of a private service mechanism.
For a scenario requiring cross-turn contextual continuity, the inspected code supports retention and selective delivery capacity, subject to completion, configuration and host-use conditions. For a scenario requiring verified extraction, complete erasure, reliable resume fidelity or demonstrable run-over-run improvement, that capacity is insufficient evidence. The assessment would change with frozen extraction input/output and admission evidence, traces joining writes to later consumption, cache-safe session-control evidence, and objective-specific comparisons independently varying the proposed improvement mechanism. A report-to-update consumer would establish an additional operative route, but successful improvement would still require outcome evidence at the comparison's actual scope. No new source reads were needed for this synthesis.
Limitations
| Limitation | Affected SRC IDs and record citations | Inspected boundary | Conclusion prevented | Evidence that would resolve it |
|---|---|---|---|---|
| Hosted derivation, admission and resume state remain opaque. | SRC-1; RT-RTE-augmentation-admission, MEM-OBJ-agent-memory, RT-RTE-mcp-guidance | Shipped clients and documented contracts, not private service implementation | Complete memory ontology, truth acceptance, semantic fidelity, retention/isolation policy and enforced user priority | Frozen service implementation and provenance-linked input/output, admission and consumption records |
| No supplied observed operation or causal experiment. | SRC-1; RT-RTE-python-invocation, RT-RTE-augmentation-admission, EPI-CLM-agent-learning | Static implementation and attributed claims | Successful capture/recall, reliable durable completion, exercised learning or causal improvement | Traces connecting capture, derivation, writes and later behavior; independently controlled objective-specific comparisons |
| Session setter does not establish replay rebinding on an already-used Python instance; carried report-verification limit. | SRC-1; RT-RTE-python-invocation, EPI-RTE-recall-selection; verification limit | Python setter and cached conversation replay | Cache-safe session switching or session-isolation guarantee | Cache invalidation/rebinding implementation and evidence covering reuse after switching |
| Independent graph/process consumers and uniform adapter/framework semantics remain uninspected; carried report-verification limit. | SRC-1; MEM-OBJ-knowledge-graph, MEM-OBJ-process-attribute, MEM-RTE-fact-selection; verification limit | Inspected fact/summary routes, SQLite maintenance and selected wrappers | Complete consumer inventory or all-path retrieval, transaction and withdrawal comparisons | Traces through independent readers, remaining drivers, bindings and framework-specific routes, including transaction boundaries |
| Benchmark performance and component effects are not reproduced; carried report-verification limit. | SRC-1; MEM-RTE-benchmark-reload, EPI-CLM-benchmark-warrant; verification limit | Notebook source and public reports; external memories, data and model artifacts not frozen | Numerical performance, comparable token-reduction figures or causal extraction/summary benefit | Versioned inputs/models, raw authenticated run records, corrected measurement definitions and independent component interventions |
| Selection and restoration are lossy and do not establish a whole-request budget or faithful checkpoint. | SRC-1; MEM-OBJ-conversation-message, MEM-RTE-fact-selection, EPI-RTE-capture-cleanup, MEM-OBJ-agent-memory | Replay sanitation, candidate limits, OpenClaw cleanup and client compaction requests | Lossless capture/replay, complete retained tool trace, bounded total tokens or faithful operational resume | End-to-end lineage and fidelity checks, actual resume payloads and enforced request-wide budget |
| Completion, withdrawal and feedback have narrower effects than their labels suggest. | SRC-1; RT-RTE-stream-exhaustion, RT-RTE-claude-skill, EPI-RTE-local-retention, MEM-RTE-entity-withdrawal, MEM-RTE-feedback-submission | Generic iterator, CLI partial failure, SQLite/internal commits and client deletion/feedback | All-path augmentation, atomic durable success, global forgetting or feedback-driven correction | Per-operation completion receipts, cross-stage recovery/transaction evidence, deletion coverage including concurrent re-derivation, and an inspected feedback-to-change consumer |
| Model provenance, native alternatives and improvement attribution remain unresolved locally. | SRC-1; RT-CMP-sentence-transformers-embedder, RT-CMP-tei-embeddings, MEM-OBJ-entity-fact, EPI-CLM-agent-learning | Name-based model configuration, mock/fallback emission and client-mediated updates | Immutable generating-model identity, uniform service-extracted lineage, or theory/reflection/autonomy/self-improvement conclusions | Immutable artifacts, fallback-origin and adapter evidence, and property-specific formulated-content, criticism, causal and later-use records |