Agents and workflows share one TypeScript runtime
Mastra gives a TypeScript application two ways to control model-backed work. Agents can select tools and continue until they reach an answer. Workflows declare steps, branches, parallel paths, and suspension points. That split is useful when one part of a product can be exploratory but another part, such as approving an account change, needs an explicit route. Memory, retrieval, evaluation, tracing, and a local Studio sit around both.
The README also treats MCP server authoring as a first-class path. Existing agents, tools, and structured resources can be made available to other MCP clients without building a second wrapper. Mastra can live inside Node, Next.js, or React projects, or run as a standalone server. That breadth is the appeal, but it means adoption affects more than the line where you call a model.
The 18,814-file monorepo changes the cost of contributing
commit 94ba70e contained 18,814 files, about 3,183,467 lines of source, and occupied 215.3 MB before installation. It is a pnpm workspace with 32 CI workflow files and no root Dockerfile or tests directory. Application developers install selected packages. Anyone modifying the framework itself has to navigate the larger graph of core code, storage adapters, clients, Studio, deployers, and integrations.
The development guide tries to keep that manageable. It documents filtered builds for core, deployers, stores, speech, and client packages, and recommends watching only the packages being changed. Node 22.13 or later and pnpm 11.21 or later are the stated prerequisites. Docker is needed for only a subset of development services, while some test groups require model keys or a PostgreSQL connection.
What happened when we ran it
Our sandbox installed commit 94ba70e in 236 seconds. The pnpm step added 1 package and left 38 MB on disk. A full build then succeeded in 693 seconds on 3 CPUs with 8 GB of RAM in an unprivileged Node 22 container. Those numbers describe repository setup and compilation, not agent latency or model quality.
Tests did not finish within the 900-second limit. The last captured lines showed a local IPv4 socket, with 940 bytes written and 0 bytes read, connecting two loopback ports. The output does not name the test behind that socket or explain why no data came back. We can report a timeout and the socket state; blaming a database, network service, or deadlock would go beyond the log.
This result makes targeted commands important for contributors. The guide lists package-specific test scripts rather than requiring every change to begin with the whole suite. A team evaluating Mastra as a dependency should test the packages and adapters it will deploy. A maintainer setting a merge gate for the monorepo needs to budget for a build that took us more than 11 minutes and a suite that exceeded 15 minutes.
Persistent storage decides whether an agent survives a restart
The in-memory store is meant for experiments because its state disappears with the process. Persistent adapters hold conversation memory, workflow snapshots, traces, evaluation data, schedules, and background-task state. A file-backed database can suit local work; shared deployments can use supported external stores. The storage choice therefore controls recovery behavior, retention, and which processes can resume a run.
Release @mastra/core@1.72.0, published September 30, added ownership leases for background tasks shared by multiple managers. It also warned that older storage packages ignore the new fencing conditions, so the storage package must be upgraded with core to get that protection. This is a good example of Mastra's value and its upkeep cost: the framework addresses difficult runtime cases, while package coordination still belongs to the operator.
Model access and tool permission stay with the application
Mastra's common model interface can reduce provider-specific code, but useful agent runs still need access to a configured model. Providers differ in tool calling, structured output, context rules, and billing. A passing evaluation against one model does not establish how another will behave. The application must set spending limits, decide what data may leave its boundary, and handle provider failures.
Tool schemas validate input shape. They do not decide whether an agent should send an email, write a file, or alter a production record. Mastra supports human approval and workflow suspension, which gives teams a place to insert that policy. Traces may also contain prompts and tool data, so observability storage deserves the same access controls and deletion rules as the product data it records.
Same-day pushes show activity, while licensing needs a directory check
GitHub showed 28,521 stars and 468 combined issues and pull requests on October 3, 2026. The repository was pushed that day, and newly opened bug reports were receiving updates. The release three days earlier included durable-run recovery work, thread subscription changes, trace aggregation, and breaking playground UI changes. This is active maintenance paired with a brisk upgrade pace.
Most of the repository uses Apache-2.0, but directories named ee/ use the Mastra Enterprise License and require a valid license for production use. Check the paths included in your deployment instead of reading the repository label as one blanket license. Mastra earns a prototype when several agent concerns already belong in the product. If most of its storage, workflow, evaluation, and Studio machinery would sit unused, take the smaller dependency.

