Install Mastra
The create mastra CLI command is the quickest way to start a new Mastra project. It walks you through setup and creates example agents, workflows, and tools for you to learn from or adapt.
For more control over setup, or to add Mastra to an existing project, see the manual installation guide. You can also use mastra init for existing projects.
Before you start
- You'll need an API key from a model provider to complete setup. We suggest starting with OpenAI, but if you need a provider that doesn't require a credit card, Google's Gemini is also an option.
- Install Node.js 20 or later.
Install with create mastra
You can run create mastra anywhere on your machine.
The wizard will guide you through setup, create a new directory for your project, and generate a weather agent with example workflows and tools to get you started.
- npm
- pnpm
- yarn
- bun
npm create mastra@latest
pnpm create mastra@latest
yarn create mastra@latest
bun create mastra@latest
You can use flags with create mastra like --no-example to skip the example weather agent or --template to start from a specific template. Read the CLI reference for all options.
Test your agent
Once setup is complete, follow the instructions in your terminal to start the Mastra dev server, then open the Playground at http://localhost:4111.
Try asking about the weather. If your API key is set up correctly, you'll get a response:
If you encounter an error, your API key may not be configured correctly. Double-check your setup and try again. Need more help? Join our Discord and talk to the team directly.
The Playground lets you rapidly build and prototype agents without needing to build a UI. Once you're ready, you can integrate your Mastra agent into your application using the guides below.
Next steps
- Read more about Mastra's features.
- Integrate Mastra with your frontend framework: Next.js, React, or Astro.
- Build an agent from scratch following one of our guides.
- Watch conceptual guides on our YouTube channel and subscribe!
Install manually
If you prefer not to use our automatic create mastra CLI tool, you can set up your project yourself by following the guide below.
Create a new project and change directory:
mkdir my-first-agent && cd my-first-agentInitialize a TypeScript project and install the following dependencies:
- npm
- pnpm
- yarn
- bun
npm init -y
npm install -D typescript @types/node mastra@latest
npm install @mastra/core@latest zod@^4pnpm init -y
pnpm add -D typescript @types/node mastra@latest
pnpm add @mastra/core@latest zod@^4yarn init -y
yarn add -D typescript @types/node mastra@latest
yarn add @mastra/core@latest zod@^4bun init -y
bun add -d typescript @types/node mastra@latest
bun add @mastra/core@latest zod@^4Add
devandbuildscripts to yourpackage.jsonfile:package.json{
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "mastra dev",
"build": "mastra build"
}
}Create a
tsconfig.jsonfile:touch tsconfig.jsonAdd the following configuration:
tsconfig.json{
"compilerOptions": {
"target": "ES2022",
"module": "ES2022",
"moduleResolution": "bundler",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true,
"noEmit": true,
"outDir": "dist"
},
"include": ["src/**/*"]
}infoMastra requires modern
moduleandmoduleResolutionsettings. UsingCommonJSornodewill cause resolution errors.Create an
.envfile:touch .envAdd your API key:
.envGOOGLE_GENERATIVE_AI_API_KEY=<your-api-key>noteThis guide uses Google Gemini, but you can use any supported model provider, including OpenAI, Anthropic, and more.
Create a
weather-tool.tsfile:mkdir -p src/mastra/tools && touch src/mastra/tools/weather-tool.tsAdd the following code:
src/mastra/tools/weather-tool.tsimport { createTool } from "@mastra/core/tools";
import { z } from "zod";
export const weatherTool = createTool({
id: "get-weather",
description: "Get current weather for a location",
inputSchema: z.object({
location: z.string().describe("City name"),
}),
outputSchema: z.object({
output: z.string(),
}),
execute: async () => {
return {
output: "The weather is sunny",
};
},
});infoWe've shortened and simplified the
weatherToolexample here. You can see the complete weather tool under Giving an Agent a Tool.Create a
weather-agent.tsfile:mkdir -p src/mastra/agents && touch src/mastra/agents/weather-agent.tsAdd the following code:
src/mastra/agents/weather-agent.tsimport { Agent } from "@mastra/core/agent";
import { weatherTool } from "../tools/weather-tool";
export const weatherAgent = new Agent({
name: "Weather Agent",
instructions: `
You are a helpful weather assistant that provides accurate weather information.
Your primary function is to help users get weather details for specific locations. When responding:
- Always ask for a location if none is provided
- If the location name isn't in English, please translate it
- If giving a location with multiple parts (e.g. "New York, NY"), use the most relevant part (e.g. "New York")
- Include relevant details like humidity, wind conditions, and precipitation
- Keep responses concise but informative
Use the weatherTool to fetch current weather data.
`,
model: "google/gemini-2.5-pro",
tools: { weatherTool },
});Create the Mastra entry point and register your agent:
touch src/mastra/index.tsAdd the following code:
src/mastra/index.tsimport { Mastra } from "@mastra/core/mastra";
import { weatherAgent } from "./agents/weather-agent";
export const mastra = new Mastra({
agents: { weatherAgent },
});You can now launch the Playground and test your agent.
- npm
- pnpm
- yarn
- bun
npm run devpnpm run devyarn run devbun run dev