COMPARE · COMPARISON: AGENT MEMORY

XERJ vs agentmemory: which memory for your coding agent?

AUTHOR · XERJ documentation team · REVIEWED BY · XERJ engineering team · PUBLISHED · 2026-10-31 · UPDATED · 2026-10-31
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)

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%.

Diagram

How each one gets memories in

agentmemory

Hooks capture the session

Plugins and hooks for Claude Code and other agents record session events, with secret scrubbing. A local server (port 3111 by default) runs on the iii-engine runtime. Keyless mode searches with BM25; set an embedding provider for semantic recall.

XERJ

The agent decides what to save

The agent calls the memory store tool or POST /_memory/ns. One binary holds memory next to logs, docs and code. Recall is BM25 by default, semantic or hybrid with the built-in MiniLM model.

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.
PASTE THIS TO YOUR AI AGENT — IT DOES THE REST 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.
RUN THIS XERJ COMMAND curl -fsSL https://xerj.org/get | sh Install the single XERJ binary.
RUN THIS XERJ COMMAND xerj --embed-mode neural Start a local node with the built-in MiniLM embedder.
RUN THIS XERJ COMMAND 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}' Semantic recall: matches meaning, not only shared words.

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.31XERJ v1.0.0-rc.100
Top 5, default settings74.7% (BM25, keyless)73.3% (BM25)
Top 1, default settings53.3%54.7%
Top 5, reworded questions, default28%24%
Top 5, semantic with MiniLMNot tested94.7%
New value first, changed facts13.3%13.3%; 93.3% with recency weight
Median write4.4 ms11.3 ms
Median query4.8 ms3.8 ms
LLM calls per write in this test00
What you install143 npm packages plus the iii-engine binaryOne binary
How memories get inHooks and plugins, or REST and MCPREST and MCP
LicenseApache 2.0Apache 2.0

Question by question

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

Try it: every question we asked

XERJ and agentmemory, question by question

QuestionAnswerXERJ BM25XERJ hybridagentmemory
Does Dana prefer pnpm or npm?pnpm111
What is the main database for Lark?PostgreSQL111
What is Dana allergic to?peanuts111
Which region does the staging cluster run in?eu-west-3111
What is Lark's frontend written in?Svelte111
Where does error tracking for Lark go?Sentry111
What is Dana's cat named?Biscuit111
How fast must the test suite finish?12 minutes111
What does the billing service use for card payments?Stripe111
What is the Lark mobile app built with?Flutter111
What is the Lark design system called?Pebble111
Where are Lark's public docs hosted?Mintlify111
What is the analytics warehouse?ClickHouse111
What is the support inbox address?[email protected]111
Which day does Dana's daughter Mia have swim practice?Wednesdays111
What is the load balancer in front of Lark?HAProxy111
What do background jobs run on?Sidekiq111
What is Dana's GitHub handle?dana-codes111
What is the Redis cache TTL?300 seconds111
What is the Slack channel for incidents?lark-fire111
Where are secrets stored?Vault111
What is transactional email sent through?Postmark111
What is the monorepo built with?Turborepo111
When do database backups run?02:00111
What is Lark's mascot?Hugo111
Which package manager should I use for JS work?pnpmmiss24
Does she have any food intolerance I should know about before ordering lunch?peanutsmiss1miss
Who is the boss Dana answers to?Tomas3missmiss
Which UI framework powers the web client?Sveltemissmissmiss
Where do crash reports and exceptions end up?Sentrymiss1miss
What is the name of her pet?Biscuitmiss13
How does Dana take her coffee?oat milkmiss3miss
Which company handles credit card charges?Stripe112
What computer does she use at the office?ThinkPadmiss5miss
Which toolkit was used for the iOS and Android client?Fluttermiss2miss
What style should git log entries follow?imperativemiss5miss
Which language does Dana like coding in most?Rust111
Is there a legal rule about where user records may be kept?inside the EUmiss1miss
What sport does Dana's kid do midweek?swimmiss2miss
How long should a call with Dana be?25 minutesmiss5miss
Does Dana eat meat?vegetarian112
Which human languages does the product UI support?Portuguesemiss5miss
Where do we keep passwords and API tokens?Vaultmiss2miss
What exercise does she do at the weekend?10kmiss4miss
Which tool maps the JavaScript backends to SQL tables?Prismamissmissmiss
How quickly should a pull request get feedback?same daymissmissmiss
What bird represents the brand?heronmiss3miss
Which city is home to Dana's sibling?Portomiss3miss
How slow may search get for the slowest one in twenty requests?200 ms111
Under which open source terms is the code published?MPL-2.0111
What port does the Lark API listen on in production?94432, old first2, old first2, old first
Which day does Dana's team deploy to production?Tuesdays111
Who is Dana's manager?Tomasmissmissmiss
What code editor does Dana use?Zed2, old first2, old first2, old first
Where does the Lark CI pipeline run?GitHub Actions2, old first2, old first2, old first
What is Lark's search feature backed by?Typesense2, old first2, old first2, old first
Where are feature flags managed?Unleash2, old first2, old first2, old first
How long are application logs retained?90 days4, old first3, old first3, old first
What timezone does Dana work on?Berlin3, old first2, old first2, old first
When do auth JWTs expire?60 minutes111
What do Lark's Python services use for dependency management?uv2, old first2, old first2, old first
When is the Lark 2.0 launch?April 22, old first2, old first2, old first
Which floor is Dana's desk on?3rd floor2, old first2, old first2, old first
What is the Lark API rate limit per key?12002, old first2, old first2, old first
Which Kubernetes version runs in production?1.332, old first2, old first2, old first
What is the staging database for Lark?MySQL111
Which package manager does Dana's brother prefer?yarn221
What port does the internal admin API listen on?7001111
Which day does the marketing website deploy?Fridays111
What is Priya's cat named?Pixel111
How long are search query logs retained?7 days111
What is the mobile app's rate limit?100 requests111
What does the data team use for local analysis?DuckDB111
What was Dana's old personal laptop?MacBook111
Which street is Mia's school on?Rua das Flores111
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

When to pick XERJ

Limits on the XERJ side

See the full 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.

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

Related