Open coreApache-2.0 and Mastra Enterprise LicenseTested by Geekflare

Mastra review

TypeScript framework for agents and workflows, with a local Studio, memory and tracing

Data refreshedMethodologyHow we tested
Director of Geekflare

Rity Anand is a director of Geekflare. She has extensive experience managing business technology and a special interest in emerging technologies.

Verdict

Mastra is the most complete choice for TypeScript teams, with agents, workflows that suspend and resume, memory, evals and a local Studio in one package. Most of it is Apache 2.0, but some team features sit under an enterprise licence, so check which folder a feature comes from.

Best for

TypeScript and Next.js teams building agents into their own product

Not for

Python teams, or teams that want every feature under an open source licence

Pros

  • Local Studio to chat with agents, run workflows and read traces
  • Workflows suspend for approval and resume from stored state
  • One interface for many model providers
  • Runs inside Next.js or Node apps, or as its own server

Cons

  • Some team features are under a source-available enterprise licence
  • Needs a recent Node.js, 22.13 or later
  • Many packages release separately, so upgrades touch several versions
Ask Sparkian

Is Mastra right for your project?

Describe what you need and AI will check the fit against this review.

Mastra features and capabilities

Studio

mastra dev opens a local UI for chatting with agents, running workflows, testing tools and reading traces, so developers can debug without extra services.

Workflows with suspend and resume

Workflows branch, loop and run steps in parallel, and can pause for a person's input for as long as needed, then continue from a saved snapshot.

Memory

Conversation history, retrieval and observational memory keep agents consistent across sessions, stored in your own database.

MCP both ways

Agents can use tools from MCP servers, and your own tools and agents can be published as an MCP server for other clients.

Tracing and evals

Spans cover agents, workflows, tools and model calls, and built-in evals score outputs, with exporters for OpenTelemetry backends.

Any model providerWorks with OpenAI, Anthropic, Google and local models, not one vendor
Yes
Multi-agentSeveral agents can hand off or work together
Yes
MCP toolsCan use tools from MCP servers
Yes
Durable stateSaves progress so a run can resume after a crash or a pause
YesWorkflow snapshots in LibSQL, Postgres or other storage
Human approvalCan pause for a person to approve or edit before continuing
Yes
TracingShows each step, tool call and token use
YesShown in Studio, with OpenTelemetry exporters
Visual studioA UI to build, run or debug agents
YesLocal Studio; team roles need the enterprise licence

At a glance

Type
TypeScript agent framework
Stack
TypeScript / Node.js 22.13+
Databases
LibSQL, PostgreSQL
Licence terms
The core framework is Apache 2.0. Code in ee folders, such as Studio roles and the editor, is source-available and needs a paid licence in production.
SSO
Free edition
Roles and permissions
Paid only
Audit logs
Paid only

Free vs paid editions

What you get when you self-host, and what needs a paid plan.

The Apache 2.0 core includes agents, workflows, memory, MCP, tracing and Studio, and you can host it anywhere. Role-based access in Studio and the Studio editor sit in ee folders and need an enterprise licence in production. The Mastra platform hosts agents and Studio with a free Starter plan, and Teams costs $250 a month.

Self-hosting Mastra

Mastra needs Node.js 22.13 or later. Workflow state and memory need a storage adapter such as LibSQL or Postgres.

New cloud server to ready

56 s

Research task, median of 3

20.3 s, 349 MB peak

Version tested

1.78.0 · Oct 19, 2026

  • Installing Mastra with zod and tsx in a fresh Node 22 container took 35 seconds and peaked at 349 MB.
  • The tools are written with createTool and a zod schema, so they carry their own HTTP calls, which makes the file longer than the Python agents.
  • Passing openrouter/anthropic/claude-haiku-5.5 as the model was enough. All three runs passed in 8 to 21 seconds, at about $0.001 to $0.003 each.
agent.ts, after npm i @mastra/core zod tsx
import { Agent } from "@mastra/core/agent";
import { createTool } from "@mastra/core/tools";
import { z } from "zod";

const H = { "x-api-key": process.env.GEEKFLARE_API_KEY!, "Content-Type": "application/json" };

const webSearch = createTool({
  id: "web_search",
  description: "Search the web. Returns the top 5 results as 'title | url | snippet' lines.",
  inputSchema: z.object({ query: z.string() }),
  execute: async ({ query }) => {
    const r = await fetch("https://api.geekflare.com/search", { method: "POST", headers: H, body: JSON.stringify({ query }) });
    const items = ((await r.json()).data ?? []).slice(0, 5);
    return items.map((i: any) => `${i.title} | ${i.url} | ${i.snippet ?? ""}`).join("\n");
  },
});

const readPage = createTool({
  id: "read_page",
  description: "Read a web page as Markdown, cut to 6,000 characters.",
  inputSchema: z.object({ url: z.string() }),
  execute: async ({ url }) => {
    const r = await fetch("https://api.geekflare.com/webscraping", { method: "POST", headers: H, body: JSON.stringify({ url, format: ["markdown"] }) });
    return (((await r.json()).data ?? {}).markdown ?? "").slice(0, 6000);
  },
});

export const agent = new Agent({
  name: "Researcher",
  instructions: "You are a careful research assistant. Use the tools to find facts and cite your sources.",
  model: "openrouter/anthropic/claude-haiku-5.5",
  tools: { webSearch, readPage },
});

export async function run(task: string): Promise<string> {
  const res = await agent.generate(task, { maxSteps: 10, modelSettings: { temperature: 0, maxOutputTokens: 1024 } });
  return res.text;
}
Agent's answerPassedRun 2 of 3 · 20.3 s · $0.0010
Asked: What is the latest stable release of Scrapy, when was it released, and what are two notable changes in it? Use the tools, cite the release notes URL, and answer in under 120 words.

The latest stable release is Scrapy 2.19.0, released 10 September 2026, according to the Scrapy release notes.

Two notable changes:

  1. New RemoteControl extension, which lets you inspect and control a running crawl over HTTP.
  2. The default priority queue is now DownloaderAwarePriorityQueue, per the release notes and the settings docs.

I could only see search snippets of the release notes, not the full text, so there may be other changes I didn't capture.