Skip to main content

NetlifyDeployer

The NetlifyDeployer class handles packaging, configuration, and deployment by adapting Mastra's output to create an optimized version of your server. It extends the base Deployer class with Netlify-specific functionality. It enables you to run Mastra within Netlify serverless functions or edge functions.

Installation
Direct link to Installation

In order to use NetlifyDeployer, you need to install the @mastra/deployer-netlify package:

npm install @mastra/deployer-netlify@latest

Usage example
Direct link to Usage example

Import NetlifyDeployer and set it as the deployer in your Mastra configuration:

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { NetlifyDeployer } from '@mastra/deployer-netlify'

export const mastra = new Mastra({
deployer: new NetlifyDeployer(),
})

Constructor options
Direct link to Constructor options

  • target?: 'serverless' | 'edge' — Deploy target for Netlify. Defaults to 'serverless'.

Edge functions example
Direct link to Edge functions example

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { NetlifyDeployer } from '@mastra/deployer-netlify'

export const mastra = new Mastra({
deployer: new NetlifyDeployer({
target: 'edge',
}),
})

Output
Direct link to Output

After running mastra build, the deployer generates a .netlify folder. The build output includes all agents, tools, and workflows of your project, alongside a config.json file that configures the Netlify Frameworks API.

Serverless output (default)
Direct link to Serverless output (default)

your-project/
└── .netlify/
└── v1/
├── config.json
└── functions/
└── api/
├── index.mjs
├── package.json
└── node_modules/

The config.json file contains:

{
"functions": {
"directory": ".netlify/v1/functions",
"node_bundler": "none",
"included_files": [".netlify/v1/functions/**"]
},
"redirects": [
{
"force": true,
"from": "/*",
"to": "/.netlify/functions/api/:splat",
"status": 200
}
]
}

Edge output
Direct link to Edge output

your-project/
└── .netlify/
└── v1/
├── config.json
└── edge-functions/
├── index.mjs
├── package.json
└── node_modules/

The config.json file contains:

{
"edge_functions": [
{
"function": "index",
"path": "/*"
}
]
}