<?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>Forem: Abhishek Chauhan</title>
    <description>The latest articles on Forem by Abhishek Chauhan (@ac12644).</description>
    <link>https://forem.com/ac12644</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%2F1036391%2F760d29a0-e504-4450-9a4b-cf0c63b0ca3a.png</url>
      <title>Forem: Abhishek Chauhan</title>
      <link>https://forem.com/ac12644</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ac12644"/>
    <language>en</language>
    <item>
      <title>Your AI Agent Is Confidently Lying — And It's Your Memory System's Fault</title>
      <dc:creator>Abhishek Chauhan</dc:creator>
      <pubDate>Mon, 06 Apr 2026 20:40:32 +0000</pubDate>
      <link>https://forem.com/ac12644/your-ai-agent-is-confidently-lying-and-its-your-memory-systems-fault-4d82</link>
      <guid>https://forem.com/ac12644/your-ai-agent-is-confidently-lying-and-its-your-memory-systems-fault-4d82</guid>
      <description>&lt;p&gt;Last month, an AI agent I built told a user "As a Senior Engineer at Google, you should consider..." &lt;/p&gt;

&lt;p&gt;The user had been promoted to Staff Engineer three months earlier. The agent had no idea. No error. No warning. Just a confident, wrong answer served from stale memory.&lt;/p&gt;

&lt;p&gt;That's when I realized: &lt;strong&gt;the biggest risk in AI agents isn't hallucination — it's stale memory served with high confidence.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;AI agents using memory systems (Mem0, Zep, Letta, LangMem) store facts about users, companies, and decisions. Things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"John works as Senior Engineer at Google"&lt;/li&gt;
&lt;li&gt;"Pro plan costs $99/month"
&lt;/li&gt;
&lt;li&gt;"Sarah reports to Mike in Engineering"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These facts get stored once and served forever. No expiration. No re-verification. No staleness check.&lt;/p&gt;

&lt;p&gt;Here's what makes it dangerous: memory systems decay facts by access frequency or TTL timers. But a frequently-retrieved memory about a user's job title is &lt;strong&gt;highly relevant&lt;/strong&gt; until the moment it's wrong — at which point it becomes &lt;em&gt;confidently wrong&lt;/em&gt; rather than just outdated.&lt;/p&gt;

&lt;p&gt;An agent without memory would ask "What do you do?" again. Slightly annoying, but honest. An agent with stale memory states the wrong answer as established fact. That's worse.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Big Is This Problem?
&lt;/h2&gt;

&lt;p&gt;I ran a simple experiment. I stored 24 real-world facts in Mem0 — job titles, pricing, company info, policies, technical details. Then I checked each one against its original source after simulating 90 days:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pricing facts&lt;/strong&gt; — 55% had changed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Policy facts&lt;/strong&gt; — 45% had changed
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Job titles&lt;/strong&gt; — 15% had changed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Addresses&lt;/strong&gt; — 5% had changed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;More than a third of stored facts were wrong within 3 months. And agents were retrieving them hundreds of times without knowing.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built: MemGuard
&lt;/h2&gt;

&lt;p&gt;I built an open-source platform that sits &lt;strong&gt;beside&lt;/strong&gt; your memory system (doesn't replace it) and continuously validates whether stored facts are still true.&lt;/p&gt;

&lt;p&gt;Think of it as &lt;strong&gt;Datadog for agent memory&lt;/strong&gt; — it monitors, validates, and alerts, but doesn't own the data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8bkqhvjy36p59hqgsqfk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8bkqhvjy36p59hqgsqfk.png" alt="MemGuard Dashboard" width="800" height="811"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How It Works
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Connect&lt;/strong&gt; — MemGuard plugs into your existing memory system. Native connectors for Mem0, Zep, Letta, LangMem, or any REST API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Validate&lt;/strong&gt; — Five strategies, from simple to AI-powered:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Strategy&lt;/th&gt;
&lt;th&gt;How&lt;/th&gt;
&lt;th&gt;Needs LLM?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Source-Linked&lt;/td&gt;
&lt;td&gt;Re-fetch original source URL, compare values&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-Reference&lt;/td&gt;
&lt;td&gt;Check against 2-3 independent sources&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Temporal Pattern&lt;/td&gt;
&lt;td&gt;Statistical staleness prediction per fact-type&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Semantic Drift&lt;/td&gt;
&lt;td&gt;LLM detects contradictions in recent context&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Causal Chain&lt;/td&gt;
&lt;td&gt;Find dependent facts that break together&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;3. Score&lt;/strong&gt; — Every memory gets a composite trust score (0-100%) based on source reliability, freshness, cross-reference agreement, and retrieval frequency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Quarantine&lt;/strong&gt; — Facts below 30% trust are automatically quarantined so agents stop using them. Facts below 50% are flagged for review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Alert&lt;/strong&gt; — Dashboard, webhooks, or MCP tools so agents can call &lt;code&gt;validate_memory()&lt;/code&gt; before acting on stored facts.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Trust Score
&lt;/h3&gt;

&lt;p&gt;This is the core of MemGuard. Each memory's trust score is a weighted combination of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Trust = 0.20 x source_reliability
      + 0.25 x freshness (exponential decay by fact-type)
      + 0.20 x cross_reference_agreement  
      + 0.10 x dependency_health
      + 0.15 x historical_accuracy
      + 0.10 x retrieval_importance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The key insight: &lt;strong&gt;retrieval frequency increases urgency, not trust.&lt;/strong&gt; A stale memory retrieved 100 times/day is more dangerous than one retrieved once/month. High retrieval + low trust = highest risk.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fslnu58gz3dyyp4ko75qr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fslnu58gz3dyyp4ko75qr.png" alt="Memories with Trust Scores" width="800" height="1048"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  MCP Integration — Agents Validate Before Acting
&lt;/h2&gt;

&lt;p&gt;MemGuard exposes an MCP server so agents can self-check before using memories:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Agent's internal flow
&lt;/span&gt;&lt;span class="n"&gt;memory&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get_memory&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_job_title&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Before acting on it, validate
&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mcp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;validate_memory&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;memory_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;memory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&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;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;trust_score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.7&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# Safe to use
&lt;/span&gt;    &lt;span class="nf"&gt;respond&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;As a &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;memory&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;...&lt;/span&gt;&lt;span class="sh"&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="c1"&gt;# Don't trust it, ask the user instead
&lt;/span&gt;    &lt;span class="nf"&gt;respond&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Can you confirm your current role?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Four MCP tools available:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;validate_memory&lt;/code&gt; — check a specific fact before using it&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_memory_health&lt;/code&gt; — overall health metrics&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;report_stale_memory&lt;/code&gt; — agent reports suspected staleness&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;get_trusted_memories&lt;/code&gt; — retrieve only high-trust facts&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Quick Start
&lt;/h2&gt;

&lt;p&gt;One command:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/ac12644/MemGuard.git
&lt;span class="nb"&gt;cd &lt;/span&gt;MemGuard
docker-compose up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Dashboard at &lt;code&gt;localhost:3000&lt;/code&gt;. API docs at &lt;code&gt;localhost:8001/docs&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Then: Add Connector -&amp;gt; Pick Mem0/Zep/Letta -&amp;gt; Enter API key -&amp;gt; Sync -&amp;gt; Run Validation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi45dh7thsvufn3crx9j0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi45dh7thsvufn3crx9j0.png" alt="Validation Strategies" width="800" height="656"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python 3.12, FastAPI, SQLAlchemy 2.0, Celery&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; PostgreSQL 16, Redis 7&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dashboard:&lt;/strong&gt; React 18, Tailwind CSS, Vite, Recharts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM:&lt;/strong&gt; Anthropic Claude (optional — core works without it)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP:&lt;/strong&gt; Python MCP SDK for agent integration&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy:&lt;/strong&gt; Docker Compose, Caddy for auto-TLS in production&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  What I Learned Building This
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Fact-type matters more than age.&lt;/strong&gt; Pricing changes every quarter. Addresses change every decade. A blanket TTL is useless — you need per-category staleness curves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. The most dangerous memories are the most useful ones.&lt;/strong&gt; High-retrieval memories are the ones agents rely on most. When they go stale, the blast radius is massive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Agents should validate, not just retrieve.&lt;/strong&gt; The MCP integration changes the agent's behavior from "retrieve and trust" to "retrieve, validate, then decide." That single change prevents most stale-memory errors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. You don't need LLM for most validation.&lt;/strong&gt; Source re-fetch and temporal patterns catch 80% of staleness without any LLM cost. Save the AI-powered strategies for edge cases.&lt;/p&gt;
&lt;h2&gt;
  
  
  Open Source — Apache 2.0
&lt;/h2&gt;

&lt;p&gt;The full project is on GitHub:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ac12644" rel="noopener noreferrer"&gt;
        ac12644
      &lt;/a&gt; / &lt;a href="https://github.com/ac12644/MemGuard" rel="noopener noreferrer"&gt;
        MemGuard
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      AI Agent Memory Validation Platform — continuously verify whether facts stored in AI agent memory systems (Mem0, Zep, Letta,     LangMem) are still true. Like Datadog for agent memory.   
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/ac12644/MemGuard/memguard_logo/memguard-logo-compact.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fac12644%2FMemGuard%2FHEAD%2Fmemguard_logo%2Fmemguard-logo-compact.svg" alt="MemGuard" width="260"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;strong&gt;AI Agent Memory Validation Platform&lt;/strong&gt;&lt;br&gt;
  Continuously verify whether facts stored in AI agent memory systems are still true
&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://github.com/ac12644/MemGuard/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/ac12644/MemGuard/actions/workflows/ci.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/ac12644/MemGuard/blob/main/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5b60841bea9e11d9d0b0950d690c9bc554e06385634056a7d5d62a15d1a4eabe/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4170616368655f322e302d626c75652e737667" alt="License"&gt;&lt;/a&gt;
  &lt;a href="https://www.python.org/downloads/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/23f5099969070c4ec78f5f80f956edcf95debda0c20c9efb471ca70d66c9356a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d332e31322b2d3337373641422e7376673f6c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465" alt="Python"&gt;&lt;/a&gt;
  &lt;a href="https://fastapi.tiangolo.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/8d2924f345149137c7d295f97160adac3096b87ede7ee14b1431736c14c33850/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f466173744150492d3030393638382e7376673f6c6f676f3d66617374617069266c6f676f436f6c6f723d7768697465" alt="FastAPI"&gt;&lt;/a&gt;
  &lt;a href="https://react.dev" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/10cc78e75896498c7565b96dcf7a0b20a891cccce4e7ca56e08202e6385411ab/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f52656163742d31382d3631444146422e7376673f6c6f676f3d7265616374266c6f676f436f6c6f723d7768697465" alt="React"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/ac12644/MemGuard/pulls" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/dd0b24c1e6776719edb2c273548a510d6490d8d25269a043dfabbd38419905da/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5052732d77656c636f6d652d627269676874677265656e2e737667" alt="PRs Welcome"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://github.com/ac12644/MemGuard#quick-start" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt; ·
  &lt;a href="https://github.com/ac12644/MemGuard#connectors" rel="noopener noreferrer"&gt;Connectors&lt;/a&gt; ·
  &lt;a href="https://github.com/ac12644/MemGuard#validation-strategies" rel="noopener noreferrer"&gt;Strategies&lt;/a&gt; ·
  &lt;a href="https://github.com/ac12644/MemGuard#api-reference" rel="noopener noreferrer"&gt;API&lt;/a&gt; ·
  &lt;a href="https://github.com/ac12644/MemGuard#contributing" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/ac12644/MemGuard/docs/screenshots/screenshot-6.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fac12644%2FMemGuard%2FHEAD%2Fdocs%2Fscreenshots%2Fscreenshot-6.png" alt="Dashboard" width="800"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why MemGuard?&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;AI agents store facts in memory systems — a user's job title, a product's price, a company's address. These facts go stale silently. The agent keeps using them with high confidence, delivering &lt;strong&gt;wrong answers without any warning&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;MemGuard sits &lt;strong&gt;beside&lt;/strong&gt; your memory system (Mem0, Zep, Letta, LangMem, or any REST API) as a sidecar that monitors, validates, and alerts — like Datadog for agent memory.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core insight:&lt;/strong&gt; Memory systems decay facts by access frequency or TTL timers. But a frequently-retrieved memory about a user's employer is highly relevant until it's wrong — then it becomes &lt;em&gt;confidently wrong&lt;/em&gt; rather than just outdated. MemGuard detects this proactively.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Screenshots&lt;/h2&gt;
&lt;/div&gt;


&lt;strong&gt;Memories&lt;/strong&gt; — Browse and filter tracked memories with trust scores
&lt;br&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/ac12644/MemGuard/docs/screenshots/screenshot-5.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fac12644%2FMemGuard%2FHEAD%2Fdocs%2Fscreenshots%2Fscreenshot-5.png" alt="Memories" width="800"&gt;&lt;/a&gt;


&lt;p&gt;&lt;br&gt;
&lt;strong&gt;Validations&lt;/strong&gt; — Run…&lt;/p&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ac12644/MemGuard" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;ul&gt;
&lt;li&gt;5 connectors (Mem0, Zep, Letta, LangMem, Generic REST)&lt;/li&gt;
&lt;li&gt;5 validation strategies&lt;/li&gt;
&lt;li&gt;40 API endpoints&lt;/li&gt;
&lt;li&gt;Dashboard with onboarding&lt;/li&gt;
&lt;li&gt;MCP server for agent integration&lt;/li&gt;
&lt;li&gt;Production-ready with Caddy TLS + automated backups&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Contributions welcome. If you're building AI agents with memory systems, I'd love to hear what validation strategies matter most for your use cases.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If your agent has ever confidently told a user something that was true six months ago but not today — that's the problem MemGuard solves.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I Built a Multi-Agent Starter Kit with LangGraph — 6 Patterns, 5 Providers, One Command</title>
      <dc:creator>Abhishek Chauhan</dc:creator>
      <pubDate>Sun, 05 Apr 2026 14:09:08 +0000</pubDate>
      <link>https://forem.com/ac12644/i-built-a-multi-agent-starter-kit-with-langgraph-6-patterns-5-providers-one-command-b8g</link>
      <guid>https://forem.com/ac12644/i-built-a-multi-agent-starter-kit-with-langgraph-6-patterns-5-providers-one-command-b8g</guid>
      <description>&lt;p&gt;If you've built more than one LangGraph project, you know the drill. Supervisor setup. Provider config. Handoff tools. Persistence. Streaming endpoint. Same boilerplate, different repo.&lt;/p&gt;

&lt;p&gt;So I stopped rewriting it and packaged the whole thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://github.com/ac12644/langgraph-starter-kit" rel="noopener noreferrer"&gt;LangGraph Starter Kit&lt;/a&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx create-langgraph-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Interactive CLI. Pick your provider, pick your patterns, get a project that runs.&lt;/p&gt;

&lt;p&gt;Or clone the full kit with everything included.&lt;/p&gt;


&lt;h2&gt;
  
  
  6 Patterns
&lt;/h2&gt;

&lt;p&gt;Each one is a standalone app you can use, modify, or delete:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Supervisor&lt;/strong&gt; — central coordinator routes tasks to worker agents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Swarm&lt;/strong&gt; — agents hand off to each other with transfer tools, no central brain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human-in-the-Loop&lt;/strong&gt; — graph pauses for approval before destructive actions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structured Output&lt;/strong&gt; — typed JSON responses validated by Zod&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Research Agent&lt;/strong&gt; — web search + scraping, supervisor coordinates a researcher and writer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RAG&lt;/strong&gt; — in-memory vector store, semantic retrieval, no external DB&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  5 Providers
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LLM_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Two lines. Done.&lt;/p&gt;

&lt;p&gt;OpenAI, Anthropic, Google, Groq, Ollama (local). Each has a sensible default model. Override with &lt;code&gt;LLM_MODEL&lt;/code&gt; if you want.&lt;/p&gt;


&lt;h2&gt;
  
  
  Extending It
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;createMyApp&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;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;makeAgent&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my_agent&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="cm"&gt;/* your tools */&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;system&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;You are a helpful assistant.&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="nf"&gt;makeSupervisor&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="nx"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="nx"&gt;llm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;outputMode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;last_message&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;supervisorName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my_supervisor&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;Register in the server. New endpoint with streaming, threads, and persistence.&lt;/p&gt;
&lt;h2&gt;
  
  
  Also Ships With
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;MCP tool integration (stdio + HTTP)&lt;/li&gt;
&lt;li&gt;SSE streaming on every endpoint&lt;/li&gt;
&lt;li&gt;LangGraph Studio config&lt;/li&gt;
&lt;li&gt;LangSmith tracing (one env var)&lt;/li&gt;
&lt;li&gt;Docker Compose with Postgres&lt;/li&gt;
&lt;li&gt;25+ tests, GitHub Actions CI&lt;/li&gt;
&lt;li&gt;Railway + Render deploy configs&lt;/li&gt;
&lt;/ul&gt;


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


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx create-langgraph-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Or:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/ac12644/langgraph-starter-kit.git
&lt;span class="nb"&gt;cd &lt;/span&gt;langgraph-starter-kit
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env
npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ac12644" rel="noopener noreferrer"&gt;
        ac12644
      &lt;/a&gt; / &lt;a href="https://github.com/ac12644/langgraph-starter-kit" rel="noopener noreferrer"&gt;
        langgraph-starter-kit
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Boilerplate for building multi-agent AI systems with LangGraph. Includes Swarm and Supervisor patterns, memory, tools, and HTTP API out of the box.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;LangGraph Starter Kit&lt;/h1&gt;
&lt;/div&gt;


&lt;p&gt;&lt;br&gt;
    The fastest way to build production-ready multi-agent apps with LangGraph&lt;br&gt;
    &lt;br&gt;&lt;br&gt;
    &lt;strong&gt;6 patterns. 5 providers. One command.&lt;/strong&gt;&lt;br&gt;
  &lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/ac12644/langgraph-starter-kit/actions/workflows/ci.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/ac12644/langgraph-starter-kit/actions/workflows/ci.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;
  &lt;a href="https://opensource.org/licenses/Apache-2.0" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5b60841bea9e11d9d0b0950d690c9bc554e06385634056a7d5d62a15d1a4eabe/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4170616368655f322e302d626c75652e737667" alt="License"&gt;&lt;/a&gt;
  &lt;a href="https://www.typescriptlang.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/64b50ca1dffa77f84eac47bf09df7d345e04133cb52baf3c55cb8402f953ec81/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f547970655363726970742d352e392b2d3331373843362e737667" alt="TypeScript"&gt;&lt;/a&gt;
  &lt;a href="https://langchain-ai.github.io/langgraphjs/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/dd44fd1df30cb117161a3a513349aa38d08ad7d4d0bb2e0a3985ca43b81beaf7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c616e6747726170682d312e322b2d3743334145442e737667" alt="LangGraph"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/ac12644/langgraph-starter-kit/stargazers" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a051ce2f57ff858069ba9c12512f3d54ce8c158487640d90e2394f48460c29d2/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f616331323634342f6c616e6767726170682d737461727465722d6b69743f7374796c653d736f6369616c" alt="Stars"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/ac12644/langgraph-starter-kit#quick-start" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt; •
  &lt;a href="https://github.com/ac12644/langgraph-starter-kit#agent-patterns" rel="noopener noreferrer"&gt;Patterns&lt;/a&gt; •
  &lt;a href="https://github.com/ac12644/langgraph-starter-kit#llm-providers" rel="noopener noreferrer"&gt;Providers&lt;/a&gt; •
  &lt;a href="https://github.com/ac12644/langgraph-starter-kit#api-reference" rel="noopener noreferrer"&gt;API&lt;/a&gt; •
  &lt;a href="https://github.com/ac12644/langgraph-starter-kit/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;
&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why This Exists&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Building multi-agent systems with LangGraph means writing the same boilerplate over and over — setting up supervisors, wiring handoff tools, configuring providers, adding persistence. This starter kit gives you all of that out of the box so you can focus on your agent logic, not infrastructure.&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npx create-langgraph-app&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;What you get:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pick your LLM provider (OpenAI, Anthropic, Google, Groq, or local Ollama)&lt;/li&gt;
&lt;li&gt;Choose which agent patterns you need&lt;/li&gt;
&lt;li&gt;Get a ready-to-run project with tests, types, and a Fastify server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Or clone the full kit with all 6 patterns included.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Architecture&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;
&lt;pre class="notranslate"&gt;&lt;code&gt;              ┌─────────────────────────────────────────────┐
              │             LangGraph Starter Kit            │
              └──────────────────┬──────────────────────────┘
                                 │
              ┌──────────────────┼──────────────────────┐
              ▼                  ▼                       ▼
       ┌─────────────┐   ┌─────────────┐        ┌─────────────┐
       │  CLI Demo    │   │ HTTP Server │        │  LangGraph  │
       │  npm&lt;/code&gt;&lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ac12644/langgraph-starter-kit" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Apache 2.0. PRs welcome.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What are you building with LangGraph? Curious what patterns people are reaching for.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>langchain</category>
      <category>ai</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
