<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: SPMOS.ai</title>
    <description>The latest articles on DEV Community by SPMOS.ai (@spmos).</description>
    <link>https://dev.to/spmos</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4094235%2Fa9be3a49-d130-48d4-91d1-335d3ef0f320.png</url>
      <title>DEV Community: SPMOS.ai</title>
      <link>https://dev.to/spmos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/spmos"/>
    <language>en</language>
    <item>
      <title>Your agents will change. Make sure your memory doesn't have to.</title>
      <dc:creator>SPMOS.ai</dc:creator>
      <pubDate>Wed, 16 Sep 2026 07:32:39 +0000</pubDate>
      <link>https://dev.to/spmos/your-agents-will-change-make-sure-your-memory-doesnt-have-to-oc3</link>
      <guid>https://dev.to/spmos/your-agents-will-change-make-sure-your-memory-doesnt-have-to-oc3</guid>
      <description>&lt;p&gt;Every team I talk to is building the same trap without noticing it.&lt;/p&gt;

&lt;p&gt;They pick an agent framework, a chat platform, a productivity suite with a built-in assistant. Knowledge starts accumulating inside that choice: customer details the assistant learned, decisions from last quarter's meetings, the operational facts people typed into chat instead of a wiki. It works — until the platform changes. A new agent vendor, a migration to a different suite, a compliance requirement to move data. And then everyone discovers the knowledge wasn't theirs. It was formatted for, indexed by, and stuck inside the tool.&lt;/p&gt;

&lt;p&gt;Model providers already went through this. "Don't lock your inference to one vendor" is now standard advice, and most serious setups can swap models with an environment variable. But almost nobody applies the same logic one layer down: &lt;strong&gt;the memory your agents depend on is just as lock-in-prone as the models — and usually less portable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's the layer we built SPM-Polaris to be: an auditable, receipt-backed memory foundation that stays independent of any single agent, platform, or model. This post is about what that actually means in production behavior, not in adjectives.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a memory foundation is (and is not)
&lt;/h2&gt;

&lt;p&gt;A memory foundation is the governed long-term memory layer underneath your applications. Every write, recall, refusal, and deletion passes the same gates and leaves the same evidence, no matter which application produced it.&lt;/p&gt;

&lt;p&gt;Three clarifications, because the category is muddy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Not a data warehouse.&lt;/strong&gt; Transactional records and analytics stay in your ERP and databases. This layer holds governed knowledge and decisions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not an agent builder.&lt;/strong&gt; Your agents, frameworks, and collaboration tools remain yours. The foundation is the memory they share.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not a foundation model.&lt;/strong&gt; Your models stay on your own provider accounts, billed by your provider directly. There is no inference resale or markup.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Six behaviors, not six slogans
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Isolated memory per end user.&lt;/strong&gt; One API key with the &lt;code&gt;memory:partition&lt;/code&gt; scope serves many end users; each memory space is fenced across writes, recall, evidence reads, and read tokens. A whole organization — or your entire customer base — can share one memory plane without sharing memories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Source-ranked recall.&lt;/strong&gt; Not all information deserves equal weight. The &lt;code&gt;lane_policy&lt;/code&gt; parameter separates deliberate saves from passive captures: &lt;code&gt;explicit_first&lt;/code&gt; (default) ranks confirmed records ahead of passive proxy captures, &lt;code&gt;blended&lt;/code&gt; keeps one shared pool, &lt;code&gt;observed_only&lt;/code&gt; answers from captures alone. One honest caveat: the parameter is accepted today, and server-side lane ordering activates after a paired evaluation gate — we'd rather tell you that than let you find out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Change recorded, not overwritten.&lt;/strong&gt; When a preference, configuration, or decision changes, the system records the current state and keeps the earlier state as history. The shipping date moved from the 15th to the 22nd? The record shows "22nd (previously: 15th)". For operations teams, the difference between "current value" and "current value with lineage" is the difference between a system and a rumor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UNKNOWN instead of invention.&lt;/strong&gt; When memory cannot support an answer, the evidence gate returns UNKNOWN with a gate reason and injects nothing. This sounds like a limitation until the first time a confident, wrong answer would have gone to a customer. Then it reads as the feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auditable operations.&lt;/strong&gt; Requests carry signed receipts. Deep evidence review reports its rounds, selector tokens, and latency on every response. Compression is deterministic code — zero LLM calls in compression; when deep review examines evidence it uses SPM-operated models, and only the answer-generation call ever appears as provider tokens on your receipt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Erasure you can present.&lt;/strong&gt; Every successful purge returns an HMAC-SHA256 signed receipt stored with the purge record — counters, scope, key id. Deleted identifiers are never reused within the same memory generation, so a stale receipt cannot resurrect purged content. When a user exercises a GDPR-style erasure right, "we deleted it" becomes something you can demonstrate, not declare.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it plugs in
&lt;/h2&gt;

&lt;p&gt;A few scenario framings — explicitly not measured outcomes; validate on your own workload:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Support copilots&lt;/strong&gt;: each customer's device history and prior tickets in an isolated partition; agents stop re-asking, answers arrive with evidence, off-policy questions get UNKNOWN.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community &amp;amp; market intelligence&lt;/strong&gt;: agents extract recurring issues into shared memory once, and "what was already reported" is remembered instead of re-sent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operations knowledge&lt;/strong&gt;: schedules and logistics change constantly; the foundation keeps the current state and the previous one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-platform agents&lt;/strong&gt;: any MCP-capable agent, or the compatible APIs, reads and writes the same governed memory — whichever collaboration platform or model provider it runs on.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The boundaries we'd rather state up front
&lt;/h2&gt;

&lt;p&gt;The memory plane is hosted. Credential custody is your choice across three integration paths: Hosted Provider Proxy (SPM holds the credential), Local Proxy (the credential never leaves your machine), and MCP (your app owns inference and calls memory as explicit tools). Data-residency and deployment questions deserve a conversation, not a landing page — &lt;a href="mailto:contact@spmos.ai"&gt;contact@spmos.ai&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And a discipline note: every number we publish is a bounded first-party observation with a named scope and date. If you're evaluating us, hold us to that standard — and hold everyone else to it too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evaluate it in an afternoon
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Self-serve in the console&lt;/strong&gt; — the free plan covers real small-scale usage; recall depth, capture switches, compression, and budgets are adjustable in Settings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify against the docs&lt;/strong&gt; — integration boundaries, architecture, benchmarks, and security pages are the canonical references; every claim above traces there.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Talk to us&lt;/strong&gt; — enterprise deployments, partition design, data residency: &lt;a href="mailto:contact@spmos.ai"&gt;contact@spmos.ai&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;SPM-Polaris is the current production SPMOS product, developed by Veridical Tech, Inc. Links: &lt;a href="https://spmos.ai/enterprise" rel="noopener noreferrer"&gt;Enterprise memory foundation&lt;/a&gt; · &lt;a href="https://docs.spmos.ai/" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt; · &lt;a href="https://docs.spmos.ai/changelog" rel="noopener noreferrer"&gt;Changelog&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>memory</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Agent Memory Is Not "Vector Search Pasted Back Into the Prompt"</title>
      <dc:creator>SPMOS.ai</dc:creator>
      <pubDate>Tue, 25 Aug 2026 13:31:56 +0000</pubDate>
      <link>https://dev.to/spmos/agent-memory-is-not-vector-search-pasted-back-into-the-prompt-30m1</link>
      <guid>https://dev.to/spmos/agent-memory-is-not-vector-search-pasted-back-into-the-prompt-30m1</guid>
      <description>&lt;h1&gt;
  
  
  Agent Memory Is Not "Vector Search Pasted Back Into the Prompt"
&lt;/h1&gt;

&lt;p&gt;Most agent-memory demos can be summarized in one line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;conversation → chunks → embeddings → top-k → prompt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is useful, but it is not yet a reliable memory system.&lt;/p&gt;

&lt;p&gt;We learned this while building SPM-Polaris, a provider-neutral memory and context layer. Once the system was placed inside real Chat/Responses/Messages request paths, the harder questions appeared after retrieval:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the retrieved text tied to a source?&lt;/li&gt;
&lt;li&gt;Is it a user statement, an observed fact, or an assistant proposal?&lt;/li&gt;
&lt;li&gt;Is it safe to use now, or has it been superseded?&lt;/li&gt;
&lt;li&gt;Can an old exchange be removed without breaking a tool call or provider-managed state?&lt;/li&gt;
&lt;li&gt;Does deletion remove vectors, candidates, and delayed jobs as well as the primary record?&lt;/li&gt;
&lt;li&gt;Does an MCP integration actually invoke memory at the right time?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result was a shift in our design vocabulary. We stopped treating "memory quality" as one retrieval number and started treating memory as a request and data lifecycle.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Long context did not eliminate the memory problem
&lt;/h2&gt;

&lt;p&gt;Long windows are valuable, but they do not make all historical content equally useful. Research on long-context utilization and long-context RAG shows that information position and hard negatives can affect answer quality. A provider's stateful API may simplify lineage, but growing history can still carry token cost.&lt;/p&gt;

&lt;p&gt;For a week-long coding task, replaying everything is often both expensive and counterproductive. The system needs a way to retain the latest task and protected protocol state, retrieve relevant evidence, and remove only history that can be safely represented by that evidence.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. We separated "found" from "allowed to use"
&lt;/h2&gt;

&lt;p&gt;SPM-Polaris has a candidate-retrieval stage and an evidence-admission stage. Similarity is not sufficient. A result must retain source boundaries and satisfy the gate before it can replace historical exchanges.&lt;/p&gt;

&lt;p&gt;That separation changed how we report results. Evidence containment ("did the payload include the source material?") and answer accuracy ("did the downstream reader produce the right answer?") are different measurements, and quoting a containment figure as a memory score is misleading. We previously published internal numbers for both; we have since withdrawn them pending a reproducible manifest — including one result we invalidated ourselves after finding protocol drift — rather than let them circulate without their evidence pack.&lt;/p&gt;

&lt;p&gt;When nothing qualifies at the gate, the system returns UNKNOWN and injects nothing, instead of guessing with plausible-looking context.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Compression is mainly a state-integrity problem
&lt;/h2&gt;

&lt;p&gt;Deleting the oldest messages until a token budget is met is unsafe for a tool-using agent. A request can contain system/developer instructions, function-call identifiers, tool results, multimodal blocks, provider reasoning state, and conversation lineage.&lt;/p&gt;

&lt;p&gt;Our rule is deliberately conservative: an old complete exchange is removable only when admitted evidence covers its precise source set and no protected provider state is damaged. When the proof is missing, the request passes through unchanged.&lt;/p&gt;

&lt;p&gt;This creates a seemingly odd but important product behavior: sometimes the correct compression ratio is zero.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Proxy and MCP are different experimental paths
&lt;/h2&gt;

&lt;p&gt;The Hosted or Local Proxy is inline. It can automatically recall memory, compile context, and record the result. MCP exposes tools, but the host or model decides whether to invoke them and where to insert the response.&lt;/p&gt;

&lt;p&gt;The same memory backend therefore does not guarantee the same outcome. A proper comparison needs matched models, tool schemas, invocation policy, return size, placement, judge, and seeds. We now treat &lt;code&gt;integration_path&lt;/code&gt; as part of the benchmark manifest.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. What we can currently report
&lt;/h2&gt;

&lt;p&gt;Single observations from our production path — each with its scope, none of them averages, SLOs, or third-party certification:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one eligible hosted Provider Proxy request: 66,265 original tokens → 365 forwarded + 279 recalled (a single request; ineligible histories may show no reduction at all);&lt;/li&gt;
&lt;li&gt;one measured Starter rate-limit window: a 45-request burst against a 30-requests-per-minute window returned 30 successful requests and 15 HTTP 429 responses;&lt;/li&gt;
&lt;li&gt;one production MCP remember/status round trip: ready in 8.23 seconds;&lt;/li&gt;
&lt;li&gt;one production MCP remember-to-read round trip: stored and read text matched byte-for-byte;&lt;/li&gt;
&lt;li&gt;one warm production MCP recall: about 4.93 seconds.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every agentic request also emits an auditable receipt, including original and forwarded token counts for elided tool output, so removed history appears as real savings instead of a passthrough zero.&lt;/p&gt;

&lt;p&gt;The limitations are just as important:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the raw request and receipt manifests for the observations above are still being prepared for public inspection;&lt;/li&gt;
&lt;li&gt;we do not yet have public p99, sustained soak, or 100+ concurrency data;&lt;/li&gt;
&lt;li&gt;production charging is disabled;&lt;/li&gt;
&lt;li&gt;several moderation, abuse-protection, and reservation-recovery items remain open;&lt;/li&gt;
&lt;li&gt;Proxy results do not automatically transfer to MCP.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. The questions we think matter next
&lt;/h2&gt;

&lt;p&gt;The next generation of agent-memory evaluation should measure more than retrieval:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;write fidelity and source authority;&lt;/li&gt;
&lt;li&gt;evidence admission under conflicts and hard negatives;&lt;/li&gt;
&lt;li&gt;whether admitted evidence actually enters context;&lt;/li&gt;
&lt;li&gt;provider-state integrity after compression;&lt;/li&gt;
&lt;li&gt;updates, supersession, and abstention;&lt;/li&gt;
&lt;li&gt;deletion completeness under delayed jobs and reindexing;&lt;/li&gt;
&lt;li&gt;answer quality, token cost, latency, and task success by integration path.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Our current view is simple: an agent-memory system should be judged not by how much it stores, but by whether it can explain why a memory was used, what it safely replaced, and what happened when the evidence was not good enough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I am affiliated with the team building SPM-Polaris at Veridical Tech. The figures above are single first-party engineering observations, not independent third-party certification. Documentation: &lt;a href="https://docs.spmos.ai/" rel="noopener noreferrer"&gt;https://docs.spmos.ai/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
