<!-- generated by build_articles.py — edit content/compare/xerj-vs-agentmemory.md instead -->
---
title: "XERJ vs agentmemory: tested memory for coding agents"
canonical: "https://xerj.org/compare/xerj-vs-agentmemory"
updated: "2026-10-31"
source: "content/compare/xerj-vs-agentmemory.md"
---

# XERJ vs agentmemory: which memory for your coding agent?

**Short answer** (updated 2026-10-31): XERJ or agentmemory? In keyword mode they tied closely: agentmemory found 74.7% of answers in the top 5 and XERJ 73.3%. XERJ semantic recall, with a model built in, found 94.7%. Pick agentmemory to capture sessions through hooks. Pick XERJ to store what the agent chooses and search it by meaning.

**Key number:** agentmemory's keyless default disables vector embeddings, so memory_recall uses BM25. Setting EMBEDDING_PROVIDER=local adds on-device semantic recall. (as of 2026-10-31; source: [github.com/rohitg00/agentmemory](https://github.com/rohitg00/agentmemory))

**TL;DR** agentmemory captures what happens in your coding sessions through hooks and finds it later with BM25. XERJ stores what your agent decides to save. It is lexical by default; neural is opt-in. On our 75 question test the keyword modes were close, and XERJ semantic recall found 94.7%.

## Agent prompt

```text
Act as a coding agent. Read https://xerj.org/llms.txt, install XERJ, start a local node with --embed-mode neural, store the five most useful facts about this repository with POST /_memory/project, then recall each one with a reworded question using semantic recall and report which ones came back in the top 5.
```

## Commands

### Command 1

Note: Install the single XERJ binary.

```sh
curl -fsSL https://xerj.org/get | sh
```

### Command 2

Note: Start a local node with the built-in MiniLM embedder.

```sh
xerj --embed-mode neural
```

### Command 3

Note: Semantic recall: matches meaning, not only shared words.

```sh
curl -s -XPOST 'http://127.0.0.1:9200/_memory/project/_recall' -H 'content-type: application/json' -d '{"query":"how do we deploy","semantic":true,"k":5}'
```

*Figure: agentmemory details are from its README on 2026-10-31. In our test both were driven the same way: one write call per memory over HTTP, no hooks.*

## Tested side by side

Same 85 memories and 75 questions, one HTTP write per memory, no hooks. Top 5 is the share of questions where the right memory came back in the first five.

| | agentmemory 0.9.31 | XERJ v1.0.0-rc.100 |
| --- | --- | --- |
| Top 5, default settings | 74.7% (BM25, keyless) | 73.3% (BM25) |
| Top 1, default settings | 53.3% | 54.7% |
| Top 5, reworded questions, default | 28% | 24% |
| Top 5, semantic with MiniLM | Not tested | 94.7% |
| New value first, changed facts | 13.3% | 13.3%; 93.3% with recency weight |
| Median write | 4.4 ms | 11.3 ms |
| Median query | 4.8 ms | 3.8 ms |
| LLM calls per write in this test | 0 | 0 |
| What you install | 143 npm packages plus the iii-engine binary | One binary |
| How memories get in | Hooks and plugins, or REST and MCP | REST and MCP |
| License | Apache 2.0 | Apache 2.0 |

## Question by question

Pick a question type. A check means the right memory was in the top 5.

*Figure: Runs in your browser and sends nothing. Each cell is the rank of the first returned memory that holds the answer, or miss if none of the top 5 does. "old first" means the old value of a changed fact ranked above the new one. From out/per_question.csv in benchmarks/agent-memory.*

## When to pick agentmemory

- You want sessions captured for you, with no extra step in your prompts.
- You switch between several coding agents and want one memory server for all of them.
- You want a live viewer to inspect what was saved.
- Your recalls reuse the words in your notes, so BM25 is enough.

## When to pick XERJ

- You want semantic recall that works with no setup, using a built-in model.
- You want the agent to choose what is worth keeping.
- You want one binary with no Node runtime.
- You want memory in the same engine as your logs, docs and code search.

## Limits on the XERJ side

- agentmemory wrote faster and edged XERJ on keyword top 5 in this test.
- XERJ does not capture sessions by itself. Your agent has to call the store tool.
- XERJ runs on one node with no replication.

See the full [AI agent memory benchmark](/compare/ai-agent-memory-benchmark) for all seven projects.

## Try it with XERJ

Use the Copy the prompt button and paste it into your coding agent. It installs XERJ, stores five facts about your repository and checks which reworded questions find them.

## Sources checked

All checked on 2026-10-31.

- agentmemory: README in [rohitg00/agentmemory](https://github.com/rohitg00/agentmemory), commit c6c476d2, npm release 0.9.31. License Apache 2.0 from the GitHub API.
- Test runs and per question results: [benchmarks/agent-memory](https://github.com/xerj-org/xerj/tree/main/benchmarks/agent-memory).

## FAQ

### What is agentmemory?

An Apache 2.0 memory server for coding agents such as Claude Code, Codex CLI and Cursor. Hooks and plugins record session events, and agents recall them later over MCP or a REST API.

### Which one recalled more in your test?

In keyword mode agentmemory was slightly ahead on top 5, 74.7% vs 73.3%, and XERJ slightly ahead on the first result, 54.7% vs 53.3%. With its MiniLM embedder on, XERJ semantic recall found 94.7%.

### Did you test agentmemory with embeddings?

No. We tested its keyless default, which is what a new install runs. Its optional local embeddings use the same MiniLM model family, so its semantic score could be close to the other MiniLM systems. We did not measure it.

### Which one is faster?

Writes: agentmemory 4.4 ms median, XERJ 11.3 ms. Queries: XERJ 3.8 ms, agentmemory 4.8 ms. Both ran over HTTP on the same shared machine.

### What do I install for each?

agentmemory resolved to 143 npm packages and downloads the iii-engine runtime binary. XERJ is one binary.

## Evidence

- Top 5: agentmemory keyless BM25 74.7%, XERJ BM25 73.3%, XERJ semantic 94.7%. Top 1: agentmemory 53.3%, XERJ BM25 54.7%. Reworded top 5: agentmemory 28%, XERJ BM25 24%. New value first: both 13.3%; XERJ with recency weight 93.3%. — `benchmarks/agent-memory/out/summary.csv`

## Related

- [AI agent memory compared: real tests on 7 open-source projects](/compare/ai-agent-memory-benchmark)
- [claude-mem vs MemPalace vs XERJ: which memory should Claude Code use?](/compare/xerj-vs-claude-mem-and-mempalace)
- [XERJ vs mcp-memory-service: two MCP memory servers, tested](/compare/xerj-vs-mcp-memory-service)
- [XERJ vs ReMe (Alibaba Tongyi Lab): a tested comparison](/compare/xerj-vs-reme)
- [How do people store user preferences so an agent can recall them next week?](/answers/coding-agent-memory-across-sessions)
- [What is an MCP memory server?](/answers/what-is-an-mcp-memory-server)
- [XERJ vs Mem0: which memory fits your AI agent?](/compare/xerj-vs-mem0) (same intent: agent memory)
- [XERJ vs memvid: one memory file or one local server?](/compare/xerj-vs-memvid) (same intent: agent memory)
- [XERJ vs agent memory tools: Mem0, Zep, Letta and Cognee](/compare/xerj-vs-agent-memory-tools) (same intent: agent memory)
