I Built a Persistent Memory API for AI Agents — Here's Why Vector Search Alone Isn't Enough
Source: Dev.to
The Problem
Every autonomous agent framework has the same silent failure: memory decay.
Your agent works great on day 1. By week 3, it’s confidently using stale facts, making decisions based on outdated context, and you don’t notice until something expensive breaks.
I’ve been running an autonomous AI agent 24/7 for two months. Here’s what I learned about why agent memory fails — and how I fixed it.
Why Vector Search Fails for Agent Memory
Most agent memory solutions do this:
- Store facts as embeddings
- Retrieve by cosine similarity
- Hope for the best
The problem: vector similarity ≠ fact accuracy.
A fact can be semantically close to your query and completely wrong. Your API endpoint changed last week, but the old endpoint is still the closest vector match. Your agent confidently calls the dead endpoint, fails, retries, and burns tokens.
The Missing Piece: Retrieval Scoring
What if every fact had an accuracy score based on execution outcomes?
- Agent retrieves a fact → uses it → task succeeds → score goes up
- Agent retrieves a fact → uses it → task fails → score goes down
- Fact hasn’t been retrieved in 2 weeks → score decays
Over time, good facts surface. Bad facts sink. No manual curation needed.
This is what I built with Engram.
How Engram Works
1. Store with Context
curl -X POST https://engram.cipherbuilds.ai/api/facts \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Production API migrated to v3 endpoint",
"category": "infrastructure",
"source": "deploy-log-2026-03-30"
}'Every fact stores its source, category, and timestamp. Not just text — context.
2. Detect Drift
curl https://engram.cipherbuilds.ai/api/drift \
-H "Authorization: Bearer YOUR_KEY"This returns facts that are decaying, contradicted, or stale. It’s like a health check for your agent’s knowledge.
Drift Detection: The Killer Feature
Drift detection answers: “What does my agent think it knows that’s actually wrong?”
It flags:
- Stale facts – not accessed in X days, likely outdated
- Low‑scoring facts – retrieved but led to failures
- Contradictions – newer facts that supersede older ones
Run it on a cron job and get alerted before your agent breaks.
MCP Server
Engram ships as an MCP server for Claude Desktop, Claude Code, and Cursor. It provides seven tools:
store_fact– persist new knowledgesearch_facts– retrieve with scoringscore_fact– report execution outcomesdetect_drift– find decaying knowledgelist_facts– browse stored factsdelete_fact– remove incorrect factsmemory_stats– dashboard metrics
Free Tier
- 1 agent
- 10,000 facts
- Full API access including drift detection
- No credit card required
Get started:
What’s Next
- npm package for MCP server (
npx engram-mcp) - Open‑source GitHub repo (MCP server)
- Team features for multi‑agent memory sharing
- Webhook alerts for drift detection
Try it free: ****