XERJ vs ReMe (Alibaba Tongyi Lab): a tested comparison
XERJ or ReMe? In our test both found the right memory in the top 5 for 93.3% of questions with hybrid search on. ReMe's default setup is faster but keyword only, and embeddings need extra config. Pick ReMe for Markdown memory files you can read and edit. Pick XERJ for one binary with semantic recall built in.
Key number: ReMe is published by the EconML team of Alibaba Tongyi Lab. Its embeddings are off by default; BM25 search runs with no LLM or API key. (as of 2026-10-31 · source: github.com/agentscope-ai/ReMe)
TL;DR ReMe, from Alibaba's Tongyi Lab, keeps agent memory as Markdown files and indexes them in the background. XERJ is one binary that indexes each memory as it is written. On our 75 question test, both reached 93.3% top 5 recall with hybrid search. XERJ ran in neural mode. ReMe's default is faster and keyword only.
Where a memory goes in ReMe and in XERJ
ReMe
- WriteMarkdown fileA note lands in the daily/ folder of the workspace.
- WatchFile watcherA background loop sees the change and chunks the file.
- IndexBM25, vectors if onEmbeddings are off by default.
- SearchRRF, then linksHits are fused and expanded along wikilinks.
XERJ
- WritePOST /_memory/nsThe text is indexed in the same request.
- IndexBM25 and vectorsOne index per namespace. MiniLM is built in.
- RecallBM25, semantic or hybridOptional recency weight favors newer memories.
Act as a coding agent. Read https://xerj.org/llms.txt, install XERJ, start a local node with --embed-mode neural, store eight facts about this project with POST /_memory/project, then recall each one with a reworded question using hybrid recall and tell me how many came back in the top 5.
curl -fsSL https://xerj.org/get | sh
Install the single XERJ binary.
xerj --embed-mode neural
Start a local node with the built-in MiniLM embedder.
curl -s -XPOST 'http://127.0.0.1:9200/_memory/project/_recall' -H 'content-type: application/json' -d '{"query":"which database do we use","hybrid":true,"k":5}'
Hybrid recall: BM25 and vectors fused by RRF.
Tested side by side
Same 85 memories, same 75 questions, same MiniLM model for embeddings. Top 5 is the share of questions where the right memory came back in the first five.
| ReMe 0.4.2.1 | XERJ v1.0.0-rc.100 | |
|---|---|---|
| Top 5, default settings | 70.7% (BM25) | 73.3% (BM25) |
| Top 5, reworded questions, default | 20% | 24% |
| Top 5, hybrid with MiniLM | 93.3% | 93.3% |
| Top 5, reworded, hybrid | 80% | 84% |
| Top 5, semantic only | Not tested | 94.7% |
| New value first, changed facts | 20% default, 13.3% hybrid | 13.3%; 93.3% with recency weight |
| Median write, default | 2.7 ms, searchable after about 6 s | 11.3 ms, searchable after one refresh call |
| Median query, default | 1.4 ms | 3.8 ms |
| Median query, hybrid | 12.0 ms | 6.5 ms |
| LLM calls per write in this test | 0 | 0 |
| Python packages to install | 138 (reme-ai[as]) | 0, one binary |
| Memory format | Markdown files with wikilinks | Index per namespace, JSON over HTTP |
| License | Apache 2.0 | Apache 2.0 |
Question by question
Pick a question type to see which memories each setup found. A check means the right memory was in the top 5.
XERJ and ReMe, question by question
| Question | Answer | XERJ BM25 | XERJ hybrid | ReMe default | ReMe hybrid |
|---|---|---|---|---|---|
| Does Dana prefer pnpm or npm? | pnpm | 1 | 1 | 1 | 1 |
| What is the main database for Lark? | PostgreSQL | 1 | 1 | 1 | 1 |
| What is Dana allergic to? | peanuts | 1 | 1 | 1 | 1 |
| Which region does the staging cluster run in? | eu-west-3 | 1 | 1 | 1 | 1 |
| What is Lark's frontend written in? | Svelte | 1 | 1 | 1 | 1 |
| Where does error tracking for Lark go? | Sentry | 1 | 1 | 1 | 1 |
| What is Dana's cat named? | Biscuit | 1 | 1 | 1 | 1 |
| How fast must the test suite finish? | 12 minutes | 1 | 1 | 1 | 1 |
| What does the billing service use for card payments? | Stripe | 1 | 1 | 1 | 1 |
| What is the Lark mobile app built with? | Flutter | 1 | 1 | 1 | 1 |
| What is the Lark design system called? | Pebble | 1 | 1 | 1 | 1 |
| Where are Lark's public docs hosted? | Mintlify | 1 | 1 | 1 | 1 |
| What is the analytics warehouse? | ClickHouse | 1 | 1 | 1 | 1 |
| What is the support inbox address? | [email protected] | 1 | 1 | 1 | 1 |
| Which day does Dana's daughter Mia have swim practice? | Wednesdays | 1 | 1 | 1 | 1 |
| What is the load balancer in front of Lark? | HAProxy | 1 | 1 | 1 | 1 |
| What do background jobs run on? | Sidekiq | 1 | 1 | 1 | 1 |
| What is Dana's GitHub handle? | dana-codes | 1 | 1 | 1 | 1 |
| What is the Redis cache TTL? | 300 seconds | 1 | 1 | 1 | 1 |
| What is the Slack channel for incidents? | lark-fire | 1 | 1 | 1 | 1 |
| Where are secrets stored? | Vault | 1 | 1 | 1 | 1 |
| What is transactional email sent through? | Postmark | 1 | 1 | 1 | 1 |
| What is the monorepo built with? | Turborepo | 1 | 1 | 1 | 1 |
| When do database backups run? | 02:00 | 1 | 1 | 1 | 1 |
| What is Lark's mascot? | Hugo | 1 | 1 | 1 | 1 |
| Which package manager should I use for JS work? | pnpm | miss | 2 | miss | 2 |
| Does she have any food intolerance I should know about before ordering lunch? | peanuts | miss | 1 | miss | 1 |
| Who is the boss Dana answers to? | Tomas | 3 | miss | miss | 5 |
| Which UI framework powers the web client? | Svelte | miss | miss | miss | miss |
| Where do crash reports and exceptions end up? | Sentry | miss | 1 | miss | 1 |
| What is the name of her pet? | Biscuit | miss | 1 | miss | 2 |
| How does Dana take her coffee? | oat milk | miss | 3 | miss | miss |
| Which company handles credit card charges? | Stripe | 1 | 1 | 1 | 1 |
| What computer does she use at the office? | ThinkPad | miss | 5 | miss | 2 |
| Which toolkit was used for the iOS and Android client? | Flutter | miss | 2 | miss | 1 |
| What style should git log entries follow? | imperative | miss | 5 | miss | 5 |
| Which language does Dana like coding in most? | Rust | 1 | 1 | 1 | 1 |
| Is there a legal rule about where user records may be kept? | inside the EU | miss | 1 | miss | 1 |
| What sport does Dana's kid do midweek? | swim | miss | 2 | miss | miss |
| How long should a call with Dana be? | 25 minutes | miss | 5 | miss | 3 |
| Does Dana eat meat? | vegetarian | 1 | 1 | 2 | 1 |
| Which human languages does the product UI support? | Portuguese | miss | 5 | miss | 3 |
| Where do we keep passwords and API tokens? | Vault | miss | 2 | miss | 4 |
| What exercise does she do at the weekend? | 10k | miss | 4 | miss | 2 |
| Which tool maps the JavaScript backends to SQL tables? | Prisma | miss | miss | miss | miss |
| How quickly should a pull request get feedback? | same day | miss | miss | miss | miss |
| What bird represents the brand? | heron | miss | 3 | miss | 1 |
| Which city is home to Dana's sibling? | Porto | miss | 3 | miss | 1 |
| How slow may search get for the slowest one in twenty requests? | 200 ms | 1 | 1 | 5 | 2 |
| Under which open source terms is the code published? | MPL-2.0 | 1 | 1 | 1 | 1 |
| What port does the Lark API listen on in production? | 9443 | 2, old first | 2, old first | 2, old first | 2, old first |
| Which day does Dana's team deploy to production? | Tuesdays | 1 | 1 | 1 | 1 |
| Who is Dana's manager? | Tomas | miss | miss | miss | 4, old first |
| What code editor does Dana use? | Zed | 2, old first | 2, old first | 2, old first | 2, old first |
| Where does the Lark CI pipeline run? | GitHub Actions | 2, old first | 2, old first | 2, old first | 2, old first |
| What is Lark's search feature backed by? | Typesense | 2, old first | 2, old first | 2, old first | 2, old first |
| Where are feature flags managed? | Unleash | 2, old first | 2, old first | 2, old first | 2, old first |
| How long are application logs retained? | 90 days | 4, old first | 3, old first | 4, old first | 2, old first |
| What timezone does Dana work on? | Berlin | 3, old first | 2, old first | miss | 2, old first |
| When do auth JWTs expire? | 60 minutes | 1 | 1 | 1 | 1 |
| What do Lark's Python services use for dependency management? | uv | 2, old first | 2, old first | 2, old first | 2, old first |
| When is the Lark 2.0 launch? | April 2 | 2, old first | 2, old first | 1 | 2, old first |
| Which floor is Dana's desk on? | 3rd floor | 2, old first | 2, old first | 2, old first | 2, old first |
| What is the Lark API rate limit per key? | 1200 | 2, old first | 2, old first | 2, old first | 2, old first |
| Which Kubernetes version runs in production? | 1.33 | 2, old first | 2, old first | 2, old first | 2, old first |
| What is the staging database for Lark? | MySQL | 1 | 1 | 1 | 1 |
| Which package manager does Dana's brother prefer? | yarn | 2 | 2 | 2 | 4 |
| What port does the internal admin API listen on? | 7001 | 1 | 1 | 1 | 1 |
| Which day does the marketing website deploy? | Fridays | 1 | 1 | 1 | 1 |
| What is Priya's cat named? | Pixel | 1 | 1 | 1 | 1 |
| How long are search query logs retained? | 7 days | 1 | 1 | 1 | 1 |
| What is the mobile app's rate limit? | 100 requests | 1 | 1 | 1 | 1 |
| What does the data team use for local analysis? | DuckDB | 1 | 1 | 1 | 1 |
| What was Dana's old personal laptop? | MacBook | 1 | 1 | 1 | 1 |
| Which street is Mia's school on? | Rua das Flores | 1 | 1 | 1 | 1 |
When to pick ReMe
- You want memory as plain Markdown files your team can read, edit and keep in git.
- You use Claude Code, Hermes Agent, OpenClaw or another agent ReMe has a plugin for.
- You want Auto Memory to turn sessions into memory cards with an LLM.
- Keyword recall is enough, and you want the fastest default.
When to pick XERJ
- You want semantic or hybrid recall with no extra embedding server or API key.
- You want a memory to be searchable right after the write.
- You want memory in the same engine as your logs, docs and code search.
- You want one binary with an HTTP API and an MCP server.
Limits on the XERJ side
- In this test XERJ lost on raw speed to ReMe's default BM25.
- The recency weight that fixes changed facts dropped overall top 5 recall to 68%.
- XERJ does not summarize sessions for you. The agent decides what to store.
- XERJ is single-node.
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 eight facts and checks how many reworded questions find them.
Sources checked
All checked on 2026-10-31.
- ReMe: README and docs/en/memory_search.md in agentscope-ai/ReMe, commit 1e51e0dc. Authors from pyproject.toml. License Apache 2.0 from the GitHub API.
- Test runs, configs and per question results: benchmarks/agent-memory.
FAQ
Is ReMe from Alibaba?
Yes. ReMe lives in the agentscope-ai GitHub organization, and its package lists the EconML team of Alibaba Tongyi Lab as authors. It is Apache 2.0.
Does ReMe need an LLM?
Not for basic use. Writing files, BM25 search and wikilinks run with no LLM key. Auto Memory, which turns sessions into memory cards, and memory evolution do call an LLM.
Which one recalled more in your test?
With default settings, XERJ BM25 found 73.3% in the top 5 and ReMe 70.7%. With MiniLM embeddings, both hybrid modes found 93.3%. XERJ semantic recall found 94.7%.
Which one is faster?
ReMe's default setup: 1.4 ms per query and 2.7 ms per write, against 3.8 ms and 11.3 ms for XERJ BM25. ReMe indexes in the background, so a new memory took about 6 seconds to become searchable. XERJ hybrid queries took 6.5 ms and ReMe hybrid 12.0 ms.
How did you turn on ReMe embeddings?
The default config points at DashScope's text-embedding-v4. We followed ReMe's README to enable the embedding components and pointed them at a local MiniLM endpoint, so both tools used the same model.
Evidence
- Top 5 recall on 75 questions: XERJ semantic 94.7%, XERJ hybrid 93.3%, ReMe hybrid 93.3%, XERJ BM25 73.3%, ReMe default BM25 70.7%. Reworded questions top 5: XERJ BM25 24%, ReMe hybrid 80%, XERJ semantic 84%. New value first on changed facts: XERJ 13.3%. With recency weight 0.3, XERJ overall top 5 recall was 68%. —
benchmarks/agent-memory/out/summary.csv - After the last write, ReMe took about 6 s before the memory was searchable. —
benchmarks/agent-memory/results/reme__bm25_default.json
Related
- AI agent memory compared: real tests on 7 open-source projects
- XERJ vs Mem0: which memory fits your AI agent?
- XERJ vs agentmemory: which memory for your coding agent?
- XERJ vs agent memory tools: Mem0, Zep, Letta and Cognee
- What is hybrid search?
- BM25 vs vector search: which one should you use?
- XERJ vs memvid: one memory file or one local server? · same intent: agent memory
- XERJ vs mcp-memory-service: two MCP memory servers, tested · same intent: agent memory
- Should agent memory use a knowledge graph? · same intent: agent memory