Workspace Class
The Workspace class combines a filesystem and sandbox to provide agents with file storage and command execution capabilities. It also supports BM25 and vector search for indexed content.
Usage ExampleDirect link to Usage Example
import { Workspace, LocalFilesystem, LocalSandbox } from '@mastra/core/workspace';
const workspace = new Workspace({
id: 'my-workspace',
name: 'My Workspace',
filesystem: new LocalFilesystem({
basePath: './workspace',
}),
sandbox: new LocalSandbox({
workingDirectory: './workspace',
}),
bm25: true,
autoIndexPaths: ['/docs'],
});
Constructor ParametersDirect link to Constructor Parameters
id?:
name?:
filesystem?:
sandbox?:
bm25?:
vectorStore?:
embedder?:
autoIndexPaths?:
skills?:
tools?:
operationTimeout?:
Tool ConfigurationDirect link to Tool Configuration
The tools option accepts a WorkspaceToolsConfig object that controls which workspace tools are enabled and their safety settings.
import { WORKSPACE_TOOLS } from '@mastra/core/workspace';
tools: {
// Global defaults (apply to all tools)
enabled: true,
requireApproval: false,
// Per-tool overrides using WORKSPACE_TOOLS constants
[WORKSPACE_TOOLS.FILESYSTEM.WRITE_FILE]: {
requireApproval: true,
},
}
The config object has two parts:
- Global defaults (
enabled,requireApproval) - Apply to all tools unless overridden - Per-tool overrides - Use
WORKSPACE_TOOLSconstants as keys to configure individual tools
See Workspace Overview for more examples.
Per-tool OptionsDirect link to Per-tool Options
Each tool can be configured with these options:
enabled?:
requireApproval?:
requireReadBeforeWrite?:
PropertiesDirect link to Properties
id:
name:
status:
filesystem:
sandbox:
skills:
canBM25:
canVector:
canHybrid:
MethodsDirect link to Methods
LifecycleDirect link to Lifecycle
init()Direct link to init
Initialize the workspace and prepare resources.
await workspace.init();
Calling init() is optional in most cases:
- Sandbox: Auto-starts on first
executeCommand()call. Useinit()to avoid first-command latency. - Filesystem: Only needed if the base directory doesn't exist yet.
- Search: Required only if using
autoIndexPathsfor auto-indexing.
Initialization performs:
- Starts the filesystem provider (creates base directory if needed)
- Starts the sandbox provider (creates working directory, sets up isolation if configured)
- Indexes files from
autoIndexPathsfor search
destroy()Direct link to destroy
Destroy the workspace and clean up resources.
await workspace.destroy();
Search OperationsDirect link to Search Operations
index(path, content, options?)Direct link to indexpath-content-options
Index content for search.
await workspace.index('/docs/guide.md', 'Guide content...');
search(query, options?)Direct link to searchquery-options
Search indexed content.
const results = await workspace.search('password reset', {
topK: 10,
mode: 'hybrid',
});
UtilityDirect link to Utility
getInfo()Direct link to getinfo
Get workspace information.
const info = await workspace.getInfo();
// { id, name, status, createdAt, lastAccessedAt, filesystem?, sandbox? }
getPathContext()Direct link to getpathcontext
Get information about filesystem and sandbox paths, including instructions for agents.
const context = workspace.getPathContext();
// { filesystem?, sandbox?, instructions }
Returns: PathContext
interface PathContext {
filesystem?: {
provider: string;
basePath?: string;
};
sandbox?: {
provider: string;
workingDirectory?: string;
};
instructions: string;
}
The instructions field contains provider-generated descriptions combined from the filesystem and sandbox. These instructions are included in tool descriptions to help agents understand the execution context.
getToolsConfig()Direct link to gettoolsconfig
Get the tools configuration.
const config = workspace.getToolsConfig();
Agent ToolsDirect link to Agent Tools
A workspace provides tools to agents based on what is configured.
Filesystem toolsDirect link to Filesystem tools
Added when a filesystem is configured:
| Tool | Description |
|---|---|
mastra_workspace_read_file | Read file contents. Supports optional line range for reading specific portions of large files. |
mastra_workspace_write_file | Create or overwrite a file with new content. Creates parent directories automatically. |
mastra_workspace_edit_file | Edit an existing file by finding and replacing text. Useful for targeted changes without rewriting the entire file. |
mastra_workspace_list_files | List directory contents as a tree structure. Supports recursive listing with depth limits. |
mastra_workspace_delete | Delete a file or directory. Supports recursive deletion for directories. |
mastra_workspace_file_stat | Get metadata about a file or directory including size, type, and modification time. |
mastra_workspace_mkdir | Create a directory. Creates parent directories automatically if they don't exist. |
Write tools (write_file, edit_file, delete, mkdir) are excluded when the filesystem is in read-only mode.
Sandbox toolsDirect link to Sandbox tools
Added when a sandbox is configured:
| Tool | Description |
|---|---|
mastra_workspace_execute_command | Execute a shell command with arguments. Returns stdout, stderr, and exit code. Supports timeouts and streaming output. |
Search toolsDirect link to Search tools
Added when BM25 or vector search is configured:
| Tool | Description |
|---|---|
mastra_workspace_search | Search indexed content using keyword (BM25), semantic (vector), or hybrid search. Returns ranked results with scores. |
mastra_workspace_index | Index content for search. Associates content with a path for later retrieval. |
The index tool is excluded when the filesystem is in read-only mode.