ModalSandbox
Exécute des commandes dans des sandboxes cloud Modal isolées. Fournit des environnements sécurisés et éphémères reposant sur l'infrastructure de Modal. Pour plus de détails sur l'interface, consultez l'interface WorkspaceSandbox.
InstallationLien direct vers Installation
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/modal
pnpm add @mastra/modal
yarn add @mastra/modal
bun add @mastra/modal
UtilisationLien direct vers Utilisation
Ajoutez une ModalSandbox à un Workspace et attribuez-la à un agent :
import { Agent } from '@mastra/core/agent'
import { Workspace } from '@mastra/core/workspace'
import { ModalSandbox } from '@mastra/modal'
const workspace = new Workspace({
sandbox: new ModalSandbox({
id: 'dev-sandbox',
baseImage: 'ubuntu:22.04',
timeoutMs: 60_000,
}),
})
const agent = new Agent({
id: 'dev-agent',
model: 'anthropic/claude-opus-4-7',
workspace,
})
AuthentificationLien direct vers Authentification
Définissez les identifiants Modal à l'aide de variables d'environnement ou des options du constructeur :
MODAL_TOKEN_ID=ak-...
MODAL_TOKEN_SECRET=as-...
Ou transmettez-les directement :
const sandbox = new ModalSandbox({
tokenId: process.env.MODAL_TOKEN_ID,
tokenSecret: process.env.MODAL_TOKEN_SECRET,
})
Obtenez vos identifiants depuis le tableau de bord Modal.
Paramètres du constructeurLien direct vers Paramètres du constructeur
id?:
appName?:
baseImage?:
timeoutMs?:
env?:
workdir?:
tokenId?:
tokenSecret?:
instructions?:
onStart?:
onStop?:
onDestroy?:
PropriétésLien direct vers Propriétés
id:
name:
provider:
status:
modal:
processes:
Cycle de vie de la sandboxLien direct vers Cycle de vie de la sandbox
_start(): tente de se reconnecter à une sandbox en cours d'exécution. Si aucune n'est trouvée, crée une sandbox à partir du snapshot le plus récent (s'il en existe un provenant d'un précédent appel à_stop()), ou à partir de baseImage._stop(): crée un snapshot du système de fichiers, puis arrête la sandbox. Le snapshot est conservé en mémoire dans la même instance pour les prochains démarrages._destroy(): arrête la sandbox et supprime tout snapshot.
const sandbox = new ModalSandbox({
id: 'dev-sandbox',
baseImage: 'ubuntu:22.04',
timeoutMs: 300_000,
})
await sandbox._start()
await sandbox.processes.spawn('npm install')
await sandbox._stop()
await sandbox._start()
Processus d'arrière-planLien direct vers Processus d'arrière-plan
ModalSandbox comprend un gestionnaire de processus intégré permettant de lancer et de gérer des processus d'arrière-plan. Chaque appel à spawn() crée un nouveau ContainerProcess par l'intermédiaire de l'API Sandbox.exec() du SDK Modal.
const sandbox = new ModalSandbox({ id: 'dev-sandbox' })
await sandbox._start()
// Spawn a background process
const handle = await sandbox.processes.spawn('node script.js', {
env: { PORT: '3000' },
onStdout: data => console.log(data),
})
// Wait for the process to complete
const result = await handle.wait()
console.log(result.exitCode)
// Kill the process
await handle.kill()
sendStdin() n'est pas pris en charge. Le SDK JS de Modal n'expose pas stdin sur Sandbox.exec().
Consultez la référence de SandboxProcessManager pour découvrir l'API complète.