Skip to main content
Mastra 1.0 is available 🎉 Read announcement

Mastra Class

The Mastra class is the central orchestrator in any Mastra application, managing agents, workflows, storage, logging, observability, and more. Typically, you create a single instance of Mastra to coordinate your application.

Think of Mastra as a top-level registry where you register agents, workflows, tools, and other components that need to be accessible throughout your application.

Usage example
Direct link to Usage example

src/mastra/index.ts
import { Mastra } from "@mastra/core";
import { PinoLogger } from "@mastra/loggers";
import { LibSQLStore } from "@mastra/libsql";
import { weatherWorkflow } from "./workflows/weather-workflow";
import { weatherAgent } from "./agents/weather-agent";

export const mastra = new Mastra({
workflows: { weatherWorkflow },
agents: { weatherAgent },
storage: new LibSQLStore({
id: 'mastra-storage',
url: ":memory:",
}),
logger: new PinoLogger({
name: "Mastra",
level: "info",
}),
});

Constructor parameters
Direct link to Constructor parameters

Visit the Configuration reference for detailed documentation on all available configuration options.

agents?:

Record<string, Agent>
= {}
Agent instances to register, keyed by name

tools?:

Record<string, ToolApi>
= {}
Custom tools to register. Structured as a key-value pair, with keys being the tool name and values being the tool function.

storage?:

MastraCompositeStore
Storage engine instance for persisting data

vectors?:

Record<string, MastraVector>
Vector store instance, used for semantic search and vector-based tools (eg Pinecone, PgVector or Qdrant)

logger?:

Logger
= Console logger with INFO level
Logger instance created with new PinoLogger()

idGenerator?:

() => string
Custom ID generator function. Used by agents, workflows, memory, and other components to generate unique identifiers.

workflows?:

Record<string, Workflow>
= {}
Workflows to register. Structured as a key-value pair, with keys being the workflow name and values being the workflow instance.

tts?:

Record<string, MastraVoice>
Text-to-speech providers for voice synthesis

observability?:

ObservabilityEntrypoint
Observability configuration for tracing and monitoring

deployer?:

MastraDeployer
An instance of a MastraDeployer for managing deployments.

server?:

ServerConfig
Server configuration including port, host, timeout, API routes, middleware, CORS settings, and build options for Swagger UI, API request logging, and OpenAPI docs.

mcpServers?:

Record<string, MCPServerBase>
An object where keys are registry keys (used for getMCPServer()) and values are instances of MCPServer or classes extending MCPServerBase. Each MCPServer must have an id property. Servers can be retrieved by registry key using getMCPServer() or by their intrinsic id using getMCPServerById().

bundler?:

BundlerConfig
Configuration for the asset bundler with options for externals, sourcemap, and transpilePackages.

scorers?:

Record<string, Scorer>
= {}
Scorers for evaluating agent responses and workflow outputs

processors?:

Record<string, Processor>
= {}
Input/output processors for transforming agent inputs and outputs

gateways?:

Record<string, MastraModelGateway>
= {}
Custom model gateways to register for accessing AI models through alternative providers or private deployments. Structured as a key-value pair, with keys being the registry key (used for getGateway()) and values being gateway instances.

memory?:

Record<string, MastraMemory>
= {}
Memory instances to register. These can be referenced by stored agents and resolved at runtime. Structured as a key-value pair, with keys being the registry key and values being memory instances.
On this page