Date: 2026-03-18T07:45:03.529Z Platform: darwin arm64, Node v20.20.0
Every built-in agent memory (CLAUDE.md, .cursorrules, Cline's memory-bank) loads ALL memory into context every session. agentmemory searches and returns only relevant results.
| Observations | Sessions | Index Build | BM25 Search | Hybrid Search | Heap | Context Tokens (built-in) | Context Tokens (agentmemory) | Savings | Built-in Unreachable |
|---|---|---|---|---|---|---|---|---|---|
| 240 | 30 | 177ms | 0.112ms | 0.63ms | 9MB | 10,504 | 1,924 | 82% | 17% |
| 1,000 | 125 | 155ms | 0.317ms | 1.709ms | 6MB | 43,834 | 1,969 | 96% | 80% |
| 5,000 | 625 | 810ms | 1.496ms | 8.58ms | 25MB | 220,335 | 1,972 | 99% | 96% |
| 10,000 | 1250 | 1657ms | 3.195ms | 17.49ms | 1MB | 440,973 | 1,974 | 100% | 98% |
| 50,000 | 6250 | 9182ms | 22.827ms | 108.722ms | 316MB | 2,216,173 | 1,981 | 100% | 100% |
Context Tokens (built-in): How many tokens Claude Code/Cursor/Cline would consume loading ALL memory into the context window. At 5,000 observations, this is ~250K tokens — exceeding most context windows entirely.
Context Tokens (agentmemory): How many tokens the top-10 search results consume. Stays constant regardless of corpus size.
Built-in Unreachable: Percentage of memories that built-in systems CANNOT access because they exceed the 200-line MEMORY.md cap or context window limits. At 1,000 observations, 80% of your project history is invisible.
| Observations | BM25 Index | Vector Index (d=384) | Total Storage |
|---|---|---|---|
| 240 | 395 KB | 494 KB | 0.9 MB |
| 1,000 | 1,599 KB | 2,060 KB | 3.6 MB |
| 5,000 | 8,006 KB | 10,298 KB | 17.9 MB |
| 10,000 | 16,005 KB | 20,596 KB | 35.7 MB |
| 50,000 | 80,126 KB | 102,979 KB | 178.8 MB |
Can the system find relevant information from past sessions? This is impossible for built-in memory once observations exceed the line/context cap.
| Query | Target Session | Gap | BM25 Found | BM25 Rank | Hybrid Found | Hybrid Rank | Built-in Visible |
|---|---|---|---|---|---|---|---|
| How did we set up OAuth providers? | ses_005-009 | 24 | Yes | #1 | Yes | #1 | Yes |
| What was the N+1 query fix? | ses_010-014 | 18 | Yes | #1 | Yes | #2 | Yes |
| PostgreSQL full-text search setup | ses_010-014 | 17 | Yes | #1 | Yes | #1 | Yes |
| bcrypt password hashing configuration | ses_005-009 | 20 | Yes | #1 | Yes | #1 | Yes |
| Vitest unit testing setup | ses_020-024 | 9 | Yes | #1 | Yes | #1 | Yes |
| webhook retry exponential backoff | ses_015-019 | 14 | Yes | #1 | Yes | #1 | Yes |
| ESLint flat config migration | ses_000-004 | 29 | Yes | #1 | Yes | #1 | Yes |
| Kubernetes HPA autoscaling configuration | ses_025-029 | 4 | Yes | #1 | Yes | #1 | No |
| Prisma database seed script | ses_010-014 | 16 | Yes | #1 | Yes | #1 | Yes |
| API cursor-based pagination | ses_015-019 | 14 | Yes | #1 | Yes | #1 | Yes |
| CSRF protection double-submit cookie | ses_005-009 | 24 | Yes | #1 | Yes | #1 | Yes |
| blue-green deployment rollback | ses_025-029 | 4 | Yes | #1 | Yes | #1 | No |
Summary: agentmemory BM25 found 12/12 cross-session queries. Hybrid found 12/12. Built-in memory (200-line cap) could only reach 10/12.
Agent context window: ~200K tokens
System prompt + tools: ~20K tokens
User conversation: ~30K tokens
Available for memory: ~150K tokens
At 50 tokens/observation:
200 observations = 10,000 tokens (fits, but 200-line cap hits first)
1,000 observations = 50,000 tokens (33% of available budget)
5,000 observations = 250,000 tokens (EXCEEDS total context window)
agentmemory top-10 results:
Any corpus size = ~1,924 tokens (0.3% of budget)
| Capability | Built-in (CLAUDE.md) | agentmemory |
|---|---|---|
| Semantic search | No (keyword grep only) | BM25 + vector + graph |
| Scale beyond 200 lines | No (hard cap) | Unlimited |
| Cross-session recall | Only if in 200-line window | Full corpus search |
| Cross-agent sharing | No (per-agent files) | MCP + REST API |
| Multi-agent coordination | No | Leases, signals, actions |
| Temporal queries | No | Point-in-time graph |
| Memory lifecycle | No (manual pruning) | Ebbinghaus decay + eviction |
| Knowledge graph | No | Entity extraction + traversal |
| Query expansion | No | LLM-generated reformulations |
| Retention scoring | No | Time-frequency decay model |
| Real-time dashboard | No (read files manually) | Viewer on :3113 |
| Concurrent access | No (file lock) | Keyed mutex + KV store |
Use built-in memory (CLAUDE.md) when:
- You have < 200 items to remember
- Single agent, single project
- Preferences and quick facts only
- Zero setup is the priority
Use agentmemory when:
- Project history exceeds 200 observations
- You need to recall specific incidents from weeks ago
- Multiple agents work on the same codebase
- You want semantic search ("how does auth work?") not just keyword matching
- You need to track memory quality, decay, and lifecycle
- You want a shared memory layer across Claude Code, Cursor, Windsurf, etc.
Built-in memory is your sticky notes. agentmemory is the searchable database behind them.
Scale tests: 5 corpus sizes. Cross-session tests: 12 queries targeting specific past sessions.