Aller au contenu
English

Choisir une sandbox

Choisissez où l’agent exécute ses commandes : conteneur, cloud, microVM ou machine locale.

Importez le fournisseur depuis son sous-chemin et passez-le dans sandboxProvider. L’agent, le brief et la branche ne changent pas.

import { reportValue } from "./reporter.ts";
import { dispatch } from "@elie-laloum/outpost";
import { createVercelSandboxProvider } from "@elie-laloum/outpost/providers/vercel";
import { coder, repository } from "./outpost.config.ts";

const result = await dispatch({
  agent: coder,
  repository,
  sandboxProvider: createVercelSandboxProvider(),
  brief: { text: "Fix the broken links in the README and commit the change." },
});
reportValue(result.branch, result.commits.length);
// Example output: outpost/job-… 1

Chaque fournisseur a son propre sous-chemin, @elie-laloum/outpost/providers/<name> : docker, podman, vercel, daytona, firecracker et local. Sans sandboxProvider, Outpost utilise Docker.

Vercel et Daytona chargent leur SDK au moment d’allouer une sandbox. Installez-le à côté d’Outpost : npm install @vercel/sandbox ou npm install @daytona/sdk. Les autres fournisseurs ne demandent aucun paquet supplémentaire.

Docker, PodmanVercelDaytonaFirecrackerHôte
Accès au dépôtWorktree montéSnapshot téléverséSnapshot téléverséSnapshot téléverséSystème de fichiers hôte
IsolationConteneurSandbox hébergéeSandbox hébergéeMicroVMAucune
attach() interactifOuiNonOuiNonOui
Entrée en direct pour la réorientationOuiOuiOuiOuiOui
Caches de dépendancesOuiNonNonNonNon
Règles de sortiedeny-all seulementOuiOui, avec des limitesNonNon
Reprise de la spéculation durableOuiNonNonNonNon
Installe un CLI d’agent manquantNonOuiOuiOuiNon
Mode de branche par défautcurrentintegrateintegrateintegratecurrent
PréparationMoteur et image@vercel/sandbox, identifiants@daytona/sdk, clé d’APIHôte KVM, noyau, rootfs, TAP, SSHCLI d’agent et outils

Les fournisseurs distants (Vercel, Daytona, Firecracker) travaillent sur une copie de l’historique Git. Si un CLI pris en charge manque, ils l’installent avant le premier tour, sauf si vous passez bootstrap: false. Ils refusent le mode de branche current.

Avec repositoryMode: "isolated", Docker et Podman se comportent comme un fournisseur distant : voir Git privé. Ils perdent alors la reprise de spéculation durable, qui exige le mode monté par défaut.

  • Rien ne se replie sur l’hôte. Un moteur, un SDK ou un identifiant manquant fait échouer la tâche ; seul createLocalSandboxProvider() s’exécute sur l’hôte, et vous le choisissez explicitement.
  • Un conteneur monté peut écrire dans les métadonnées Git du dépôt. Ce n’est pas une barrière contre un agent hostile : lisez Sécurité.
  • La synchronisation distante s’arrête plutôt que d’écraser des modifications concurrentes de l’hôte, et conserve les données de récupération. Voir Sandboxes cloud.
  • Un fournisseur Firecracker possède un périphérique TAP et exécute une seule VM à la fois. Créez un fournisseur par VM simultanée.

API : SandboxProvider · createDockerSandboxProvider · createPodmanSandboxProvider · createVercelSandboxProvider · createDaytonaSandboxProvider · createFirecrackerSandboxProvider · createLocalSandboxProvider.