<?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: Alex Garden</title>
    <description>The latest articles on DEV Community by Alex Garden (@alexgardenmnemom).</description>
    <link>https://dev.to/alexgardenmnemom</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3781957%2F27252793-33cc-4e88-bca0-57ca748f4fa2.png</url>
      <title>DEV Community: Alex Garden</title>
      <link>https://dev.to/alexgardenmnemom</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alexgardenmnemom"/>
    <language>en</language>
    <item>
      <title>Building a Live Adversarial Arena for AI Safety Testing</title>
      <dc:creator>Alex Garden</dc:creator>
      <pubDate>Tue, 10 Mar 2026 20:28:45 +0000</pubDate>
      <link>https://dev.to/alexgardenmnemom/building-a-live-adversarial-arena-for-ai-safety-testing-14db</link>
      <guid>https://dev.to/alexgardenmnemom/building-a-live-adversarial-arena-for-ai-safety-testing-14db</guid>
      <description>&lt;p&gt;Everyone talks about red teaming AI agents. Few do it continuously. None do it with cryptographic proof.&lt;/p&gt;

&lt;p&gt;We built something different: a live adversarial arena where 15 agents attack our governance infrastructure 24/7. Every detection is provable. The current detection rate — 91.8% — updates in real-time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Static Testing Problem
&lt;/h2&gt;

&lt;p&gt;The standard AI safety playbook looks familiar: hire a red team, run a battery of tests, produce a report, file it with compliance. Repeat annually, maybe quarterly if you're diligent.&lt;/p&gt;

&lt;p&gt;This is how we tested bridges in the 1800s. Load it once, write down whether it held, move on.&lt;/p&gt;

&lt;p&gt;The problem is obvious to anyone shipping AI agents in production: they don't sit still. They drift. They encounter novel inputs. They operate under adversarial conditions that no static benchmark can anticipate.&lt;/p&gt;

&lt;p&gt;A model that passes every eval on Tuesday can hallucinate policy violations on Wednesday because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The prompt distribution shifted&lt;/li&gt;
&lt;li&gt;An attacker found a new angle&lt;/li&gt;
&lt;li&gt;The reasoning patterns drifted over time&lt;/li&gt;
&lt;li&gt;The context changed in ways the benchmark didn't anticipate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Static red team reports are stale on delivery. "We tested it once" isn't governance — it's compliance theater.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Proving Ground Architecture
&lt;/h2&gt;

&lt;p&gt;We built something different: a continuous adversarial stress test of our AIP (AI Integrity Protocol) governance pipeline.&lt;/p&gt;

&lt;p&gt;Fifteen adversarial agents run around the clock, probing for weaknesses across six technique categories:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Reasoning Deception (87.7% detection rate)
&lt;/h3&gt;

&lt;p&gt;Generating plausible but misleading reasoning chains that pass surface analysis. The attacker injects prompts that cause an authorized agent to take authorized actions for unauthorized purposes.&lt;/p&gt;

&lt;p&gt;The action looks legitimate. The intent isn't. This is the hardest class to detect because nothing in the action itself is wrong — you have to understand the reasoning behind it.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Drift Evasion (93.4% detection rate)
&lt;/h3&gt;

&lt;p&gt;Subtle reasoning drift across conversational turns. No single message violates policy. But over five, ten, fifteen turns, the agent's reasoning has drifted from its behavioral contract.&lt;/p&gt;

&lt;p&gt;This is the boiling frog of agent safety — invisible to systems that only evaluate individual outputs.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Structural Evasion (81.6% detection rate)
&lt;/h3&gt;

&lt;p&gt;Exploiting trace format, minimizing data, or splitting behavior across sessions to dodge analysis entirely. If the agent doesn't reason visibly, there's nothing to analyze.&lt;/p&gt;

&lt;p&gt;This tests whether governance can detect the absence of evidence as evidence of absence.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Metadata Exploitation (71.9% detection rate)
&lt;/h3&gt;

&lt;p&gt;Manipulating trace context, timestamps, or session data to mislead analysis. This is adversarial AI aimed at the auditor, not the agent.&lt;/p&gt;

&lt;p&gt;If your governance relies on an LLM to evaluate another LLM's reasoning, the attacker's next move is to compromise the evaluator.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Value Manipulation (83.9% detection rate)
&lt;/h3&gt;

&lt;p&gt;Exploiting the gap between declared values and actual behavior. The agent says what you want to hear while doing something else.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Policy Circumvention (100% detection rate)
&lt;/h3&gt;

&lt;p&gt;Attempts to operate outside policy boundaries without triggering enforcement. Boundary probing, undeclared tools, escalation suppression.&lt;/p&gt;

&lt;p&gt;Every one caught so far.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cryptographic Attestation
&lt;/h2&gt;

&lt;p&gt;Here's what makes this different from traditional red teaming: every detection is cryptographically attested.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ed25519 signatures&lt;/strong&gt; on detection events&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SHA-256 hash chains&lt;/strong&gt; linking evidence to conclusions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SP1 zero-knowledge proofs&lt;/strong&gt; that detection was honestly derived&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not "we said we caught it." Proof that the catching was honest and the evidence wasn't tampered with.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Mutation Mechanic
&lt;/h2&gt;

&lt;p&gt;When the 24-hour rolling average detection rate crosses 90%, the red team agents gain the ability to mutate. They analyze which strategies were caught, how they were caught, and evolve new approaches with awareness of the defense.&lt;/p&gt;

&lt;p&gt;This creates adversarial evolutionary pressure. The defense must keep improving or get outpaced.&lt;/p&gt;

&lt;p&gt;The "Days Since Evasion" counter makes this arms race visible. When something gets through, the counter resets to zero — and the evasion technique is published as a detection recipe.&lt;/p&gt;

&lt;p&gt;Most companies hide their breaches. We announce ours.&lt;/p&gt;

&lt;h2&gt;
  
  
  Live Numbers
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Current Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Total attempts&lt;/td&gt;
&lt;td&gt;3,200+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detection rate&lt;/td&gt;
&lt;td&gt;91.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Average analysis latency&lt;/td&gt;
&lt;td&gt;13.8s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Days since evasion&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mutations&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That 91.8% is live. It changes every time an adversary runs. When we launched the arena, detection started at roughly 40%. The defense evolution chart shows the climb: 40% to 70% in twelve hours, stabilizing above 85% by day two, crossing 90% on day three.&lt;/p&gt;

&lt;p&gt;We could have waited until detection hit 99%. We could have cherry-picked the attack classes. We could have published the number that looks best on a slide deck.&lt;/p&gt;

&lt;p&gt;We published the live number instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;There are three main approaches to AI agent safety today:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enforcement-first&lt;/strong&gt; approaches make dangerous actions impossible by construction. Valuable, but enforcement without detection is blind to novel attacks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observability platforms&lt;/strong&gt; log what happened. Good for forensics, but logs are mutable and require trusting the vendor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Static benchmarks&lt;/strong&gt; measure point-in-time performance. An agent that passes today can drift tomorrow.&lt;/p&gt;

&lt;p&gt;The arena doesn't replace these approaches. It complements them with continuous, adversarial, cryptographically provable governance testing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation Details
&lt;/h2&gt;

&lt;p&gt;For developers interested in the technical implementation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight rust"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Simplified detection pipeline&lt;/span&gt;
&lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;DetectionPipeline&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;analyzers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Vec&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nb"&gt;Box&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;dyn&lt;/span&gt; &lt;span class="n"&gt;IntegrityAnalyzer&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;attestation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;AttestationService&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;threshold&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;f64&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;impl&lt;/span&gt; &lt;span class="n"&gt;DetectionPipeline&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;pub&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="nf"&gt;analyze_trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="k"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;trace&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;AgentTrace&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;DetectionResult&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;analysis&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;self&lt;/span&gt;&lt;span class="nf"&gt;.run_parallel_analysis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;trace&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="k"&gt;.await&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;confidence&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;analysis&lt;/span&gt;&lt;span class="nf"&gt;.aggregate_confidence&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;confidence&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;self&lt;/span&gt;&lt;span class="py"&gt;.threshold&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="n"&gt;attestation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;self&lt;/span&gt;&lt;span class="py"&gt;.attestation&lt;/span&gt;&lt;span class="nf"&gt;.sign_detection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;analysis&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="k"&gt;.await&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="nf"&gt;Ok&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nn"&gt;DetectionResult&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Detected&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;analysis&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;attestation&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nf"&gt;Ok&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nn"&gt;DetectionResult&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;Clean&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key insight: continuous testing reveals gaps that static benchmarks miss. The adversarial pressure ensures those gaps get smaller over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;The arena is live now. Detection recipes publish automatically when evasions are caught and patched. We're exploring opening it to external adversaries — if you think you can beat our detection, we want to know.&lt;/p&gt;

&lt;p&gt;Every mutation is a public research contribution to adversarial AI safety. The industry needs more of this kind of open research.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://www.mnemom.ai/blog/mnemom-research/red-team-arena-live-adversarial-governance" rel="noopener noreferrer"&gt;mnemom.ai&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>redteam</category>
      <category>testing</category>
    </item>
    <item>
      <title>Building Trust Infrastructure for the Agentic Economy: A Response to Stripe's Five Levels</title>
      <dc:creator>Alex Garden</dc:creator>
      <pubDate>Wed, 04 Mar 2026 05:06:12 +0000</pubDate>
      <link>https://dev.to/alexgardenmnemom/building-trust-infrastructure-for-the-agentic-economy-a-response-to-stripes-five-levels-371o</link>
      <guid>https://dev.to/alexgardenmnemom/building-trust-infrastructure-for-the-agentic-economy-a-response-to-stripes-five-levels-371o</guid>
      <description>&lt;p&gt;Stripe just published their annual letter describing five levels of agentic commerce — from simple form-filling agents to autonomous agents that anticipate your needs. But there's a critical piece missing from this vision: trust infrastructure.&lt;/p&gt;

&lt;p&gt;As someone building trust systems for autonomous agents, I see a fundamental gap between Stripe's payment infrastructure (which answers "can this transaction be processed?") and what the agentic economy actually needs (which answers "should this agent be trusted to initiate it?").&lt;/p&gt;

&lt;h2&gt;
  
  
  The Trust Escalation Ladder
&lt;/h2&gt;

&lt;p&gt;Stripe's five levels aren't just about increasing autonomy — they're about exponential increases in trust requirements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Level 1&lt;/strong&gt;: Agent fills out a web form. Trust requirement: essentially zero.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Level 2&lt;/strong&gt;: Agent searches and reasons about purchases. You're trusting its judgment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Level 3&lt;/strong&gt;: Agent remembers your preferences and history. You're trusting it with persistent knowledge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Level 4&lt;/strong&gt;: Agent gets $400 and instructions to "get back-to-school shopping done." You're trusting financial delegation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Level 5&lt;/strong&gt;: Agent acts on its own anticipation. You're trusting it with your intent before you've articulated it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each level demands more trust. But what infrastructure exists to justify that trust?&lt;/p&gt;

&lt;h2&gt;
  
  
  Why KYC Doesn't Work for Agents
&lt;/h2&gt;

&lt;p&gt;Know Your Customer (KYC) works because humans have persistent, verifiable identities. Agents don't. An agent is code running in a container — potentially ephemeral, potentially modified between sessions, potentially operating under instructions that conflict with what its owner intends.&lt;/p&gt;

&lt;p&gt;What we need is &lt;strong&gt;KYA — Know Your Agent&lt;/strong&gt;. Not who built the agent, but what has this agent actually done? How has it behaved over time? Can you prove it?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Self-Certification Problem
&lt;/h2&gt;

&lt;p&gt;Every agent safety system today operates on the same broken model: the vendor monitors the agent, generates logs, and reports on what happened. This requires trusting the vendor who generated the logs.&lt;/p&gt;

&lt;p&gt;Consider financial auditing. No public company self-certifies its financial statements. An independent auditor verifies them. The integrity of the system depends on the independence of the verification.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trust Score: Credit Ratings for Agents
&lt;/h2&gt;

&lt;p&gt;We built Mnemom around a different principle: cryptographically verified behavioral reputation.&lt;/p&gt;

&lt;p&gt;Trust Score is a 0-1000 rating computed over five weighted components:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrity ratio&lt;/li&gt;
&lt;li&gt;Compliance history (with exponential decay)&lt;/li&gt;
&lt;li&gt;Drift stability&lt;/li&gt;
&lt;li&gt;Trace completeness
&lt;/li&gt;
&lt;li&gt;Coherence compatibility&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But unlike credit scores, Trust Score has no central bureau. The underlying evidence is cryptographically signed and hash-chained. Anyone can verify it independently — no API call, no internet connection, no trust in the scoring vendor required.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Technical Implementation
&lt;/h2&gt;

&lt;p&gt;Here's the core insight that makes this practical: proving that a full LLM inference was correct is computationally intractable (billions of RISC-V cycles). But proving that an auditor honestly applied its rules to the LLM's output? That's roughly 10,000 RISC-V cycles.&lt;/p&gt;

&lt;p&gt;We don't prove the model was correct. We prove the auditor's judgment was honest.&lt;/p&gt;

&lt;p&gt;Every integrity checkpoint receives four-layer cryptographic attestation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ed25519 digital signatures&lt;/strong&gt;: This gateway produced this checkpoint&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SHA-256 hash chains&lt;/strong&gt;: No checkpoint was deleted or reordered&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Merkle tree accumulator&lt;/strong&gt;: Any checkpoint is verifiable without downloading full history&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SP1 STARK zero-knowledge proofs&lt;/strong&gt;: The verdict was honestly derived from evidence
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Simple integration example
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;mnemom&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Gateway&lt;/span&gt;

&lt;span class="c1"&gt;# Zero code changes to existing agent
&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Gateway&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-3-5-sonnet&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;policy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;./governance.yaml&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;anthropic&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# Agent gets cryptographic identity automatically
&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-3-5-sonnet&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Help me plan dinner&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Behavioral monitoring happens transparently
# Trust Score updates in real-time
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What Each Level Actually Needs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Level 1 — Identity&lt;/strong&gt;: Every agent needs cryptographic identity before its first action. Our gateway assigns one with a single environment variable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 2 — Behavioral monitoring&lt;/strong&gt;: Agents reason and search. You need to know what they're thinking, not just what they output. Our integrity protocol intercepts internal reasoning before actions execute.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 3 — Persistent reputation&lt;/strong&gt;: The agent remembers your preferences. You need to remember its behavior. Trust Score provides portable reputation that follows agents across sessions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 4 — Governance&lt;/strong&gt;: Full delegation requires full governance. Not just monitoring — policy enforcement, lifecycle management, trust recovery.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Level 5 — Cryptographic proof&lt;/strong&gt;: Anticipatory action demands highest assurance. Trust Scores published to Base L2 via ERC-8004 smart contracts — immutable, publicly queryable, independently verifiable.&lt;/p&gt;

&lt;h2&gt;
  
  
  The SSL Moment
&lt;/h2&gt;

&lt;p&gt;E-commerce didn't scale because browsers could display web pages. It scaled because browsers could display a padlock. That padlock didn't protect the transaction — it told users the connection was verified.&lt;/p&gt;

&lt;p&gt;The agentic economy is pre-padlock. Agents can browse, reason, and buy — but there's no padlock. No verification that the agent connecting to an API is trustworthy.&lt;/p&gt;

&lt;p&gt;Trust Score is the padlock for the agentic economy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;The infrastructure is open source (Apache 2.0) and shipping today:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; @mnemom/gateway  &lt;span class="c"&gt;# Node.js&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;mnemom           &lt;span class="c"&gt;# Python&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We have live agents with public Trust Score pages, cryptographic certificates, and on-chain reputation records. The future of commerce is agentic — but it needs to be trustworthy first.&lt;/p&gt;

&lt;p&gt;The question isn't whether agents will handle most internet transactions. The question is whether we'll have the trust infrastructure to support them when they do.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://www.mnemom.ai/blog/mnemom-research/dear-patrick-and-john-you-built-the-rails-who-builds-the-trust" rel="noopener noreferrer"&gt;mnemom.ai&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>blockchain</category>
      <category>fintech</category>
    </item>
    <item>
      <title>Building Proactive AI Agent Governance: Policy Engines in the Request Pipeline</title>
      <dc:creator>Alex Garden</dc:creator>
      <pubDate>Mon, 02 Mar 2026 18:06:19 +0000</pubDate>
      <link>https://dev.to/alexgardenmnemom/building-proactive-ai-agent-governance-policy-engines-in-the-request-pipeline-16if</link>
      <guid>https://dev.to/alexgardenmnemom/building-proactive-ai-agent-governance-policy-engines-in-the-request-pipeline-16if</guid>
      <description>&lt;p&gt;It’s becoming increasingly clear to me that the world needs a governance system for complex, highly autonomous AI systems such as self-driving vehicles. But looking at current governance systems, all of them do one thing in common: they react after something has already happened, and they record everything that has occurred in a log file, with the vague hope that perhaps someone will read the log file and perhaps identify a pattern. This post-reactive approach to what can be called a “regulatory bank” is akin to having a bank that records every transaction but doesn’t have any preventative controls in place to stop a fraud transaction from occurring in the first place, with the knowledge that you’ll only find out something has gone wrong after it has already happened.&lt;/p&gt;

&lt;p&gt;I wanted to give you a preview of a new system we are building at Mnemom. We have been playing with the idea of shifting governance earlier in the request pipeline, before an agent would actually act.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Monitoring vs Governance Problem
&lt;/h2&gt;

&lt;p&gt;Most AI governance solutions are like security cameras. They show who did what, alert on unusual activities and sometimes give a few visuals to executives to help them decide on the next steps. And by then, it’s usually too late because the damage has already been done.&lt;/p&gt;

&lt;p&gt;This creates several problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reactive response&lt;/strong&gt;: Damage happens before detection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human bottleneck&lt;/strong&gt;: Every decision requires human review&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configuration confusion&lt;/strong&gt;: Tool additions look like policy violations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trust erosion&lt;/strong&gt;: Once a score drops, it stays dropped&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What we really needed was a firewall or set of rules to prevent the evil from occurring.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Semantic Gap Challenge
&lt;/h2&gt;

&lt;p&gt;Core technical challenge: The semantic gap. Agent alignment cards declare capabilities in a human-friendly format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"bounded_actions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"inference"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"read"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"write"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"web_fetch"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But actual tools have specific, implementation-dependent names:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mcp__browser__navigate
execute_python_code
search_web
read_file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There has always been a disconnect between the semantic intent of an action (web_fetch) and the way that action is actually performed (mcp_&lt;em&gt;browser&lt;/em&gt;_navigate). Looking at traces, an observer has to make a guess about what tool was used to perform the action described in the card and this can lead to all sorts of wrong conclusions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Policy DSL: Bridging Intent and Implementation
&lt;/h2&gt;

&lt;p&gt;Our solution is a policy Domain Specific Language that explicitly maps semantic capabilities to tool patterns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;capability_mappings&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;web_browsing&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mcp__browser__*"&lt;/span&gt;
&lt;span class="na"&gt;card_actions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;web_fetch"&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;web_search"&lt;/span&gt;

&lt;span class="na"&gt;file_reading&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mcp__filesystem__read*"&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mcp__filesystem__list*"&lt;/span&gt;
&lt;span class="na"&gt;card_actions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;read_file"&lt;/span&gt;

&lt;span class="na"&gt;forbidden&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;pattern&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mcp__filesystem__delete*"&lt;/span&gt;
&lt;span class="na"&gt;reason&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;File&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;deletion&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;not&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;permitted"&lt;/span&gt;
&lt;span class="na"&gt;severity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;critical"&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;pattern&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mcp__shell__*"&lt;/span&gt;
&lt;span class="na"&gt;reason&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Shell&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;execution&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;not&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;permitted"&lt;/span&gt;
&lt;span class="na"&gt;severity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;high"&lt;/span&gt;

&lt;span class="na"&gt;defaults&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="na"&gt;unmapped_tool_action&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;warn"&lt;/span&gt;
&lt;span class="na"&gt;grace_period_hours&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;24&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is more than configuration, this is a governance contract. The alignment card describes our intent, the policy maps that intent to the platform, and the engine is the enforcement mechanism.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three-Checkpoint Architecture
&lt;/h2&gt;

&lt;p&gt;The same policy engine evaluates the same rules at three different points:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. CI/CD (Prevention)
&lt;/h3&gt;

&lt;p&gt;Check that the tool manifest for the agent is appropriate for the combination of the alignment card and policy that it is being sent to deploy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @mnemom/smoltbot policy evaluate &lt;span class="nt"&gt;--card&lt;/span&gt; card.json &lt;span class="nt"&gt;--tools&lt;/span&gt; manifest.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This check will fail the build if there is a policy mismatch. The idea is to catch misconfigured agents before they are deployed.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Gateway (Enforcement)
&lt;/h3&gt;

&lt;p&gt;This extension makes a DevOps and Developers life easier. It extracts the name of the tool used in an API request by integrating itself in to the Kestrel request pipeline. It also shows a real time validation of that extracted name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Supports Anthropic, OpenAI, Gemini formats&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;verdict&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;policyEngine&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;evaluate&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;span class="na"&gt;toolNames&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;extractToolNames&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="na"&gt;agentId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;x-agent-id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;enforce&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="c1"&gt;// or 'warn', 'off'&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;verdict&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;reject&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;verdict&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reason&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;403&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;X-Policy-Verdict&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;rejected&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}}&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Policy evaluation occurs concurrently with quota allocation and does not introduce any latency in the hot path.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Observer (Verification)
&lt;/h3&gt;

&lt;p&gt;After execution the traces are compared against the same policy rules. We call these three steps together the Auditing Process and we distinguish between:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Card gaps&lt;/strong&gt;: Tools the agent uses that aren’t in its card (configuration error)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Behavior gaps&lt;/strong&gt;: The agent actions which are specified in the control law, but which are forbidden (policy violation)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The distinction matters for what happens next.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trust Recovery: Learning from Configuration Errors
&lt;/h2&gt;

&lt;p&gt;Before this system, a common scenario would break trust scores permanently:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Developer adds new MCP tool to agent&lt;/li&gt;
&lt;li&gt;Agent starts using the tool&lt;/li&gt;
&lt;li&gt;Observer flags &lt;code&gt;UNBOUNDED_ACTION&lt;/code&gt; violations&lt;/li&gt;
&lt;li&gt;Mnemom Trust Rating drops&lt;/li&gt;
&lt;li&gt;Developer fixes alignment card&lt;/li&gt;
&lt;li&gt;Trust score stays low (damage was permanent)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;They were valid violations, but we had a configuration gap that caused them to be flagged rather than a user error. Our new system addresses this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// When violations are reclassified from behavior gaps to card gaps&lt;/span&gt;
&lt;span class="nx"&gt;POST&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;v1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;agents&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;agent_id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="sr"&gt;/reclassif&lt;/span&gt;&lt;span class="err"&gt;y
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reclassification triggers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trust score recalculation (violations excluded)&lt;/li&gt;
&lt;li&gt;Downstream agent score updates (transitive trust recovery)&lt;/li&gt;
&lt;li&gt;Proof reissuance (if affected violations were in proven sessions)&lt;/li&gt;
&lt;li&gt;OTel event emission with before/after scores&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Grace periods help with this. If the gateway encounters a tool that is not in the inventory, it will be given a 24 hour grace period (can be configured) before it will be reported as a violation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Intelligence Layer: Predicting Multi-Agent Failures
&lt;/h2&gt;

&lt;p&gt;Detection tells you what happened. Prediction tells you what will happen.&lt;/p&gt;

&lt;p&gt;We built an intelligence layer on top of N-way coherence analysis that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;** Extracts fault lines** from agent value conflicts&lt;/li&gt;
&lt;li&gt;** Forecasts risks** for specific team compositions&lt;/li&gt;
&lt;li&gt;** Recommends policies** to mitigate predicted failures&lt;/li&gt;
&lt;li&gt;** Applies transaction-scoped guardrails** without permanent changes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Example API flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Find where agents conflict&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;faultLines&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/v1/teams/fault-lines&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;agent-a&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;agent-b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;agent-c&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Predict failure modes for a task&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;forecast&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/v1/teams/forecast&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;span class="na"&gt;agents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;agent-a&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;agent-b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="na"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;data_processing_pipeline&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Get policy recommendation with cryptographic proof&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;recommendation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/v1/teams/recommend-policy&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
&lt;span class="na"&gt;team&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;data-team&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;high_value_transaction&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The recommendation is attested with a STARK proof that spans the entire derivation chain of fault line extraction, risk forecast, policy generation and expected enforcement outcomes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation Notes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Performance Considerations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Policy evaluation is parallelized with quota resolution&lt;/li&gt;
&lt;li&gt;Tool name extraction supports streaming request bodies&lt;/li&gt;
&lt;li&gt;Grace period lookups use Redis with TTL expiry&lt;/li&gt;
&lt;li&gt;Reclassification uses BFS traversal with 50-agent cap&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Security Design
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Policy DSL uses safe YAML subset (no code execution)&lt;/li&gt;
&lt;li&gt;Tool patterns use glob matching with escape sequence validation&lt;/li&gt;
&lt;li&gt;STARK proofs use SP1 guest programs with deterministic execution&lt;/li&gt;
&lt;li&gt;On-chain anchoring uses ERC-8004 aligned contracts&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Integration Points
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Express middleware&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/v1/agents&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;policyEnforcement&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;enforce&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;

&lt;span class="c1"&gt;// Next.js API route&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;verdict&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;evaluatePolicy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;verdict&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;reject&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;403&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;verdict&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reason&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// Continue with agent request...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Fastify plugin&lt;/span&gt;
&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;fastify&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;register&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@mnemom/policy-plugin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;warn&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;gracePeriodHours&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;48&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What This Enables
&lt;/h2&gt;

&lt;p&gt;Moving governance into the request pipeline fundamentally changes what's possible:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Proactive enforcement&lt;/strong&gt; instead of reactive monitoring&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configuration error recovery&lt;/strong&gt; instead of permanent trust damage&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Predictive risk management&lt;/strong&gt; for multi-agent teams&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cryptographically verified&lt;/strong&gt; policy recommendations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero-latency policy evaluation&lt;/strong&gt; in production&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The engine that validated your application in your CI/CD pipeline, validated your production gateway and traced your observability traces has no drift, no gaps, no surprises – and now – it’s also the same engine you have in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Foundational model ethics is about the fact that your governance must not obstruct the autonomy your models were designed to not obstruct in the first place. If you’re planning on creating large teams of AI agents and they need some governance that doesn’t quite kill their autonomy in the process:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Generate starter policy&lt;/span&gt;
smoltbot policy init

&lt;span class="c"&gt;# Validate existing agents&lt;/span&gt;
smoltbot policy evaluate &lt;span class="nt"&gt;--card&lt;/span&gt; ./alignment-card.json &lt;span class="nt"&gt;--tools&lt;/span&gt; ./tool-manifest.json

&lt;span class="c"&gt;# Test policy against live agents&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://api.mnemom.ai/v1/policies/evaluate &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"agentId": "your-agent", "tools": ["tool-name"]}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The full technical specification and integration guides are in our docs.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://www.mnemom.ai/blog/mnemom-research/governance-in-the-code-path" rel="noopener noreferrer"&gt;mnemom.ai&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>governance</category>
      <category>devops</category>
      <category>security</category>
    </item>
    <item>
      <title>Building Trust Systems for AI Agent Teams: Beyond Individual Credit Scores</title>
      <dc:creator>Alex Garden</dc:creator>
      <pubDate>Wed, 25 Feb 2026 21:19:51 +0000</pubDate>
      <link>https://dev.to/alexgardenmnemom/building-trust-systems-for-ai-agent-teams-beyond-individual-credit-scores-53b6</link>
      <guid>https://dev.to/alexgardenmnemom/building-trust-systems-for-ai-agent-teams-beyond-individual-credit-scores-53b6</guid>
      <description>&lt;p&gt;Last week, we shipped Trust Ratings for individual AI agents — essentially credit scores for autonomous systems. The response was immediate: "What about teams?"&lt;/p&gt;

&lt;p&gt;This isn't just feature creep. Nobody deploys one agent in production. The interesting deployments are three, five, twelve agents coordinating on complex tasks. And here's the thing: the risk profile of a team is not the sum of its parts.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Team Risk Problem
&lt;/h2&gt;

&lt;p&gt;We already had team risk assessment at Mnemom — you could pass a list of agent IDs to our API and get a three-pillar analysis with Shapley attribution and circuit breakers. But every assessment started cold.&lt;/p&gt;

&lt;p&gt;No persistent identity. No accumulated history. No way to answer "is this team getting better or worse?" If you ran the same five agents together every day for six months, the system treated each assessment as if those agents had never met.&lt;/p&gt;

&lt;p&gt;Individual agents get persistent identity, trend lines, public reputation pages, and CI enforcement. Teams got none of it. Until today.&lt;/p&gt;

&lt;h2&gt;
  
  
  First-Class Team Identity
&lt;/h2&gt;

&lt;p&gt;Teams are now entities with their own lifecycle:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;POST&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;v1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;teams&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;org_id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;org-abc123&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Incident Response Alpha&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;agent_ids&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;smolt-a4c12709&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;smolt-b8f23e11&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;smolt-c1d45a03&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;metadata&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;environment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;production&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;domain&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;infrastructure&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Minimum two agents, maximum fifty. Agents can belong to multiple teams. When you add or remove an agent, the system records who made the change and triggers a score recomputation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Mathematics of Team Trust
&lt;/h2&gt;

&lt;p&gt;Here's where it gets interesting. A team score isn't the average of individual scores. If it were, you wouldn't need one.&lt;/p&gt;

&lt;p&gt;The thing that makes a team a team is coordination. Five AAA agents with terrible coherence should score worse than five A agents with excellent coordination.&lt;/p&gt;

&lt;h3&gt;
  
  
  Five Weighted Components
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Team Coherence History (35%)&lt;/strong&gt; — The dominant signal. How consistently well-aligned is this team over time? This measures the one thing that only exists at the team level.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aggregate Member Quality (25%)&lt;/strong&gt; — Tail-risk weighted aggregate of individual Trust Ratings. One weak member drags the team down more than one strong member lifts it up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Operational Track Record (20%)&lt;/strong&gt; — Historical hit rate across all team assessments. How often has this team been assessed as low-risk?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Structural Stability (10%)&lt;/strong&gt; — Roster churn penalty. A team that swaps agents every week cannot build reliable track record.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Assessment Density (10%)&lt;/strong&gt; — Actively monitored teams with 200 data points get more credit than ones assessed twice six months ago.&lt;/p&gt;

&lt;p&gt;Same 0-1000 range as individual scores. Same AAA-through-CCC grades. Teams need 10 assessments before a score publishes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cryptographic Proof Chains
&lt;/h2&gt;

&lt;p&gt;Every team assessment is cryptographically attested — Ed25519 signatures, hash chains, STARK zero-knowledge proofs. The team score computation itself runs in the zkVM.&lt;/p&gt;

&lt;p&gt;This creates a proof chain: individual checkpoints → individual Trust Ratings → team assessments → Team Trust Rating. Each link is independently verifiable.&lt;/p&gt;

&lt;p&gt;You don't have to trust that a team is rated A — you can verify every step yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Public Infrastructure
&lt;/h2&gt;

&lt;p&gt;Everything that exists for individual agents now exists for teams:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reputation pages&lt;/strong&gt; with score breakdowns and trend charts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team directory&lt;/strong&gt; — searchable catalog of public scores&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Badges&lt;/strong&gt; via SVG API — &lt;code&gt;[ Team Trust | 812 ]&lt;/code&gt; in your README&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions&lt;/strong&gt; — CI gating on team scores
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mnemom/reputation-check@v1&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;team-id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;team-7f2a9c01&lt;/span&gt;
    &lt;span class="na"&gt;min-score&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;700&lt;/span&gt;
    &lt;span class="na"&gt;min-grade&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;A&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Team Alignment Cards
&lt;/h2&gt;

&lt;p&gt;Teams get their own behavioral contracts. You can auto-derive from member cards:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;POST&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;v1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;teams&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;team_id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="sr"&gt;/card/&lt;/span&gt;&lt;span class="nx"&gt;derive&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Values are unioned by frequency. Forbidden actions from any member apply to the team. Highest audit retention policy wins. Every change is versioned.&lt;/p&gt;

&lt;p&gt;The team card is what coherence quality measures against — the declared behavioral contract for the group.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integration Points
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Containment:&lt;/strong&gt; When a team member is paused via the containment engine, the team score reflects it immediately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Predictive guardrails:&lt;/strong&gt; Historical assessment data improves predictions. "This team historically struggles with speed-safety tradeoffs" beats cold-start analysis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CI gating:&lt;/strong&gt; Same GitHub Action that enforces individual scores now enforces team scores.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Enables
&lt;/h2&gt;

&lt;p&gt;Individual Trust Ratings answered "can I trust this agent?" Team Trust Ratings answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"How has this team performed?" — persistent, trended, attested scores&lt;/li&gt;
&lt;li&gt;"Is this team improving?" — weekly snapshots, not guesswork&lt;/li&gt;
&lt;li&gt;"Which team should I deploy?" — side-by-side comparison, not gut feel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If individual ratings are FICO for agents, team scores are Moody's for agent portfolios. Same rigor, applied to the unit that actually matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation Notes
&lt;/h2&gt;

&lt;p&gt;Team reputation integrates with existing Mnemom infrastructure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uses the same cryptographic attestation as individual scores&lt;/li&gt;
&lt;li&gt;Plugs into containment and guardrail systems&lt;/li&gt;
&lt;li&gt;Supports the same CI/CD workflows&lt;/li&gt;
&lt;li&gt;Maintains the same public directory structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The scoring algorithm runs deterministically in the zkVM, ensuring reproducible results across different environments.&lt;/p&gt;




&lt;p&gt;Team Trust Ratings ship today on Team and Enterprise plans. The infrastructure for multi-agent trust is here.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://www.mnemom.ai/blog/mnemom-research/team-trust-ratings" rel="noopener noreferrer"&gt;mnemom.ai&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>devops</category>
      <category>trust</category>
    </item>
    <item>
      <title>Building Cryptographic Trust Infrastructure for AI Agents</title>
      <dc:creator>Alex Garden</dc:creator>
      <pubDate>Mon, 23 Feb 2026 22:13:55 +0000</pubDate>
      <link>https://dev.to/alexgardenmnemom/building-cryptographic-trust-infrastructure-for-ai-agents-4epk</link>
      <guid>https://dev.to/alexgardenmnemom/building-cryptographic-trust-infrastructure-for-ai-agents-4epk</guid>
      <description>&lt;p&gt;Last month, MIT published their AI Agent Index — a comprehensive study of 30 major AI agents across 240 safety and transparency criteria. The results were stark: 133 fields had no public information. Twenty-five agents had no safety evaluation results. Only one had cryptographic signing.&lt;/p&gt;

&lt;p&gt;As someone building AI agent infrastructure, this confirmed what we suspected: the gap isn't in building agents (the tooling is excellent), it's in verifying them.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Monitoring vs Verification Problem
&lt;/h2&gt;

&lt;p&gt;The market response has been monitoring solutions. Behavioral baselines, drift detection, comprehensive logging. These are necessary but insufficient.&lt;/p&gt;

&lt;p&gt;Here's why: monitoring tells you what happened, but it doesn't tell you whether the monitor itself is honest. Consider this architecture:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Agent → Oversight System → Report ("clear" or "violation")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;How do you know the oversight system applied its rules correctly? How do you know it didn't report "clear" when evidence showed a boundary violation? How do you know checkpoints weren't deleted after the fact?&lt;/p&gt;

&lt;p&gt;You can't. Unless the oversight system can prove its own honesty mathematically.&lt;/p&gt;

&lt;p&gt;That's verification: "we can prove we checked, and you can verify the proof yourself."&lt;/p&gt;

&lt;h2&gt;
  
  
  The Technical Challenge
&lt;/h2&gt;

&lt;p&gt;Building this requires solving several problems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Identity&lt;/strong&gt;: What is the agent supposed to do?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrity&lt;/strong&gt;: Is it doing what it's supposed to do?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proof&lt;/strong&gt;: Can we prove the integrity check was honest?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reputation&lt;/strong&gt;: How trustworthy is this agent over time?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Risk&lt;/strong&gt;: Should we approve this specific action?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Containment&lt;/strong&gt;: How do we enforce decisions?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We built Mnemom as a six-layer stack addressing each.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 1: Machine-Readable Identity
&lt;/h2&gt;

&lt;p&gt;Every agent gets an Alignment Card — a machine-readable behavioral contract:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"permitted"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"read_tickets"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"draft_responses"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"escalate_to_human"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"forbidden"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"access_payment_data"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"issue_refunds"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"escalation_triggers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"billing_request_over_500"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"values"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"accuracy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"empathy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"privacy"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This becomes the reference document for all verification. No card, no verification.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 2: Real-Time Thinking Analysis
&lt;/h2&gt;

&lt;p&gt;We intercept the agent's streaming response at the Cloudflare Workers level using &lt;code&gt;tee()&lt;/code&gt;. The client receives the response at wire speed — zero latency added. The analysis runs in the background.&lt;/p&gt;

&lt;p&gt;Crucially, we don't analyze outputs. We analyze &lt;em&gt;thinking&lt;/em&gt; — the agent's reasoning trace between request and response. A separate model evaluates this against the Alignment Card:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"verdict"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"boundary_violation"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"concerns"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"value_misalignment"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"severity"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"high"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Agent considered payments API access, explicitly forbidden"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"confidence"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.95&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three verdicts: &lt;code&gt;clear&lt;/code&gt;, &lt;code&gt;review_needed&lt;/code&gt;, or &lt;code&gt;boundary_violation&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 3: Four-Layer Cryptographic Attestation
&lt;/h2&gt;

&lt;p&gt;This is where we diverge from monitoring solutions. Every integrity checkpoint passes through four independent cryptographic layers:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ed25519 Signatures&lt;/strong&gt;: Every checkpoint is cryptographically signed. Public keys are published. Anyone can verify, nobody can forge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SHA-256 Hash Chains&lt;/strong&gt;: Each checkpoint includes the hash of the previous checkpoint. Tamper with any checkpoint and the chain breaks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Merkle Trees&lt;/strong&gt;: An append-only binary tree accumulates all checkpoints. Proving a checkpoint exists requires O(log N) hashes — about 10 for 1,000 checkpoints.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zero-Knowledge Proofs&lt;/strong&gt;: A STARK proof re-derives the verdict from raw concerns using deterministic rules, ignoring the stated verdict entirely.&lt;/p&gt;

&lt;p&gt;The key insight: we don't prove LLM inference was correct (computationally intractable). We prove the auditor's judgment was honestly derived from the LLM's output. This runs in ~10,000 RISC-V cycles with sub-second proof generation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 4: The Trust Score
&lt;/h2&gt;

&lt;p&gt;Checkpoints accumulate into a composite reputation score — five weighted components mapping to a bond-rating scale (AAA to CCC):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrity ratio (40%)&lt;/li&gt;
&lt;li&gt;Compliance with exponential decay (20%) &lt;/li&gt;
&lt;li&gt;Drift stability (20%)&lt;/li&gt;
&lt;li&gt;Trace completeness (10%)&lt;/li&gt;
&lt;li&gt;Coherence compatibility (10%)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every score is backed by the full attestation stack. Anyone can request Merkle inclusion proofs, verify signatures and hash chains, and for violations, verify STARK proofs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 5: Context-Aware Risk Assessment
&lt;/h2&gt;

&lt;p&gt;A trust score tells you general trustworthiness. Risk assessment tells you whether to approve &lt;em&gt;this specific action&lt;/em&gt; for &lt;em&gt;this agent&lt;/em&gt; in &lt;em&gt;this context&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The same agent gets different risk scores for different actions. Financial transactions weight compliance heavily. Task delegation weights coherence. Tool invocation weights integrity and drift.&lt;/p&gt;

&lt;p&gt;For teams of agents, we model three types of systemic risk:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aggregate quality (tail-risk weighting)&lt;/li&gt;
&lt;li&gt;Coherence quality (value alignment variance)&lt;/li&gt;
&lt;li&gt;Structural risk (contagion modeling)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All computations use fixed-point arithmetic for determinism — essential for zero-knowledge provability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 6: Real-Time Containment
&lt;/h2&gt;

&lt;p&gt;Detection without enforcement is monitoring. We provide pause, kill, and resume controls with three enforcement modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;monitor&lt;/code&gt;: Log only&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nudge&lt;/code&gt;: Inject corrective guidance&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;enforce&lt;/code&gt;: Hard 403 block&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Auto-containment triggers after N consecutive violations. When an agent is contained, structural risk analysis identifies exposed peers for prophylactic protection.&lt;/p&gt;

&lt;h2&gt;
  
  
  One Environment Variable
&lt;/h2&gt;

&lt;p&gt;Despite the complexity above, using this is simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; smoltbot
smoltbot init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI configures your agent to use the Mnemom gateway:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;OPENAI_BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://gateway.mnemom.ai/openai/v1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your code doesn't change. Your users' experience doesn't change. But your agent now has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cryptographic integrity attestation&lt;/li&gt;
&lt;li&gt;Public trust score and reputation page&lt;/li&gt;
&lt;li&gt;Embeddable trust badges&lt;/li&gt;
&lt;li&gt;Zero-knowledge proven risk assessments&lt;/li&gt;
&lt;li&gt;Real-time containment controls&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why This Matters Now
&lt;/h2&gt;

&lt;p&gt;Three converging factors:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The gap is documented&lt;/strong&gt;: MIT's study, WEF governance frameworks, and EU AI Act Article 50 all identify the same missing piece — verifiable trust infrastructure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The market fragmented&lt;/strong&gt;: Solutions exist for pieces (malware scanning, prompt injection blocking, behavioral baselines, identity credentials, on-chain reputation), but no unified stack.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The proof is practical&lt;/strong&gt;: ZK proofs of safety judgments aren't theoretical anymore. SP1 generates production-ready STARK proofs sub-second.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What's Live
&lt;/h2&gt;

&lt;p&gt;Everything described is deployed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-provider gateway (Anthropic, OpenAI, Gemini)&lt;/li&gt;
&lt;li&gt;Full attestation pipeline with cryptographic proofs&lt;/li&gt;
&lt;li&gt;Trust scoring and public directory&lt;/li&gt;
&lt;li&gt;Team risk assessment with contagion modeling&lt;/li&gt;
&lt;li&gt;Real-time containment and graduated response&lt;/li&gt;
&lt;li&gt;Enterprise features (RBAC, SSO, compliance exports)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Try the interactive showcase at &lt;a href="https://mnemom.ai/showcase" rel="noopener noreferrer"&gt;mnemom.ai/showcase&lt;/a&gt; or point your agent at the gateway directly.&lt;/p&gt;

&lt;p&gt;The credit check for AI agents is live.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://www.mnemom.ai/blog/mnemom-research/verification-layer-ai-agents" rel="noopener noreferrer"&gt;mnemom.ai&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>cryptography</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>The First Zero-Knowledge Proof of AI Safety Judgment</title>
      <dc:creator>Alex Garden</dc:creator>
      <pubDate>Fri, 20 Feb 2026 04:21:47 +0000</pubDate>
      <link>https://dev.to/alexgardenmnemom/the-first-zero-knowledge-proof-of-ai-safety-judgment-1hfi</link>
      <guid>https://dev.to/alexgardenmnemom/the-first-zero-knowledge-proof-of-ai-safety-judgment-1hfi</guid>
      <description>&lt;p&gt;The Agent Alignment Protocol gives agents transparency — structured traces of what was considered, what was chosen, and why. The Agent Integrity Protocol gives agents integrity — continuous runtime verdicts on whether an agent's autonomous decisions align with its declared values and boundaries. Today we ship the third piece: &lt;strong&gt;proof&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Cryptographic evidence that every integrity verdict was honestly computed. Independently verifiable. No trust required.&lt;/p&gt;

&lt;p&gt;This matters because integrity monitoring creates a new trust dependency. When we tell you an agent's behavior is consistent with its Alignment Card, you have to trust that we computed that verdict honestly — that we actually ran the analysis, that we didn't tamper with results, that the history hasn't been rewritten. The proof layer eliminates that trust dependency. Every verdict now ships with mathematical evidence you can verify yourself, in your own browser, without calling our API or trusting our infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four Layers of Cryptographic Evidence
&lt;/h2&gt;

&lt;p&gt;The proof layer isn't a single mechanism. It's four independent cryptographic structures, each addressing a different trust question. They compose but don't depend on each other — you get value from any subset.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ed25519 Signatures: Who Signed This Verdict?
&lt;/h3&gt;

&lt;p&gt;Every integrity checkpoint is signed with an Ed25519 digital signature. The signed payload is a deterministic JSON string containing the checkpoint ID, agent ID, verdict, thinking block hash, input commitment, chain hash, and timestamp. Keys are sorted alphabetically before serialization, producing identical output regardless of property insertion order.&lt;/p&gt;

&lt;p&gt;The signing key is a 32-byte Ed25519 secret held by the analysis service. The corresponding public key is published at a well-known endpoint (&lt;code&gt;api.mnemom.ai/v1/keys&lt;/code&gt;). Anyone can fetch the public key and verify the signature using the &lt;code&gt;@noble/ed25519&lt;/code&gt; library — the same library we use internally. A valid signature proves the verdict was produced by a key holder and hasn't been modified since signing.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hash Chains: Nothing Was Reordered
&lt;/h3&gt;

&lt;p&gt;Each checkpoint includes a SHA-256 hash that chains it to the previous checkpoint in the same agent session. The chain preimage concatenates the previous chain hash (or the literal string &lt;code&gt;genesis&lt;/code&gt; for the first checkpoint), the checkpoint ID, verdict, thinking block hash, input commitment, and timestamp — all joined by pipe delimiters.&lt;/p&gt;

&lt;p&gt;This creates a tamper-evident sequence. Changing any field in any checkpoint breaks the chain at that point and every subsequent link. Inserting a checkpoint between two existing ones is impossible without recomputing every downstream hash, which would invalidate their signatures. Reordering checkpoints breaks the linkage. The chain gives you temporal integrity — proof that the sequence of verdicts is the sequence that actually occurred.&lt;/p&gt;

&lt;h3&gt;
  
  
  Merkle Trees: Nothing Was Deleted
&lt;/h3&gt;

&lt;p&gt;Per-agent append-only binary Merkle trees accumulate every checkpoint into a single root hash. Each checkpoint becomes a leaf — its leaf hash is computed from the checkpoint ID, verdict, thinking block hash, chain hash, and timestamp. Internal nodes are SHA-256 hashes of their children's concatenated hex strings. When the number of nodes at any level is odd, the last node is duplicated before pairing.&lt;/p&gt;

&lt;p&gt;The Merkle tree provides completeness proofs. Given a checkpoint and an O(log N) inclusion proof — a list of sibling hashes along the path from the leaf to the root — anyone can verify that the checkpoint exists in the tree by walking the path and checking that the computed root matches the published root. If a checkpoint were deleted from the log, the root would change and all existing inclusion proofs would fail. This is the same structure that Certificate Transparency logs use to ensure no TLS certificate is secretly issued.&lt;/p&gt;

&lt;h3&gt;
  
  
  ZK Verdict Proofs: The Rules Were Applied Honestly
&lt;/h3&gt;

&lt;p&gt;This is the most novel layer. A RISC Zero STARK proves that the verdict derivation rules — the logic that maps analysis observations to a verdict of &lt;code&gt;clear&lt;/code&gt;, &lt;code&gt;review_needed&lt;/code&gt;, or &lt;code&gt;boundary_violation&lt;/code&gt; — were applied correctly to the committed inputs. The proof is generated inside a zkVM guest program that takes the analysis JSON, input commitment hashes, and rule parameters as private inputs, executes the deterministic verdict derivation logic, and produces a receipt that anyone can verify.&lt;/p&gt;

&lt;p&gt;Boundary violation verdicts are always proven. All other verdicts are proven via 10% stochastic sampling. The proving decision is made after analysis completes, so the analysis pipeline cannot know in advance which checkpoints will be audited — creating a probabilistic deterrent against selective manipulation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Novel Contribution
&lt;/h2&gt;

&lt;p&gt;The AI verifiability space has focused overwhelmingly on proving model inference — demonstrating that a neural network with specific weights produced a specific output for a specific input. This is a hard problem. Modern large language models have hundreds of billions of parameters. Proving a single forward pass through a transformer is computationally prohibitive. Estimates for full LLM inference proofs range from $1,000 to $10,000+ per proof, with proving times measured in hours.&lt;/p&gt;

&lt;p&gt;We prove something different: the auditor's judgment.&lt;/p&gt;

&lt;p&gt;The integrity checkpoint pipeline has two stages. First, an analysis model reads the agent's reasoning trace and the Alignment Card and produces structured observations — what concerns it found, what categories they fall into, how severe they are. Second, a deterministic verdict derivation function maps those observations to a final verdict using explicit rules: thresholds, category weights, severity escalation logic.&lt;/p&gt;

&lt;p&gt;The first stage is LLM inference. It's expensive to prove, and proving it wouldn't tell you much — a valid proof of inference just means the model produced that output, not that the output is correct. The second stage is a small, deterministic function. It takes structured JSON as input and produces a verdict as output. It runs in milliseconds. And proving it in a zkVM costs approximately $0.005 per proof.&lt;/p&gt;

&lt;p&gt;This is 6+ orders of magnitude cheaper than proving the full inference. It occupies a new point in the design space: between doing nothing (the current industry default) and proving everything (economically infeasible). We prove the part that matters most for trust — that the rules mapping observations to verdicts were applied faithfully — at a cost that makes it practical to prove every high-stakes verdict and stochastically sample the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  See It
&lt;/h2&gt;

&lt;p&gt;The showcase at &lt;a href="https://www.mnemom.ai/showcase" rel="noopener noreferrer"&gt;mnemom.ai/showcase&lt;/a&gt; includes interactive visualizations of all four proof layers.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;certificate explorer&lt;/strong&gt; displays a complete integrity certificate with collapsible sections for subject, claims, input commitments, and proofs. Each proof section shows the raw cryptographic data — signature bytes, chain hashes, Merkle siblings, STARK receipt metadata — alongside human-readable explanations of what each field means and what it proves.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;hash chain tamper simulation&lt;/strong&gt; renders a chain of checkpoints as linked blocks. Click any block to simulate tampering — modifying its verdict field. The visualization shows the cascading failure in real time: the tampered block's chain hash no longer matches its recomputed value, and every subsequent block's &lt;code&gt;prev_chain_hash&lt;/code&gt; linkage breaks. The red propagation makes the tamper-evidence property visceral rather than abstract.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;Merkle tree visualization&lt;/strong&gt; displays the binary tree structure with highlighted inclusion proof paths. Select a leaf checkpoint and watch the verification path illuminate from leaf to root, showing each sibling hash being combined at every level. The root hash updates live as checkpoints are added, demonstrating the append-only accumulation property.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;3D trust topology&lt;/strong&gt; renders agents as nodes in a three-dimensional space, with edges representing coherence scores from AAP's Value Coherence Handshake and node colors indicating integrity status from AIP. The proof layer adds verification badges — visible indicators of which verdicts carry cryptographic evidence and which proof types are present.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify It Yourself
&lt;/h2&gt;

&lt;p&gt;Every verification operation runs in your browser. No server calls. No trust required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ed25519 signature verification&lt;/strong&gt; uses &lt;code&gt;@noble/ed25519&lt;/code&gt; to check the signature against the signed payload and the published public key. The library is a pure JavaScript implementation of the Ed25519 signature scheme — no WebCrypto API dependency, no platform-specific behavior, deterministic results across all environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Chain hash recomputation&lt;/strong&gt; uses the Web Crypto API's SHA-256 implementation to recompute the chain hash from the checkpoint fields and compare it to the certificate's claimed chain hash. The preimage format is documented and stable: &lt;code&gt;prevHash|checkpointId|verdict|thinkingBlockHash|inputCommitment|timestamp&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Merkle proof verification&lt;/strong&gt; walks the inclusion proof from leaf to root, combining the running hash with each sibling at each level. If the sibling sits to the left, it's prepended; if to the right, it's appended. The final computed root must match the published root. This is a pure computation — no network access, no oracle, no trust assumption beyond SHA-256 collision resistance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STARK verification&lt;/strong&gt; uses a WebAssembly build of the RISC Zero verifier. The WASM module takes the proof receipt and the expected image ID (a commitment to the guest program's code) and returns a boolean. This is the same verification logic that runs on-chain in Ethereum STARK verification contracts, compiled to WASM for browser execution.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Certificate Format
&lt;/h2&gt;

&lt;p&gt;Integrity certificates follow a structured JSON format modeled on &lt;a href="https://c2pa.org/" rel="noopener noreferrer"&gt;C2PA content credentials&lt;/a&gt; and &lt;a href="https://www.w3.org/TR/vc-data-model/" rel="noopener noreferrer"&gt;W3C Verifiable Credentials&lt;/a&gt;. The design goals are machine readability, self-describing semantics, and independent verifiability.&lt;/p&gt;

&lt;p&gt;A certificate contains five top-level sections:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;@context&lt;/code&gt; — The schema identifier (&lt;code&gt;https://mnemom.ai/aip/v1&lt;/code&gt;), following JSON-LD conventions for self-describing documents.
-&lt;code&gt;subject&lt;/code&gt; — What this certificate is about: the checkpoint ID, agent ID, session ID, and Alignment Card ID.
-&lt;code&gt;claims&lt;/code&gt; — The integrity verdict, concern categories, confidence score, reasoning summary, analysis model identifier, and analysis duration.
-&lt;code&gt;input_commitments&lt;/code&gt; — SHA-256 hashes of every analysis input: the thinking block, the Alignment Card, the declared values, the context window, and a combined commitment over all of them. These commitments bind the verdict to specific inputs without revealing those inputs.
-&lt;code&gt;proofs&lt;/code&gt; — The cryptographic evidence: Ed25519 signature (algorithm, key ID, signature value, signed payload), hash chain (current hash, previous hash, position), Merkle inclusion proof (leaf hash, leaf index, root, tree size, sibling path), and verdict derivation proof (method, image ID, receipt, journal, verification timestamp).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The certificate also includes a &lt;code&gt;verification&lt;/code&gt; section with URLs for the public key endpoint, the certificate retrieval endpoint, and the server-side verification endpoint. These are convenience links — all verification can be performed client-side without them.&lt;/p&gt;

&lt;p&gt;The full specification is published at &lt;a href="https://docs.mnemom.ai/" rel="noopener noreferrer"&gt;docs.mnemom.ai&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Don't Claim
&lt;/h2&gt;

&lt;p&gt;Honesty about limitations is itself a form of integrity.&lt;/p&gt;

&lt;p&gt;The proof layer proves honest computation of the verdict derivation rules. It does not prove that the analysis model's observations are correct. The LLM that reads an agent's reasoning trace and identifies concerns can make mistakes — it can miss a subtle boundary violation, misclassify a concern's severity, or hallucinate a problem that doesn't exist. The cryptographic proof covers the deterministic verdict derivation logic, not the probabilistic language model that produces the inputs to that logic.&lt;/p&gt;

&lt;p&gt;Think of it like an auditor's report. We can prove that the auditor followed their stated methodology. We cannot prove that the methodology itself catches every issue. The signature proves who signed the verdict. The chain proves the verdict sequence wasn't reordered. The Merkle tree proves no verdicts were deleted. The ZK proof proves the verdict rules were applied faithfully to whatever the analysis model found. None of these prove the analysis model found the right things.&lt;/p&gt;

&lt;p&gt;This is an honest trade-off. Proving full LLM inference would close this gap but costs $1,000+ per proof and takes hours. We chose to prove the part that is economically practical and most relevant to the trust question operators actually ask: "Were the rules applied honestly to the evidence that was found?"&lt;/p&gt;

&lt;p&gt;We also don't claim immutability of the Merkle root itself. The root is published by our infrastructure. A sufficiently compromised operator could publish a different root. The Merkle tree proves internal consistency — that a given set of checkpoints produces a given root — but the root's authenticity currently depends on the publication channel. Future work on root anchoring (e.g., periodic on-chain commitments) would close this gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Competitive Landscape
&lt;/h2&gt;

&lt;p&gt;The verifiable AI space is young and fragmented. Different projects prove different things at different costs:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;th&gt;Who&lt;/th&gt;
&lt;th&gt;What It Proves&lt;/th&gt;
&lt;th&gt;Approximate Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;TEE attestation&lt;/td&gt;
&lt;td&gt;EQTY Lab&lt;/td&gt;
&lt;td&gt;Code ran in a trusted execution environment&lt;/td&gt;
&lt;td&gt;Hardware-dependent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content provenance&lt;/td&gt;
&lt;td&gt;Macaw, C2PA&lt;/td&gt;
&lt;td&gt;Media was created/edited by specific software&lt;/td&gt;
&lt;td&gt;Per-asset&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model inference proofs&lt;/td&gt;
&lt;td&gt;Modulus Labs, Giza&lt;/td&gt;
&lt;td&gt;A specific neural network produced a specific output&lt;/td&gt;
&lt;td&gt;$1,000+/proof&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ZK coprocessor&lt;/td&gt;
&lt;td&gt;Lagrange&lt;/td&gt;
&lt;td&gt;On-chain computation was performed correctly&lt;/td&gt;
&lt;td&gt;Per-query&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Verdict derivation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Mnemom&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Auditor judgment rules were applied faithfully&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;~$0.005/proof&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These approaches are complementary, not competitive. TEE attestation proves where code ran. Content provenance proves &lt;em&gt;what&lt;/em&gt; created a media artifact. Inference proofs prove &lt;em&gt;which model&lt;/em&gt; produced an output. We prove &lt;em&gt;how the auditor reached its verdict&lt;/em&gt;. A complete trust stack might use several of these together.&lt;/p&gt;

&lt;p&gt;Our contribution is identifying that verdict derivation — the deterministic rules that map structured observations to integrity verdicts — is a distinct proof target that is orders of magnitude cheaper than inference proofs while addressing the specific trust question that matters for agent integrity monitoring.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enterprise Value
&lt;/h2&gt;

&lt;p&gt;The EU AI Act Article 50 transparency obligations take effect in August 2026. For high-risk AI systems, Article 50 requires audit trails, disclosure of AI-generated content, and mechanisms for human oversight. Cryptographic integrity certificates provide a compliance-ready audit trail that goes beyond what the regulation requires — not just logging that monitoring occurred, but proving it was performed honestly.&lt;/p&gt;

&lt;p&gt;For enterprises evaluating integrity monitoring vendors, the proof layer eliminates vendor lock-in as a trust concern. You don't have to trust Mnemom's infrastructure to trust the verdicts. The certificates are self-contained. The verification logic is open source. The cryptographic primitives are standard (Ed25519, SHA-256, RISC Zero STARKs). Any third party can independently verify any certificate without calling our API.&lt;/p&gt;

&lt;p&gt;The standard certificate format also enables multi-vendor trust architectures. If an organization uses multiple integrity monitoring providers — or builds their own alongside a commercial solution — certificates from different providers can be compared, aggregated, and cross-verified using the same tooling. The &lt;code&gt;@context&lt;/code&gt; field and structured proof sections make certificates machine-readable across implementations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;

&lt;p&gt;The proof layer ships today in the Smoltbot gateway and the AIP TypeScript SDK.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Documentation&lt;/strong&gt;: &lt;a href="https://docs.mnemom.ai" rel="noopener noreferrer"&gt;docs.mnemom.ai&lt;/a&gt; — full specification for the certificate format, proof construction, and verification procedures.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API reference&lt;/strong&gt;: &lt;code&gt;GET /v1/checkpoints/:id/certificate&lt;/code&gt;, &lt;code&gt;POST /v1/verify&lt;/code&gt;, &lt;code&gt;GET /v1/agents/:id/merkle-root&lt;/code&gt;, &lt;code&gt;GET /v1/checkpoints/:id/inclusion-proof&lt;/code&gt; — all public, no authentication required.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Live showcase&lt;/strong&gt;: &lt;a href="https://www.mnemom.ai/showcase" rel="noopener noreferrer"&gt;mnemom.ai/showcase&lt;/a&gt; — interactive certificate explorer, chain tamper simulation, Merkle tree visualization, and 3D trust topology.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Whitepaper&lt;/strong&gt;: The full technical specification covering proof construction, security model, threat analysis, and formal verification properties is available at &lt;a href="https://docs.mnemom.ai/whitepaper" rel="noopener noreferrer"&gt;docs.mnemom.ai/whitepaper&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source code&lt;/strong&gt;: &lt;a href="https://www.github.com/mnemom" rel="noopener noreferrer"&gt;github.com/mnemom&lt;/a&gt; — Apache licensed. The signing, chain, Merkle, proving, and certificate modules are in the &lt;code&gt;api/src/analyze/&lt;/code&gt; directory. The zkVM guest program and WASM verifier are in &lt;code&gt;zkvm/&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every integrity verdict now comes with cryptographic evidence. Verify everything yourself. Trust nothing.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Mnemom builds alignment and integrity infrastructure for autonomous agents. AAP and AIP are open source and available on &lt;a href="https://www.npmjs.com/package/@mnemom/agent-alignment-protocol" rel="noopener noreferrer"&gt;npm&lt;/a&gt; and &lt;a href="https://pypi.org/project/agent-alignment-protocol/" rel="noopener noreferrer"&gt;PyPI&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://www.github.com/mnemom" rel="noopener noreferrer"&gt;github.com/mnemom&lt;/a&gt; · Live demo: &lt;a href="https://www.mnemom.ai/showcase" rel="noopener noreferrer"&gt;mnemom.ai/showcase&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cryptography</category>
      <category>verifiableintegrity</category>
      <category>aip</category>
      <category>zeroknowledge</category>
    </item>
  </channel>
</rss>
