@mastra/mcp-docs-server 1.2.6 → 1.2.7-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/.docs/docs/agent-builder/integrations.md +1 -1
  2. package/.docs/docs/agent-builder/overview.md +4 -3
  3. package/.docs/docs/agent-builder/skill-registries.md +1 -3
  4. package/.docs/docs/agent-controller/modes.md +1 -1
  5. package/.docs/docs/agent-controller/overview.md +4 -3
  6. package/.docs/docs/agent-controller/session.md +3 -5
  7. package/.docs/docs/agents/a2a.md +2 -1
  8. package/.docs/docs/agents/agent-approval.md +2 -2
  9. package/.docs/docs/agents/code-mode.md +1 -1
  10. package/.docs/docs/agents/guardrails.md +10 -9
  11. package/.docs/docs/agents/networks.md +1 -1
  12. package/.docs/docs/agents/overview.md +5 -5
  13. package/.docs/docs/agents/skills.md +3 -5
  14. package/.docs/docs/agents/structured-output.md +1 -1
  15. package/.docs/docs/agents/supervisor-agents.md +3 -4
  16. package/.docs/docs/agents/using-tools.md +2 -4
  17. package/.docs/docs/browser/agent-browser.md +1 -3
  18. package/.docs/docs/browser/browser-viewer.md +1 -3
  19. package/.docs/docs/browser/overview.md +2 -1
  20. package/.docs/docs/browser/recording.md +1 -1
  21. package/.docs/docs/browser/stagehand.md +1 -1
  22. package/.docs/docs/capabilities/channels/discord.md +98 -0
  23. package/.docs/docs/capabilities/channels/other-adapters.md +68 -0
  24. package/.docs/docs/capabilities/channels/overview.md +255 -0
  25. package/.docs/docs/capabilities/channels/slack.md +225 -0
  26. package/.docs/docs/capabilities/channels/teams.md +100 -0
  27. package/.docs/docs/capabilities/channels/telegram.md +98 -0
  28. package/.docs/docs/capabilities/channels/whatsapp.md +99 -0
  29. package/.docs/docs/deployment/mastra-server.md +2 -4
  30. package/.docs/docs/editor/overview.md +2 -6
  31. package/.docs/docs/editor/prompts.md +1 -1
  32. package/.docs/docs/editor/tools.md +1 -3
  33. package/.docs/docs/evals/built-in-scorers.md +2 -2
  34. package/.docs/docs/evals/custom-scorers.md +1 -3
  35. package/.docs/docs/evals/datasets/overview.md +4 -5
  36. package/.docs/docs/evals/datasets/running-experiments.md +10 -8
  37. package/.docs/docs/evals/evals-with-memory.md +1 -3
  38. package/.docs/docs/evals/gates-and-verdicts.md +2 -4
  39. package/.docs/docs/evals/overview.md +4 -1
  40. package/.docs/docs/evals/quick-checks.md +3 -5
  41. package/.docs/docs/getting-started/file-based-agents.md +114 -0
  42. package/.docs/docs/getting-started/manual-install.md +17 -4
  43. package/.docs/docs/index.md +1 -1
  44. package/.docs/docs/long-running-agents/background-tasks.md +3 -3
  45. package/.docs/docs/long-running-agents/durable-agents.md +5 -7
  46. package/.docs/docs/long-running-agents/goals.md +5 -7
  47. package/.docs/docs/long-running-agents/schedules.md +1 -1
  48. package/.docs/docs/long-running-agents/signal-providers.md +1 -3
  49. package/.docs/docs/long-running-agents/signals.md +12 -23
  50. package/.docs/docs/mastra-platform/database.md +2 -2
  51. package/.docs/docs/mastra-platform/github.md +1 -1
  52. package/.docs/docs/mastra-platform/observability.md +5 -1
  53. package/.docs/docs/mcp/mcp-apps.md +3 -3
  54. package/.docs/docs/mcp/overview.md +6 -10
  55. package/.docs/docs/memory/memory-processors.md +67 -0
  56. package/.docs/docs/memory/message-history.md +56 -2
  57. package/.docs/docs/memory/observational-memory.md +5 -4
  58. package/.docs/docs/memory/overview.md +8 -6
  59. package/.docs/docs/memory/semantic-recall.md +36 -2
  60. package/.docs/docs/memory/working-memory.md +3 -3
  61. package/.docs/docs/observability/integrations/exporters/mastra-platform.md +1 -3
  62. package/.docs/docs/observability/integrations/exporters/mastra-storage.md +1 -1
  63. package/.docs/docs/observability/logging.md +1 -1
  64. package/.docs/docs/observability/tracing/overview.md +1 -1
  65. package/.docs/docs/rag/vector-databases.md +7 -2
  66. package/.docs/docs/server/auth/auth0.md +1 -1
  67. package/.docs/docs/server/auth/better-auth.md +2 -2
  68. package/.docs/docs/server/auth/clerk.md +1 -1
  69. package/.docs/docs/server/auth/firebase.md +1 -1
  70. package/.docs/docs/server/auth/google.md +3 -3
  71. package/.docs/docs/server/auth/jwt.md +2 -2
  72. package/.docs/docs/server/auth/okta.md +2 -2
  73. package/.docs/docs/server/auth/workos.md +1 -1
  74. package/.docs/docs/server/mastra-client.md +1 -1
  75. package/.docs/docs/server/mastra-server.md +1 -1
  76. package/.docs/docs/server/pubsub.md +1 -1
  77. package/.docs/docs/server/request-context.md +4 -4
  78. package/.docs/docs/server/server-adapters.md +8 -8
  79. package/.docs/docs/storage/overview.md +214 -0
  80. package/.docs/docs/studio/auth.md +1 -3
  81. package/.docs/docs/studio/overview.md +1 -1
  82. package/.docs/docs/voice/livekit.md +101 -4
  83. package/.docs/docs/workflows/agents-and-tools.md +3 -5
  84. package/.docs/docs/workflows/control-flow.md +1 -3
  85. package/.docs/docs/workflows/overview.md +6 -7
  86. package/.docs/docs/workflows/snapshots.md +1 -1
  87. package/.docs/docs/workspace/overview.md +2 -1
  88. package/.docs/docs/workspace/sandbox.md +2 -0
  89. package/.docs/guides/build-your-ui/assistant-ui.md +1 -1
  90. package/.docs/guides/build-your-ui/copilotkit/channels.md +1 -1
  91. package/.docs/guides/build-your-ui/copilotkit/generative-ui.md +2 -2
  92. package/.docs/guides/build-your-ui/copilotkit/overview.md +1 -1
  93. package/.docs/guides/concepts/streaming.md +3 -3
  94. package/.docs/guides/getting-started/quickstart.md +4 -2
  95. package/.docs/guides/guide/chef-michel.md +0 -2
  96. package/.docs/guides/guide/slack-assistant.md +2 -2
  97. package/.docs/guides/guide/stock-agent.md +0 -2
  98. package/.docs/models/embeddings.md +119 -0
  99. package/.docs/models/environment-variables.md +3 -0
  100. package/.docs/models/gateways/netlify.md +4 -1
  101. package/.docs/models/gateways/openrouter.md +12 -6
  102. package/.docs/models/gateways/vercel.md +7 -1
  103. package/.docs/models/index.md +1 -1
  104. package/.docs/models/providers/crossmodel.md +109 -0
  105. package/.docs/models/providers/google.md +2 -1
  106. package/.docs/models/providers/llmgateway.md +184 -181
  107. package/.docs/models/providers/meta.md +101 -0
  108. package/.docs/models/providers/nano-gpt.md +2 -2
  109. package/.docs/models/providers/neon.md +40 -29
  110. package/.docs/models/providers/openai.md +5 -1
  111. package/.docs/models/providers/opencode.md +2 -1
  112. package/.docs/models/providers/poolside.md +6 -5
  113. package/.docs/models/providers/routing-run.md +20 -34
  114. package/.docs/models/providers/the-grid-ai.md +3 -3
  115. package/.docs/models/providers/wandb.md +21 -14
  116. package/.docs/models/providers/xai.md +2 -1
  117. package/.docs/models/providers/zenifra.md +73 -0
  118. package/.docs/models/providers.md +3 -0
  119. package/.docs/reference/agent-controller/agent-controller-class.md +3 -3
  120. package/.docs/reference/agent-controller/session.md +4 -4
  121. package/.docs/reference/agents/agent.md +1 -1
  122. package/.docs/reference/agents/channels.md +2 -2
  123. package/.docs/reference/agents/inngest-agent.md +1 -1
  124. package/.docs/reference/agents/listSkills.md +1 -1
  125. package/.docs/reference/agents/listSuspendedRuns.md +3 -3
  126. package/.docs/reference/auth/google.md +5 -5
  127. package/.docs/reference/channels/channel-provider.md +1 -1
  128. package/.docs/reference/channels/slack-provider.md +3 -3
  129. package/.docs/reference/cli/mastra.md +119 -12
  130. package/.docs/reference/code-sdk/mount-agent-controller.md +76 -0
  131. package/.docs/reference/coding-agent/create-coding-agent.md +1 -1
  132. package/.docs/reference/configuration.md +1 -1
  133. package/.docs/reference/evals/checks.md +4 -4
  134. package/.docs/reference/evals/create-scorer.md +8 -0
  135. package/.docs/reference/file-based-agents/config.md +97 -0
  136. package/.docs/reference/file-based-agents/instructions.md +54 -0
  137. package/.docs/reference/file-based-agents/memory.md +58 -0
  138. package/.docs/reference/file-based-agents/observability.md +32 -0
  139. package/.docs/reference/file-based-agents/processors.md +56 -0
  140. package/.docs/reference/file-based-agents/server.md +37 -0
  141. package/.docs/reference/file-based-agents/skills.md +56 -0
  142. package/.docs/reference/file-based-agents/storage.md +30 -0
  143. package/.docs/reference/file-based-agents/studio.md +56 -0
  144. package/.docs/reference/file-based-agents/subagents.md +123 -0
  145. package/.docs/reference/file-based-agents/tools.md +63 -0
  146. package/.docs/reference/file-based-agents/workflows.md +52 -0
  147. package/.docs/reference/file-based-agents/workspace.md +74 -0
  148. package/.docs/reference/index.md +16 -0
  149. package/.docs/reference/memory/memory-class.md +1 -1
  150. package/.docs/reference/memory/observational-memory.md +1 -1
  151. package/.docs/reference/memory/serialized-memory-config.md +1 -1
  152. package/.docs/reference/memory/summarizeConversation.md +99 -0
  153. package/.docs/reference/memory/summarizeThread.md +93 -0
  154. package/.docs/{docs/getting-started → reference}/project-structure.md +3 -10
  155. package/.docs/reference/pubsub/lease-provider.md +5 -5
  156. package/.docs/reference/server/express-adapter.md +1 -3
  157. package/.docs/reference/server/fastify-adapter.md +1 -3
  158. package/.docs/reference/server/hono-adapter.md +1 -3
  159. package/.docs/reference/server/koa-adapter.md +1 -3
  160. package/.docs/reference/server/nestjs-adapter.md +1 -3
  161. package/.docs/reference/signals/task-signal-provider.md +1 -1
  162. package/.docs/reference/storage/clickhouse.md +34 -2
  163. package/.docs/reference/storage/cloudflare-d1.md +1 -1
  164. package/.docs/reference/storage/composite.md +64 -6
  165. package/.docs/reference/storage/convex.md +1 -1
  166. package/.docs/reference/storage/dynamodb.md +1 -1
  167. package/.docs/reference/storage/mongodb.md +46 -46
  168. package/.docs/reference/storage/retention.md +74 -6
  169. package/.docs/reference/tools/create-tool.md +2 -2
  170. package/.docs/reference/tools/mcp-client.md +22 -0
  171. package/.docs/reference/tools/mcp-server.md +161 -4
  172. package/.docs/reference/vectors/mongodb.md +93 -4
  173. package/.docs/reference/voice/livekit.md +272 -8
  174. package/.docs/reference/workspace/agentcore-runtime-sandbox.md +1 -3
  175. package/.docs/reference/workspace/agentfs-filesystem.md +1 -3
  176. package/.docs/reference/workspace/apple-container-sandbox.md +6 -8
  177. package/.docs/reference/workspace/archil-filesystem.md +1 -3
  178. package/.docs/reference/workspace/azure-blob-filesystem.md +1 -3
  179. package/.docs/reference/workspace/blaxel-sandbox.md +1 -3
  180. package/.docs/reference/workspace/daytona-sandbox.md +1 -3
  181. package/.docs/reference/workspace/docker-sandbox.md +1 -3
  182. package/.docs/reference/workspace/e2b-sandbox.md +1 -3
  183. package/.docs/reference/workspace/files-sdk-filesystem.md +1 -3
  184. package/.docs/reference/workspace/gcs-filesystem.md +1 -3
  185. package/.docs/reference/workspace/google-drive-filesystem.md +1 -3
  186. package/.docs/reference/workspace/local-filesystem.md +1 -3
  187. package/.docs/reference/workspace/local-sandbox.md +1 -3
  188. package/.docs/reference/workspace/mesa-filesystem.md +4 -4
  189. package/.docs/reference/workspace/modal-sandbox.md +1 -3
  190. package/.docs/reference/workspace/railway-sandbox.md +2 -4
  191. package/.docs/reference/workspace/s3-filesystem.md +1 -3
  192. package/.docs/reference/workspace/vercel-sandbox.md +5 -7
  193. package/.docs/reference/workspace/vercel-serverless.md +2 -4
  194. package/CHANGELOG.md +36 -0
  195. package/package.json +5 -5
  196. package/.docs/docs/agents/channels.md +0 -225
  197. package/.docs/docs/agents/file-based-agents.md +0 -297
  198. package/.docs/docs/memory/storage.md +0 -267
@@ -38,7 +38,7 @@ import { MongoDBVector } from '@mastra/mongodb'
38
38
  const store = new MongoDBVector({
39
39
  id: 'mongodb-vector',
40
40
  uri: process.env.MONGODB_URI,
41
- dbName: process.env.MONGODB_DATABASE,
41
+ dbName: process.env.MONGODB_DB_NAME,
42
42
  })
43
43
  ```
44
44
 
@@ -52,7 +52,7 @@ import { MongoDBVector } from '@mastra/mongodb'
52
52
  const store = new MongoDBVector({
53
53
  id: 'mongodb-vector',
54
54
  uri: process.env.MONGODB_URI,
55
- dbName: process.env.MONGODB_DATABASE,
55
+ dbName: process.env.MONGODB_DB_NAME,
56
56
  embeddingFieldPath: 'text.contentEmbedding', // Store embeddings at text.contentEmbedding
57
57
  })
58
58
  ```
@@ -71,6 +71,14 @@ const store = new MongoDBVector({
71
71
 
72
72
  ## Methods
73
73
 
74
+ ### `connect()`
75
+
76
+ Establishes connection to the MongoDB server. This is called automatically on first use, but can be called explicitly if needed.
77
+
78
+ ```typescript
79
+ await store.connect()
80
+ ```
81
+
74
82
  ### `createIndex()`
75
83
 
76
84
  Creates a new vector index (collection) in MongoDB.
@@ -81,6 +89,16 @@ Creates a new vector index (collection) in MongoDB.
81
89
 
82
90
  **metric** (`'cosine' | 'euclidean' | 'dotproduct'`): Distance metric for similarity search (Default: `cosine`)
83
91
 
92
+ ### `waitForIndexReady()`
93
+
94
+ Waits for an index to become ready after creation. Useful when you need to ensure an index is ready before performing operations.
95
+
96
+ **indexName** (`string`): Name of the index to wait for
97
+
98
+ **timeoutMs** (`number`): Maximum time to wait in milliseconds (Default: `60000`)
99
+
100
+ **checkIntervalMs** (`number`): Interval between status checks in milliseconds (Default: `2000`)
101
+
84
102
  ### `upsert()`
85
103
 
86
104
  Adds or updates vectors and their metadata in the collection.
@@ -93,6 +111,8 @@ Adds or updates vectors and their metadata in the collection.
93
111
 
94
112
  **ids** (`string[]`): Optional vector IDs (auto-generated if not provided)
95
113
 
114
+ **documents** (`string[]`): Optional document text content to store alongside vectors
115
+
96
116
  ### `query()`
97
117
 
98
118
  Searches for similar vectors with optional metadata filtering.
@@ -109,6 +129,8 @@ Searches for similar vectors with optional metadata filtering.
109
129
 
110
130
  **includeVector** (`boolean`): Whether to include vector data in results (Default: `false`)
111
131
 
132
+ **numCandidates** (`number`): Number of candidates the HNSW graph considers before selecting top-K results. Higher values improve recall at the cost of latency. See: https\://www\.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/ (Default: `20 * topK (capped at 10000)`)
133
+
112
134
  ### `describeIndex()`
113
135
 
114
136
  Returns information about the index (collection).
@@ -224,7 +246,7 @@ try {
224
246
 
225
247
  Embeddings are numeric vectors used by memory's `semanticRecall` to retrieve related messages by meaning (not keywords).
226
248
 
227
- > **Note:** You must use a deployment hosted on MongoDB Atlas to successfully use the MongoDB Vector database.
249
+ > **Note:** MongoDB Atlas Vector Search is recommended for production use. For self-hosted deployments, Vector Search is available with [local Atlas deployments via the Atlas CLI](https://www.mongodb.com/docs/atlas/cli/current/atlas-cli-deploy-local/).
228
250
 
229
251
  This setup uses FastEmbed, a local embedding model, to generate vector embeddings. To use this, install `@mastra/fastembed`:
230
252
 
@@ -290,6 +312,73 @@ export const mongodbAgent = new Agent({
290
312
  })
291
313
  ```
292
314
 
315
+ ### Vector embeddings with VoyageAI
316
+
317
+ VoyageAI provides specialized embedding models optimized for retrieval tasks. VoyageAI is also integrated with MongoDB Atlas for multimodal embeddings.
318
+
319
+ **npm**:
320
+
321
+ ```bash
322
+ npm install @mastra/voyageai@latest
323
+ ```
324
+
325
+ **pnpm**:
326
+
327
+ ```bash
328
+ pnpm add @mastra/voyageai@latest
329
+ ```
330
+
331
+ **Yarn**:
332
+
333
+ ```bash
334
+ yarn add @mastra/voyageai@latest
335
+ ```
336
+
337
+ **Bun**:
338
+
339
+ ```bash
340
+ bun add @mastra/voyageai@latest
341
+ ```
342
+
343
+ Basic usage example:
344
+
345
+ ```typescript
346
+ import { Memory } from '@mastra/memory'
347
+ import { Agent } from '@mastra/core/agent'
348
+ import { MongoDBStore, MongoDBVector } from '@mastra/mongodb'
349
+ import { voyage } from '@mastra/voyageai'
350
+
351
+ export const mongodbVoyageAgent = new Agent({
352
+ id: 'mongodb-voyage-agent',
353
+ name: 'MongoDB VoyageAI Agent',
354
+ instructions: 'You are an AI agent with semantic recall powered by VoyageAI and MongoDB.',
355
+ model: 'openai/gpt-5.5',
356
+ memory: new Memory({
357
+ storage: new MongoDBStore({
358
+ id: 'mongodb-storage',
359
+ uri: process.env.MONGODB_URI!,
360
+ dbName: process.env.MONGODB_DB_NAME!,
361
+ }),
362
+ vector: new MongoDBVector({
363
+ id: 'mongodb-vector',
364
+ uri: process.env.MONGODB_URI!,
365
+ dbName: process.env.MONGODB_DB_NAME!,
366
+ }),
367
+ embedder: voyage, // VoyageAI's default model (voyage-3.5, 1024 dimensions)
368
+ options: {
369
+ lastMessages: 10,
370
+ semanticRecall: {
371
+ topK: 5,
372
+ messageRange: 2,
373
+ },
374
+ },
375
+ }),
376
+ })
377
+ ```
378
+
379
+ For comprehensive VoyageAI embedding examples including specialized models, multimodal embeddings, and retrieval optimization, see the [VoyageAI embeddings documentation](https://mastra.ai/models/embeddings).
380
+
293
381
  ## Related
294
382
 
295
- - [Metadata Filters](https://mastra.ai/reference/rag/metadata-filters)
383
+ - [Metadata Filters](https://mastra.ai/reference/rag/metadata-filters)
384
+ - [VoyageAI Embeddings Documentation](https://mastra.ai/models/embeddings)
@@ -6,10 +6,11 @@ The `@mastra/livekit` package connects Mastra agents to the LiveKit Agents frame
6
6
 
7
7
  See [Using LiveKit with Mastra](https://mastra.ai/docs/voice/livekit) for setup and concepts.
8
8
 
9
- The package has two entry points, one per process:
9
+ The package has three entry points:
10
10
 
11
- - `@mastra/livekit`: server-side APIs — [`liveKitConnectionRoute()`](#livekitconnectionroute), [`dispatchVoiceSession()`](#dispatchvoicesession), [`pipeAgentReplyToWriter()`](#pipeagentreplytowriter), and [`serializeSessionMetadata()`](#livekitsessionmetadata). Import these from Mastra server code. This entry never loads the LiveKit agents runtime.
12
- - `@mastra/livekit/worker`: the worker runtime — [`createLiveKitWorker()`](#createlivekitworker), [`runLiveKitWorker()`](#runlivekitworker), and [`chatContextToMessages()`](#chatcontexttomessages). Import it only from the worker entry file.
11
+ - `@mastra/livekit`: server-side APIs — [`liveKitConnectionRoute()`](#livekitconnectionroute), [`dispatchVoiceSession()`](#dispatchvoicesession), [`pipeAgentReplyToWriter()`](#pipeagentreplytowriter), [`serializeSessionMetadata()`](#livekitsessionmetadata), and [`createEndCallTool()`](#createendcalltool). Import these from Mastra server code. This entry never loads the LiveKit agents runtime.
12
+ - `@mastra/livekit/worker`: the worker runtime — [`createLiveKitWorker()`](#createlivekitworker), [`runLiveKitWorker()`](#runlivekitworker), [`chatContextToMessages()`](#chatcontexttomessages), and the session helpers [`speakGreeting()`](#speakgreeting), [`waitForAgentDoneSpeaking()`](#waitforagentdonespeaking), and [`runEndCall()`](#runendcall). Import it only from the worker entry file.
13
+ - `@mastra/livekit/plugin`: the LLM-component plugin — [`MastraLLM`](#mastrallm) and [`createRemoteAgentReplyGenerator()`](#createremoteagentreplygenerator). Import it in workers that build their own `voice.AgentSession`. `createRemoteAgentReplyGenerator()` is also exported from `@mastra/livekit/worker` because it plugs into `createLiveKitWorker()`'s `generate` option; `MastraLLM` is plugin-only.
13
14
 
14
15
  ## `createLiveKitWorker()`
15
16
 
@@ -49,9 +50,9 @@ if (process.argv[1] === fileURLToPath(import.meta.url)) {
49
50
 
50
51
  **generate** (`VoiceReplyGenerator`): Lowest-level escape hatch: supply any reply generator directly (a custom workflow, remote bridge, and so on).
51
52
 
52
- **stt** (`STT | string`): Speech-to-text: a LiveKit plugin instance or an inference model string such as 'deepgram/nova-3'.
53
+ **stt** (`STT | string`): Speech-to-text: a LiveKit plugin instance or an inference model string such as 'deepgram/nova-3'. For per-call selection, set the configuration.stt resolver — it takes precedence, with this option as the fallback.
53
54
 
54
- **tts** (`TTS | string`): Text-to-speech: a LiveKit plugin instance or an inference model string such as 'cartesia/sonic-3'.
55
+ **tts** (`TTS | string`): Text-to-speech: a LiveKit plugin instance or an inference model string such as 'cartesia/sonic-3'. For per-call selection, set the configuration.tts resolver — it takes precedence, with this option as the fallback.
55
56
 
56
57
  **vad** (`VAD | 'silero' | false`): Voice activity detection. 'silero' loads the Silero VAD from @livekit/agents-plugin-silero during prewarm. Pass an instance to bring your own, or false to disable. (Default: `'silero'`)
57
58
 
@@ -65,9 +66,23 @@ if (process.argv[1] === fileURLToPath(import.meta.url)) {
65
66
 
66
67
  **toolFeedback** (`(toolCall) => string | undefined`): Called when the Mastra agent starts a tool call mid-reply. Return a short phrase to speak while the tool runs.
67
68
 
68
- **greeting** (`string`): Static greeting spoken when the session starts.
69
+ **onTurnComplete** (`(ctx: VoiceTurnCompleteContext) => void | Promise<void>`): Called once per turn after the reply finished streaming to text-to-speech. Runs off the audio path and is not awaited. The context carries the produced reply (text, toolCalls, interrupted, usage) and the resolved memory mapping.
69
70
 
70
- **persistGreeting** (`boolean`): Save the spoken greeting to the memory thread as an assistant message, making the saved thread a faithful call transcript. Only applies when a greeting is set and memory is enabled. (Default: `true`)
71
+ **configuration** (`LiveKitWorkerConfiguration`): Grouped conversation and compliance configuration: the opening greeting and AI disclosure, consent requirements, agent-initiated hang-up, and per-call STT/TTS selection.
72
+
73
+ **configuration.greeting** (`GreetingConfiguration`): The opening greeting and AI disclosure: text (a fixed string or a per-call resolver for per-tenant greetings), allowInterruptions, awaitPlayout, persist, and periodic re-disclosure via repeatEvery and repeatText.
74
+
75
+ **configuration.consentPolicy** (`ConsentConfiguration`): The call's consent policy, as named requirements (starting with summaryStorage). Declarative only — the worker blocks nothing by itself. Capture grants at runtime with createConsentTool and enforce them in your own code; the declared policy surfaces on onCallEnd for cross-checking.
76
+
77
+ **configuration.endCall** (`EndCallConfiguration`): Agent-initiated hang-up: the worker watches each turn for the end-call tool (pair with createEndCallTool), waits for the agent's closing words to play out, then disconnects — running onCallEnd on the way out.
78
+
79
+ **configuration.stt** (`(context: VoiceCallContext) => STT | string | undefined`): Per-call speech-to-text: a resolver invoked once per call (post-connect) with { metadata, requestContext, roomName, ctx }, returning anything the top-level stt option accepts. Return undefined to fall back to the top-level stt. Cache plugin instances across calls — the resolver runs during call setup.
80
+
81
+ **configuration.tts** (`(context: VoiceCallContext) => TTS | string | undefined`): Per-call text-to-speech: a resolver invoked once per call (post-connect) with { metadata, requestContext, roomName, ctx }, returning anything the top-level tts option accepts — one voice or language per tenant. Return undefined to fall back to the top-level tts. Cache plugin instances across calls.
82
+
83
+ **greeting** (`string`): Static greeting spoken when the session starts. Deprecated: prefer configuration.greeting.text.
84
+
85
+ **persistGreeting** (`boolean`): Save the spoken greeting to the memory thread as an assistant message, making the saved thread a faithful call transcript. Only applies when a greeting is set and memory is enabled. Deprecated: prefer configuration.greeting.persist. (Default: `true`)
71
86
 
72
87
  **observability** (`boolean`): Trace each call when the Mastra instance has observability configured. Opens a voice call span per session: every turn's agent run nests under it, LiveKit's STT, TTS, end-of-utterance, VAD, and LLM latency metrics become child spans, and the span closes with a per-model usage roll-up. Pass false to disable. (Default: `true`)
73
88
 
@@ -129,7 +144,256 @@ export default createLiveKitWorker({
129
144
  })
130
145
  ```
131
146
 
132
- Returns: `VoiceTurnMessage[]`, where each entry is `{ role: 'system' | 'user' | 'assistant'; content: string }`.
147
+ Returns: `VoiceTurnMessage[]`, where each entry is `{ role: 'system' | 'user' | 'assistant'; content: string; id?: string }`.
148
+
149
+ ## `MastraLLM`
150
+
151
+ A standard LiveKit LLM plugin (`llm.LLM`) backed by a Mastra agent. Use it when you build the `voice.AgentSession` yourself and want Mastra in the `llm` slot; [`createLiveKitWorker()`](#createlivekitworker) is the managed alternative. See [Use Mastra as the LLM component](https://mastra.ai/docs/voice/livekit) for how to choose.
152
+
153
+ With `remote`, the plugin streams each turn from your Mastra server over HTTP using Server-Sent Events (SSE). The agent loop, tools, and memory run server-side, and interrupting the agent aborts the server-side generation.
154
+
155
+ ```typescript
156
+ import { voice } from '@livekit/agents'
157
+ import { MastraLLM } from '@mastra/livekit/plugin'
158
+
159
+ const session = new voice.AgentSession({
160
+ llm: new MastraLLM({
161
+ remote: { baseUrl: process.env.MASTRA_URL!, agentId: 'support' },
162
+ memory: { thread: callId, resource: userId },
163
+ }),
164
+ stt: 'deepgram/nova-3',
165
+ tts: 'cartesia/sonic-3',
166
+ // Required with `memory`: LiveKit enables preemptive generation by default.
167
+ turnHandling: { preemptiveGeneration: { enabled: false } },
168
+ })
169
+ ```
170
+
171
+ The plugin reports `provider` as `mastra` and `model` as the agent id, so LiveKit metrics and fallback adapters identify it like any other LLM.
172
+
173
+ ### Constructor options
174
+
175
+ Provide exactly one reply source: `remote`, `agent`, or `generate`.
176
+
177
+ **remote** (`RemoteMastraAgentOptions`): Remote Mastra server reached over HTTP. Takes the same connection options as createRemoteAgentReplyGenerator(): baseUrl, agentId, apiPrefix, headers, fetch, timeoutMs, retries, body.
178
+
179
+ **agent** (`Agent`): In-process Mastra agent. Session ownership without a second deployment.
180
+
181
+ **generate** (`VoiceReplyGenerator`): Custom reply source. A generate source owns its own hooks; toolFeedback, onToolCall, and onTurnComplete below only apply to the remote and agent sources.
182
+
183
+ **memory** (`{ thread: string; resource?: string } | false`): Conversation persistence, resolved per call (for example from the SIP caller identity). When set, only messages new since the agent last spoke are sent each turn and Mastra Memory supplies history. When omitted, the full LiveKit chat context is sent every turn. (Default: `false`)
184
+
185
+ **requestContext** (`RequestContext | Record<string, unknown>`): Request context forwarded to generation (tenant, dialed number, and so on).
186
+
187
+ **toolFeedback** (`(toolCall: VoiceToolCall) => string | undefined`): Return a short phrase to speak while a server-side tool runs.
188
+
189
+ **onToolCall** (`(toolCall: VoiceToolCall) => void`): Called as each tool call starts, mid-stream. Pair with runEndCall() to implement your own agent-initiated hang-up flow.
190
+
191
+ **onTurnComplete** (`(ctx: VoiceTurnCompleteContext) => void | Promise<void>`): Called once per turn after the reply finished streaming, off the audio path and not awaited. The context carries the produced reply: text, toolCalls, interrupted, and usage.
192
+
193
+ > **Warning:** Don't combine `memory` with the session's `preemptiveGeneration` option, which LiveKit enables by default in sessions you build yourself. A speculative turn that completes before LiveKit discards it persists a user message and a never-spoken reply to the thread. Set `turnHandling: { preemptiveGeneration: { enabled: false } }` on the session. Stateless mode (no `memory`) works with preemptive generation.
194
+
195
+ ### Tools run on the Mastra agent
196
+
197
+ Tools are defined and executed server-side on the Mastra agent. The plugin never forwards LiveKit tool definitions: if the session passes a non-empty `toolCtx`, it logs a one-time warning naming the ignored tools. Every tool must complete server-side — a tool that requires approval or client-side execution fails the turn with a descriptive error instead of hanging the call.
198
+
199
+ Tool activity reaches the worker through `toolFeedback`, `onToolCall`, and `onTurnComplete`.
200
+
201
+ ### Instructions
202
+
203
+ LiveKit injects your `voice.Agent`'s `instructions` into the chat context of every request. The plugin drops them: the server-side Mastra agent's own instructions are authoritative. To change the prompt, change the Mastra agent.
204
+
205
+ ### Interrupted turns
206
+
207
+ When the user interrupts a reply:
208
+
209
+ 1. The plugin cancels the stream. The server aborts generation and persists nothing from that turn.
210
+ 2. LiveKit records the part the user actually heard in its chat context, flagged as interrupted.
211
+ 3. On the next turn, the plugin re-sends that heard-only fragment, ordered before the new user message, so the memory thread backfills to match the call. Messages carry LiveKit's message ids and the server deduplicates by id, so retries and re-sends stay idempotent.
212
+
213
+ A user who hangs up immediately after interrupting leaves that final fragment unrecorded. When the transcript must capture it, reconcile immediately from the session event; the shared message id means the next turn's re-send upserts instead of duplicating:
214
+
215
+ ```typescript
216
+ import { voice } from '@livekit/agents'
217
+ import { MastraClient } from '@mastra/client-js'
218
+
219
+ const client = new MastraClient({ baseUrl: process.env.MASTRA_URL! })
220
+
221
+ session.on(voice.AgentSessionEventTypes.ConversationItemAdded, ({ item }) => {
222
+ if (item.type !== 'message' || item.role !== 'assistant' || !item.interrupted) return
223
+ void client.saveMessageToMemory({
224
+ agentId: 'support',
225
+ messages: [
226
+ {
227
+ id: item.id,
228
+ threadId: callId,
229
+ resourceId: userId,
230
+ role: 'assistant',
231
+ content: item.textContent ?? '',
232
+ type: 'text',
233
+ createdAt: new Date(),
234
+ },
235
+ ],
236
+ })
237
+ })
238
+ ```
239
+
240
+ ### Usage metrics
241
+
242
+ When the server reports token usage for a turn, the plugin feeds it to LiveKit, so the session's `metrics_collected` events carry time-to-first-token, duration, and token counts like any LLM plugin. The same usage object (`promptTokens`, `completionTokens`, `promptCachedTokens`, `totalTokens`) arrives on `onTurnComplete` as `result.usage`.
243
+
244
+ ### Errors and timeouts
245
+
246
+ The transport throws LiveKit's `APIError` types (`APIStatusError`, `APIConnectionError`, `APITimeoutError`), so the session's retry policy (`connOptions.maxRetry`) and `FallbackAdapter` failover work unchanged. A turn is never retried after its first token — a voice reply is better failed fast than replayed half-heard.
247
+
248
+ A connect and first-token watchdog uses the session's `connOptions.timeoutMs` (10 seconds by default), so a server that accepts the connection but never streams can't cause indefinite dead air.
249
+
250
+ If the Mastra server goes down mid-call, each reply attempt fails with a typed error after its retries, and LiveKit closes the session after several consecutive failed replies. Restore the server before that budget runs out and the call recovers on the next turn.
251
+
252
+ ### Message content
253
+
254
+ Message extraction is text-only: image content is dropped, and audio content is included only through its transcript. Voice pipelines aren't affected, but items you inject into the chat context yourself must carry text.
255
+
256
+ ## `createRemoteAgentReplyGenerator()`
257
+
258
+ Builds a reply generator that runs the agent loop on a **remote** Mastra server over HTTP/SSE. `MastraLLM`'s `remote` mode uses it internally. Use it directly through `createLiveKitWorker`'s `generate` option to run the batteries-included worker against a remote server:
259
+
260
+ ```typescript
261
+ import { createLiveKitWorker, createRemoteAgentReplyGenerator } from '@mastra/livekit/worker'
262
+ import { mastra } from './index'
263
+
264
+ export default createLiveKitWorker({
265
+ mastra, // local instance for logger and worker config; replies come from the remote server
266
+ generate: createRemoteAgentReplyGenerator({
267
+ baseUrl: process.env.MASTRA_URL!,
268
+ agentId: 'support',
269
+ }),
270
+ memory: ({ metadata, roomName }) => ({ thread: metadata.threadId ?? roomName }),
271
+ stt: 'deepgram/nova-3',
272
+ tts: 'cartesia/sonic-3',
273
+ })
274
+ ```
275
+
276
+ On the `generate` path the worker-level `toolFeedback` and `onTurnComplete` options don't apply, and the worker's end-call detection doesn't fire; pass the hooks to the generator instead.
277
+
278
+ Cancelling a turn (barge-in) tears down the HTTP request, which aborts generation on the server. Errors are thrown as LiveKit `APIError` types; `retries` applies to the initial connection only — a turn is never retried after its first chunk.
279
+
280
+ Returns: `VoiceReplyGenerator`.
281
+
282
+ ### Options
283
+
284
+ **baseUrl** (`string`): Base URL of the remote Mastra server, for example https\://my-app.example.com.
285
+
286
+ **agentId** (`string`): The agent's registered key or id on the remote Mastra instance.
287
+
288
+ **apiPrefix** (`string`): Path prefix for the Mastra API. (Default: `'/api'`)
289
+
290
+ **headers** (`Record<string, string> | () => Record<string, string> | Promise<Record<string, string>>`): Static headers, or a resolver invoked per turn — for example to mint a fresh authorization token.
291
+
292
+ **fetch** (`typeof fetch`): Injectable fetch implementation for tests or proxies. (Default: `globalThis.fetch`)
293
+
294
+ **timeoutMs** (`number`): Connect and first-token timeout in milliseconds. When used through MastraLLM, defaults to the session's connOptions.timeoutMs instead. (Default: `10000`)
295
+
296
+ **retries** (`number`): Initial-connection retry attempts, before the first chunk only. When used through MastraLLM, the LiveKit session owns retries and this is forced to 0. (Default: `2`)
297
+
298
+ **body** (`Record<string, unknown>`): Extra fields merged into each stream request body.
299
+
300
+ **toolFeedback** (`(toolCall: VoiceToolCall) => string | undefined`): Return a short phrase to speak while a server-side tool runs.
301
+
302
+ **onToolCall** (`(toolCall: VoiceToolCall) => void`): Called as each tool call starts, mid-stream.
303
+
304
+ **onTurnComplete** (`(ctx: VoiceTurnCompleteContext) => void | Promise<void>`): Called once per turn after the reply finished streaming, off the audio path.
305
+
306
+ ## `speakGreeting()`
307
+
308
+ Speaks an opening greeting on a session you own, honoring interruption and playout options. Returns the LiveKit `SpeechHandle`, or `undefined` when there's no greeting text. `createLiveKitWorker()` uses it internally for its `greeting` configuration.
309
+
310
+ ```typescript
311
+ import { speakGreeting } from '@mastra/livekit/worker'
312
+
313
+ await speakGreeting(session, {
314
+ text: "You've reached support. You're speaking with an AI assistant.",
315
+ allowInterruptions: false,
316
+ awaitPlayout: true,
317
+ })
318
+ ```
319
+
320
+ ### Parameters
321
+
322
+ **session** (`voice.AgentSession`): The session to speak on.
323
+
324
+ **greeting** (`{ text?: string; allowInterruptions?: boolean; awaitPlayout?: boolean }`): The greeting text and playout options. When awaitPlayout is true, the returned promise resolves after the greeting finished playing (or was interrupted).
325
+
326
+ ## `waitForAgentDoneSpeaking()`
327
+
328
+ Resolves once the agent is no longer producing or playing a reply — its state has left `thinking` and `speaking`. Resolves immediately when the agent is already idle, and always resolves within `maxWaitMs` (30 seconds by default) as a safety cap. Use it before tearing a session down so closing words play out instead of being cut off.
329
+
330
+ ```typescript
331
+ import { waitForAgentDoneSpeaking } from '@mastra/livekit/worker'
332
+
333
+ await waitForAgentDoneSpeaking(session)
334
+ ```
335
+
336
+ ## `runEndCall()`
337
+
338
+ Ends the call after the agent asked to: waits for the agent's closing words to finish, speaks an optional final `message` non-interruptibly, then deletes the room (hanging up the caller, SIP included) and shuts the job down, which runs registered shutdown callbacks.
339
+
340
+ Pair it with [`MastraLLM`](#mastrallm)'s `onToolCall` and an [end-call tool](#createendcalltool) on the server-side agent to rebuild agent-initiated hang-up on a session you own:
341
+
342
+ ```typescript
343
+ import { MastraLLM } from '@mastra/livekit/plugin'
344
+ import { DEFAULT_END_CALL_TOOL, runEndCall } from '@mastra/livekit/worker'
345
+
346
+ let ending = false
347
+
348
+ const llm = new MastraLLM({
349
+ remote: { baseUrl: process.env.MASTRA_URL!, agentId: 'support' },
350
+ onToolCall: ({ toolName }) => {
351
+ if (toolName !== DEFAULT_END_CALL_TOOL || ending) return
352
+ ending = true
353
+ void runEndCall(session, ctx, {}, console)
354
+ },
355
+ })
356
+ ```
357
+
358
+ The exported constants `DEFAULT_END_CALL_TOOL` (`'endCall'`), `DEFAULT_END_CALL_REASON`, and `DEFAULT_END_CALL_MAX_WAIT_MS` (30000) hold the defaults.
359
+
360
+ ### Parameters
361
+
362
+ **session** (`voice.AgentSession`): The session whose agent is finishing its closing words.
363
+
364
+ **ctx** (`JobContext`): The LiveKit job context used to delete the room and shut down.
365
+
366
+ **config** (`{ message?: string; reason?: string; maxWaitMs?: number; drainMs?: number }`): Optional final message spoken before hang-up, the shutdown reason to record, the safety cap on waiting for closing words, and the post-playout drain (default 800ms) that lets audio buffered at the caller finish playing before the room is deleted — LiveKit's playout accounting is worker-local, so hanging up the instant it clears clips the goodbye.
367
+
368
+ **logger** (`{ warn: (message: string, ...args: unknown[]) => void }`): Receives warnings when teardown steps fail. Pass your logger or console.
369
+
370
+ ## `createEndCallTool()`
371
+
372
+ Builds the Mastra tool an agent calls to end the call itself: say goodbye, then hang up. The tool only signals intent (and runs optional bookkeeping) — the worker owns the actual hang-up. It lives on the server-safe root entry, so add it to agents defined in server code.
373
+
374
+ ```typescript
375
+ import { Agent } from '@mastra/core/agent'
376
+ import { createEndCallTool } from '@mastra/livekit'
377
+
378
+ const supportAgent = new Agent({
379
+ id: 'support',
380
+ name: 'Support',
381
+ instructions:
382
+ 'Help the caller. When everything is wrapped up, say goodbye and call endCall as your final action.',
383
+ model: 'openai/gpt-5-mini',
384
+ tools: { endCall: createEndCallTool() },
385
+ })
386
+ ```
387
+
388
+ With `createLiveKitWorker()`, set `configuration: { endCall: {} }` and the worker watches for the tool and hangs up. On a session you own, rebuild the hang-up with [`runEndCall()`](#runendcall).
389
+
390
+ ### Options
391
+
392
+ **id** (`string`): Tool id the agent calls to end the call. Must match the name the worker watches for (the worker's configuration.endCall.tool, or your own onToolCall check). (Default: `'endCall'`)
393
+
394
+ **description** (`string`): Override the description the model sees when deciding to call the tool.
395
+
396
+ **onEndCall** (`(request: { reason?: string; resourceId?: string; threadId?: string }) => void | Promise<void>`): Bookkeeping hook called when the agent invokes the tool — record the reason or mark the call resolved. Runs inside the turn; keep it quick. It does not hang up the call.
133
397
 
134
398
  ## `liveKitConnectionRoute()`
135
399
 
@@ -4,9 +4,7 @@
4
4
 
5
5
  Executes shell commands in an [AWS Bedrock AgentCore Runtime](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-execute-command.html) session by using `InvokeAgentRuntimeCommand`.
6
6
 
7
- Use `AgentCoreRuntimeSandbox` when your agent already runs in AgentCore Runtime and you want Mastra workspace command execution to use the same runtime session.
8
-
9
- > **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
7
+ Use `AgentCoreRuntimeSandbox` when your agent already runs in AgentCore Runtime and you want Mastra workspace command execution to use the same runtime session. For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
10
8
 
11
9
  > **Warning:** `AgentCoreRuntimeSandbox` only supports one-shot command execution. It doesn't support background process management, stdin, or filesystem mounts. AgentCore Code Interpreter is a separate AWS service and isn't part of this provider.
12
10
 
@@ -2,9 +2,7 @@
2
2
 
3
3
  # AgentFSFilesystem
4
4
 
5
- Stores files in a Turso/SQLite database via the [AgentFS](https://github.com/nichochar/agentfs) SDK. Files are persisted across sessions in a local SQLite database, giving agents durable storage without external cloud services.
6
-
7
- > **Info:** For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
5
+ Stores files in a Turso/SQLite database via the [AgentFS](https://github.com/nichochar/agentfs) SDK. Files are persisted across sessions in a local SQLite database, giving agents durable storage without external cloud services. For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
8
6
 
9
7
  ## Installation
10
8
 
@@ -2,9 +2,7 @@
2
2
 
3
3
  # AppleContainerSandbox
4
4
 
5
- Executes commands inside local OCI Linux containers through Apple's [`container`](https://github.com/apple/container) CLI. The provider starts a long-lived container and uses `container exec` for workspace commands.
6
-
7
- > **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
5
+ Executes commands inside local OCI Linux containers through Apple's [`container`](https://github.com/apple/container) CLI. The provider starts a long-lived container and uses `container exec` for workspace commands. For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
8
6
 
9
7
  ## Installation
10
8
 
@@ -198,7 +196,7 @@ const sandbox = new AppleContainerSandbox({
198
196
  })
199
197
  ```
200
198
 
201
- These options are only applied when a new container is created. If the sandbox reconnects to an existing container with the same name, destroy and recreate the sandbox to apply changed runtime options. Apple `--tmpfs` accepts container paths only, such as `/tmp`; it does not accept Docker-style option specs like `/tmp:rw,size=256m`. When `readonlyRootfs` is enabled, make sure `workingDir` points to a path supplied by the image, a bind mount, or a writable tmpfs.
199
+ These options are only applied when a new container is created. If the sandbox reconnects to an existing container with the same name, destroy and recreate the sandbox to apply changed runtime options. Apple `--tmpfs` accepts container paths only, such as `/tmp`; it doesn't accept Docker-style option specs like `/tmp:rw,size=256m`. When `readonlyRootfs` is enabled, make sure `workingDir` points to a path supplied by the image, a bind mount, or a writable tmpfs.
202
200
 
203
201
  ## Security model
204
202
 
@@ -208,15 +206,15 @@ These options are only applied when a new container is created. If the sandbox r
208
206
  - `publishedPorts` can expose in-container services on the host or network; bind to `127.0.0.1` when only local access is intended.
209
207
  - `ssh` forwards the host SSH agent socket.
210
208
  - `capAdd` and `virtualization` can expand what containerized code can do.
211
- - `containerBinary` is a constructor-only escape hatch for trusted code and is not part of the serializable editor provider schema.
209
+ - `containerBinary` is a constructor-only escape hatch for trusted code and isn't part of the serializable editor provider schema.
212
210
 
213
211
  Use the narrowest mounts and capabilities your workload needs. Existing containers are only reconnected when they carry Mastra ownership labels for the sandbox ID. Containers created by this provider also include a config-hash label; when that label is present, reconnect fails if immutable runtime options such as image, command, mounts, ports, capabilities, or working directory changed.
214
212
 
215
213
  ## Limitations
216
214
 
217
- `AppleContainerSandbox` implements foreground workspace command execution with `executeCommand()`. It does not yet expose a `SandboxProcessManager` for background processes or LSP sessions.
215
+ `AppleContainerSandbox` implements foreground workspace command execution with `executeCommand()`. It doesn't yet expose a `SandboxProcessManager` for background processes or LSP sessions.
218
216
 
219
- Command timeouts are enforced inside the container so timed-out commands are cleaned up by the container runtime. Abort signals cancel the host CLI wait path and should not be used as a substitute for command timeouts when in-container cleanup matters.
217
+ Command timeouts are enforced inside the container so timed-out commands are cleaned up by the container runtime. Abort signals cancel the host CLI wait path and shouldn't be used as a substitute for command timeouts when in-container cleanup matters.
220
218
 
221
219
  ## Reconnection
222
220
 
@@ -226,7 +224,7 @@ Command timeouts are enforced inside the container so timed-out commands are cle
226
224
  - A stopped container is restarted.
227
225
  - A missing container is created from the configured image.
228
226
  - A container with the configured name but without matching Mastra ownership labels fails instead of being managed.
229
- - A Mastra-owned container with a config-hash label that does not match immutable runtime options fails instead of being reused.
227
+ - A Mastra-owned container with a config-hash label that doesn't match immutable runtime options fails instead of being reused.
230
228
 
231
229
  ```typescript
232
230
  const sandbox = new AppleContainerSandbox({ id: 'persistent-sandbox' })
@@ -2,9 +2,7 @@
2
2
 
3
3
  # ArchilFilesystem
4
4
 
5
- Stores files on [Archil](https://docs.archil.com) elastic, serverless disks. Combines an S3-compatible object API for fast reads/writes with `exec()` for POSIX shell operations and `grep()` for parallel server-side search.
6
-
7
- > **Info:** For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
5
+ Stores files on [Archil](https://docs.archil.com) elastic, serverless disks. Combines an S3-compatible object API for fast reads/writes with `exec()` for POSIX shell operations and `grep()` for parallel server-side search. For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
8
6
 
9
7
  ## Installation
10
8
 
@@ -2,9 +2,7 @@
2
2
 
3
3
  # AzureBlobFilesystem
4
4
 
5
- Stores files in Azure Blob Storage containers.
6
-
7
- > **Info:** For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
5
+ Stores files in Azure Blob Storage containers. For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
8
6
 
9
7
  ## Installation
10
8
 
@@ -2,9 +2,7 @@
2
2
 
3
3
  # BlaxelSandbox
4
4
 
5
- Executes commands in isolated [Blaxel](https://blaxel.ai/) cloud sandboxes. Provides secure, isolated code execution environments with support for mounting cloud storage (S3, GCS) via FUSE.
6
-
7
- > **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
5
+ Executes commands in isolated [Blaxel](https://blaxel.ai/) cloud sandboxes. Provides secure, isolated code execution environments with support for mounting cloud storage (S3, GCS) via FUSE. For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
8
6
 
9
7
  ## Installation
10
8
 
@@ -2,9 +2,7 @@
2
2
 
3
3
  # DaytonaSandbox
4
4
 
5
- Executes commands in isolated [Daytona](https://www.daytona.io) cloud sandboxes. Supports multiple runtimes, resource configuration, volumes, snapshots, streaming output, sandbox reconnection, filesystem mounting (S3, GCS), and network isolation.
6
-
7
- > **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
5
+ Executes commands in isolated [Daytona](https://www.daytona.io) cloud sandboxes. Supports multiple runtimes, resource configuration, volumes, snapshots, streaming output, sandbox reconnection, filesystem mounting (S3, GCS), and network isolation. For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
8
6
 
9
7
  ## Installation
10
8
 
@@ -2,9 +2,7 @@
2
2
 
3
3
  # DockerSandbox
4
4
 
5
- Executes commands inside Docker containers on the local machine. Uses long-lived containers with `docker exec` for command execution. Targets local development, CI/CD, air-gapped deployments, and cost-sensitive scenarios where cloud sandboxes are unnecessary.
6
-
7
- > **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
5
+ Executes commands inside Docker containers on the local machine. Uses long-lived containers with `docker exec` for command execution. Targets local development, CI/CD, air-gapped deployments, and cost-sensitive scenarios where cloud sandboxes are unnecessary. For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
8
6
 
9
7
  ## Installation
10
8
 
@@ -2,9 +2,7 @@
2
2
 
3
3
  # E2BSandbox
4
4
 
5
- Executes commands in isolated [E2B](https://e2b.dev) cloud sandboxes. Provides secure, ephemeral environments with support for mounting cloud storage.
6
-
7
- > **Info:** For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
5
+ Executes commands in isolated [E2B](https://e2b.dev) cloud sandboxes. Provides secure, ephemeral environments with support for mounting cloud storage. For interface details, see [WorkspaceSandbox interface](https://mastra.ai/reference/workspace/sandbox).
8
6
 
9
7
  ## Installation
10
8
 
@@ -2,9 +2,7 @@
2
2
 
3
3
  # FilesSDKFilesystem
4
4
 
5
- Stores files in any storage backend supported by [FilesSDK](https://files-sdk.dev) — a unified abstraction over S3, Cloudflare R2, Google Cloud Storage, Azure Blob, Vercel Blob, MinIO, the local filesystem, and more.
6
-
7
- > **Info:** For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
5
+ Stores files in any storage backend supported by [FilesSDK](https://files-sdk.dev) — a unified abstraction over S3, Cloudflare R2, Google Cloud Storage, Azure Blob, Vercel Blob, MinIO, the local filesystem, and more. For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
8
6
 
9
7
  Use `FilesSDKFilesystem` when you want a single adapter that can target multiple storage backends with the same code. Swap the underlying driver without changing the workspace setup. If you only target one backend and want first-class options for that backend, prefer the dedicated provider (for example [`S3Filesystem`](https://mastra.ai/reference/workspace/s3-filesystem) or [`GCSFilesystem`](https://mastra.ai/reference/workspace/gcs-filesystem)).
10
8
 
@@ -2,9 +2,7 @@
2
2
 
3
3
  # GCSFilesystem
4
4
 
5
- Stores files in Google Cloud Storage.
6
-
7
- > **Info:** For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
5
+ Stores files in Google Cloud Storage. For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
8
6
 
9
7
  ## Installation
10
8
 
@@ -2,9 +2,7 @@
2
2
 
3
3
  # GoogleDriveFilesystem
4
4
 
5
- Stores files in a single Google Drive folder. Each directory maps to a Drive folder under the configured root, and paths use POSIX semantics (for example `/notes/todo.txt`).
6
-
7
- > **Info:** For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
5
+ Stores files in a single Google Drive folder. Each directory maps to a Drive folder under the configured root, and paths use POSIX semantics (for example `/notes/todo.txt`). For interface details, see [WorkspaceFilesystem Interface](https://mastra.ai/reference/workspace/filesystem).
8
6
 
9
7
  ## Installation
10
8