UNPKG

@mastra/core

Version:
123 lines (90 loc) 4.54 kB
> Discover all available pages from the documentation index: https://mastra.ai/llms.txt # Deploying > **Note:** The Agent Builder is part of the Mastra Enterprise Edition. Production deployments require a valid EE license. [Contact sales](https://mastra.ai/contact) for more information. Production deployments swap the local primitives in the Quickstart for cloud-backed equivalents. The shape of the `Mastra` and `MastraEditor` config doesn't change, only the providers behind it. ## What a production deployment needs 1. **EE license**: A valid `MASTRA_EE_LICENSE` so the server will start with the Builder enabled. 2. **Hosted storage**: A shared store for agents, skills, runs, and memory. 3. **Shared workspace filesystem**: Survives across instances; `local` is single-node only. 4. **Cloud sandbox**: Runs agent commands safely; `local` is unsafe in shared environments. 5. **Auth and RBAC**: Gates the Builder UI and `/agent-builder/*` routes. 6. **Public base URL for channels**: Slack and other channel providers need a reachable URL. ## EE license Set `MASTRA_EE_LICENSE` in the deployment environment. The server refuses to start when `builder.enabled` is truthy without a valid license. Treat the license key as a secret. ## Storage Replace the file-backed LibSQL store with a hosted backend. LibSQL Cloud, PostgreSQL, and any other Mastra storage adapter all work. ```typescript import { Mastra } from '@mastra/core/mastra' import { LibSQLStore } from '@mastra/libsql' new Mastra({ storage: new LibSQLStore({ url: process.env.DATABASE_URL!, authToken: process.env.DATABASE_AUTH_TOKEN, }), }) ``` ## Workspace filesystem and sandbox `local` filesystem works only on the node that owns the directory. For multi-instance deployments, register cloud filesystem and sandbox providers on `MastraEditor` and reference them by id in the inline workspace config. **npm**: ```bash npm install @mastra/s3 @mastra/e2b ``` **pnpm**: ```bash pnpm add @mastra/s3 @mastra/e2b ``` **Yarn**: ```bash yarn add @mastra/s3 @mastra/e2b ``` **Bun**: ```bash bun add @mastra/s3 @mastra/e2b ``` ```typescript import { Mastra } from '@mastra/core/mastra' import { MastraEditor } from '@mastra/editor' import { s3FilesystemProvider } from '@mastra/s3' import { e2bSandboxProvider } from '@mastra/e2b' new Mastra({ editor: new MastraEditor({ filesystems: { [s3FilesystemProvider.id]: s3FilesystemProvider }, sandboxes: { [e2bSandboxProvider.id]: e2bSandboxProvider }, builder: { enabled: true, configuration: { agent: { workspace: { type: 'inline', config: { name: 'builder-workspace', filesystem: { provider: s3FilesystemProvider.id, config: { bucket: process.env.S3_BUCKET!, region: process.env.S3_REGION!, }, }, sandbox: { provider: e2bSandboxProvider.id, config: { apiKey: process.env.E2B_API_KEY! }, }, }, }, }, }, }, }), }) ``` `S3Filesystem` uses the default AWS credential chain (environment variables, `~/.aws` config, IAM roles, EC2 instance profile). For long-running deployments, use a credential provider function so credentials refresh automatically. `DockerSandbox`, `VercelSandbox`, and `VercelServerlessSandbox` are alternative cloud sandbox providers. Pick whichever matches your runtime. > **Warning:** A local sandbox can't run commands safely in a shared environment. Always register a cloud sandbox provider and reference it in the workspace config before deploying. ## Auth and RBAC A production deployment without authentication exposes the Builder to the public internet. Register a `Mastra.server.auth` provider (for example, WorkOS or your own provider) and a `Mastra.server.rbac` provider to gate access. See [Access control](https://mastra.ai/docs/agent-builder/access-control) for the required role permissions and a WorkOS quickstart. ## Public URL for channels Slack needs to reach your server through a public URL. Pass `baseUrl` to `SlackProvider` with the deployed URL (no trailing slash). See [Channels](https://mastra.ai/docs/agent-builder/channels) for the full setup. ## Related - [Access control](https://mastra.ai/docs/agent-builder/access-control): Auth and RBAC setup. - [Channels](https://mastra.ai/docs/agent-builder/channels): Slack `baseUrl` and channel-specific setup.