Compare
Compare

Mastra compresses an agent's own conversation as it runs. recall remembers across every agent's conversations.

Mastra is a TypeScript framework for building agents; its observational memory has an observer model compress the conversation into dated observations and a reflector condense them. recall reads the chats Claude Code, Codex and Cursor already keep, indexes them with no model calls, and writes notes overnight with a model you choose.

Checked 17 Oct 2026recall 0.5.1Mastra on GitHub ↗

01At a glance

Mastra's memory keeps one long conversation inside a context window: as the history grows, a model rewrites it as a log of dated observations, and as that grows, another condenses the log. It is memory within an agent you build in TypeScript. recall's memory is between agents you did not build: it indexes every chat Claude Code, Codex and Cursor have saved and keeps a few notes a night that all three load at session start.

Table 1 · recall and MastraThe short answers; the sections below take each in turn.
recallMastra
RunsOn your machineIn your TypeScript app, self-hosted; Mastra's platform
LicenceMITApache 2.0 core; ee/ under an enterprise licence
Model calls to store a chat0An observer call per 30k tokens, reflector calls on top
A search takes11 ms local, 47 with embeddingsNo search: the compressed log is the context
PriceFreeFramework free; platform free tier, Team $250 a month
Chat text leaves your machineNo, with a local modelYes: to the observer, reflector and agent models
Claude Code, Codex, CursorMCP, skill, session hookNone for memory: a docs MCP server only

02Where both were measured

Mastra's LongMemEval headline is the highest published: 94.9% with gpt-5-mini answering over about 30,000 tokens of observations written by gemini-2.5-flash. With GPT-4o answering the same observations it scored 84.2%, which shows how much the answer model carries. recall 0.4.1 scores 88.4% with Claude Haiku 5.5 answering and judging, reading ~44k tokens of whole chats.

The two are not doing the same thing: Mastra hands the model a compressed transcript of the whole history, with no retrieval step to measure; recall searches, and that retrieval puts an answering session in the top five 98.7% of the time. On coding work, where Mastra has no figures, recall finds the past fix in its top five 80% of the time on SWE-ContextBench.

recall 0.5.1 and MastraLongMemEval: answers correct and the context handed to the model, as each reports it.↑ Higher is better, except context
Fig 1
88.4%of LongMemEval questions answered correctly, Claude Haiku 5.5 reading recall's top 10 chats
98.7%of questions have an answering session in recall's top 5; Mastra does not search
Answers correctLongMemEval_S
  • Mastra · gpt-5-mini94.9%
  • recall 0.4.188.4%
  • Mastra · GPT-4o84.2%
Context a questiontokens handed to the answer model↓ fewer
  • Mastra~30k
  • recall 0.4.1 · top 10~44k
  • recall 0.4.1 · windows~17.5k
LongMemEval_S · Mastra's research post · recall 0.4.1, all 500 questions
Mastra: gpt-5-mini or GPT-4o answering over observations written by gemini-2.5-flash. recall: Claude Haiku 5.5 answering and judging. Mastra's memory is a compressed transcript rather than a search, so there is no retrieval figure to set beside recall's.

03Cost

Mastra's memory costs model calls as the conversation grows: an observer call each time the history passes 30,000 tokens, reflector calls as observations pass 40,000, run asynchronously by default; its post reports prompt caching cutting that four to ten times. The framework is free; the platform's Starter tier is free and metered, Team is $250 a month.

recall spends no model calls to index or search, and its one model cost is the nightly notes, with a model you choose: nothing with a local one, covered by a subscription, batch prices on an API key.

Table 2 · CostWhat storing and reading memory costs.
recallMastra
Model calls to store a chat0An observer call per 30k tokens, reflector calls on top
PriceFreeFramework free; platform free tier, Team $250 a month
To take in 300 sessions$0, no model callsObserver and reflector calls as history grows
Cost of memoryOne nightly run, your modelModel calls per threshold crossed

04Latency

Mastra's post calls observational memory low-latency and gives no numbers; with asynchronous buffering, observation runs beside the conversation and blocks only once the history reaches 1.2 times the threshold.

recall adds nothing to a turn: its search is a local index at 11 ms on ~2,800 chats, 47 ms with the embedding model, and the notes are written overnight.

Table 3 · LatencyWhat an agent waits for.
recallMastra
A search takes11 ms local, 47 with embeddingsNo search: the compressed log is the context
Wait at write timeNone: reads saved chatsAsynchronous by default; blocks at 1.2× the threshold

05Privacy

Mastra runs in your own application and stores observations as plain text in the database you chose; the text goes to the observer and reflector models you configured, Gemini Flash by preference, and to the agent's own model. Mastra publishes no data-residency statement for its platform.

recall runs on your machine, reads chats read-only, redacts secrets before indexing, and sends nothing anywhere except to the model you chose for the nightly notes. With a local model, nothing leaves.

Table 4 · PrivacyWhere your chat text goes.
recallMastra
RunsOn your machineIn your TypeScript app, self-hosted; Mastra's platform
LicenceMITApache 2.0 core; ee/ under an enterprise licence
Chat text leaves your machineNo, with a local modelYes: to the observer, reflector and agent models
ComplianceNothing to certify: no serviceNo data-residency statement found
TelemetryNonePlatform observability, if you use it

06How memory is built

Mastra keeps a transcript in compressed form: the observer turns messages into dated observations marked by priority, the reflector turns old observations into shorter ones, and the model reads all of it.

recall keeps every chat whole in a search index and a separate set of notes: preferences, project facts, decisions, lessons and open threads, each with a quote from its chat, in markdown under git, consolidated rule by rule once a night. Notes written by Claude Haiku 5.5 hold 91% of the conventions a mentor set on MemoryCode, and loaded at session start they lift an agent from 32% to 75% on long histories.

Table 5 · How memory is builtWhat is kept, and in what shape.
recallMastra
Captured byReading the agents' own chat filesThe agent's own message history
Memory isMarkdown notes in git, plus an index of every chatDated observations, as plain text in your database
RetrievalFull-text index, five rankings fused; optional local embeddingsNone; the model reads the observations
You can edit itYes, and the edit winsIn your database

07Which to pick

Pick Mastra if

  • You are building an agent in TypeScript and want its long conversations to keep fitting in the context window.
  • You want the best published LongMemEval score and are happy to pay the observer and reflector calls.
  • Your agent is yours; Claude Code, Codex and Cursor are not in the picture.

Pick recall if

  • You use Claude Code, Codex or Cursor and want them to share a memory of your work with nothing to build.
  • You want search over every past chat, not a compressed log of one, and no model calls to index it.
  • You want memory you can read as markdown and revert with git.

08Questions

Can Mastra's memory be used with Claude Code or Cursor?

No. It attaches to an agent written with the Mastra framework; the only MCP server it ships serves its documentation. recall connects to Claude Code, Codex and Cursor through an MCP server, a skill and hooks, and reads their transcripts from disk.

Why is Mastra's LongMemEval score higher?

Partly the answer model: gpt-5-mini reading 30,000 tokens of observations scored 94.9%, and GPT-4o reading the same scored 84.2%. recall's 88.4% was measured with Claude Haiku 5.5 as both answer model and judge. recall's retrieval alone finds an answering session in the top five 98.7% of the time.

Does Mastra search past conversations?

Observational memory does not search; it keeps a compressed version of the thread in context. Mastra has separate semantic recall over a vector store for that. recall's search is the core: a full-text index over every chat, ranked five ways and fused, with an optional embedding model.

Is Mastra open source?

The core is Apache 2.0; the ee/ directories are under the Mastra Enterprise Licence, free for development and licensed in production, and the hosted platform is paid above the Starter tier. recall is MIT with nothing hosted.

SourcesMastra on GitHub · github.com/mastra-ai/mastraMastra: observational memory · mastra.ai/docs/memory/observational-memoryMastra research: observational memory on LongMemEval · mastra.ai/research/observational-memoryMastra platform pricing · mastra.ai/blog/mastra-platform-pricingrecall's chat benchmark runs, with the other systems' figures · github.com/alirng/recall/blob/main/docs/research/retrieval-benchmarks.md