Produit · Bacs à sable

Chaque agent dispose de sa propre machine virtuelle Linux.

L’exécution d’agents IA sur votre ordinateur portable est une fuite imminente. Les sandbox sont des machines virtuelles cloud isolées qui démarrent en moins d'une seconde, prennent un instantané en place et disparaissent une fois le travail terminé - le même Linux reproductible, à chaque exécution.

sandbox · eu-west-1running
explorer
  • src/
  • Bouton.tsx
  • package.json
  • .codecourier/
  • personne.json
bash
$démarrage du bac à sable codecourier
→ sb_8f3a · node-22-ts · eu-west-1 · prêt en 720 ms
$installation de pnpm
→ 482 packages installés · 6,1s
$pnpm tsc --noEmit
→ ✓ aucune erreur
$instantané du bac à sable codecourier
→ snap_8f3a enregistré · pouvant être repris
Le problème

Fuite des agents locaux de l’IA. Dur.

Dérive du poste de travail

Correctifs Node, Python, Docker, OS - chaque boîte de développement est un flocon de neige. Les agents héritent de ce désordre et vos reproductions cessent de se reproduire.

Les secrets sortent

Les agents qui lisent votre shell lisent vos jetons, votre configuration Kube, vos clés SSH. Une commande mal citée et ils quittent la machine.

Postes de travail bloqués

Migrations de longue durée, suites de tests complètes, refactoristes parallèles : tout cela est stocké sur l'ordinateur portable sur lequel votre ingénieur était censé coder.

Anatomie

Qu'y a-t-il dans un bac à sable.

Chaque sandbox est une véritable machine virtuelle Linux et non un conteneur dans un noyau partagé. Six composants concrets, chacun échangeable par modèle.

linux vmisolated
vCPU
RAM
DISK
$ uname -r
6.8.0 · ubuntu 24.04
Noyau Linux
CLI préinstallées
Support de projet
Vars d'environnement + secrets
Sortie réseau
Couche d'instantané
Modèles

Partez d’un état connu.

Les modèles sont des images de base versionnées. Épinglez un environnement d'exécution, verrouillez la chaîne d'outils, expédiez la même VM à chaque agent et à chaque exécution, ou créez la vôtre à partir d'un Dockerfile.

JS

Nœud 22 · TypeScript

Nœud 22, pnpm, miroir de registre compatible Bun. tsc et vitest préchauffés.

Personnaliser →
Py

Python 3.12 · Poésie

CPython 3.12, Poésie, uv, ruff et mypy. Roues épinglées mises en cache au démarrage.

Personnaliser →
Go

Allez 1.23

Passez à la version 1.23 avec le module proxy, golangci-lint et air pour les rechargements en direct.

Personnaliser →
Rs

Rouille 1,80

Stable Rust, cargo, clippy, analyseur de rouille. sccache est câblé par défaut.

Personnaliser →
Bn

Chignon · TS

Runtime Bun avec la chaîne d'outils TypeScript complète. Reprise de l'instantané en moins de 300 ms.

Personnaliser →
···

Personnalisé

Apportez un Dockerfile ou étendez une base. Créez une fois, prenez un instantané une fois, partagez au sein de l'équipe.

Personnaliser →
Vitesse

Assez rapide pour se sentir local.

Bottes froides comparées aux flottes de l'UE et des États-Unis - production p95, pas une moyenne de commercialisation.

<1s
Démarrage à froid
300 ms
CV instantané
16 processeurs virtuels
Jusqu'à 32 Go de RAM
UE + États-Unis
Régions, plus bientôt
Système de fichiers

Les fichiers se comportent comme un vrai disque.

Lire, écrire, regarder et synchroniser : chaque opération passe par le même SDK, idempotent et typé.

Lisez et écrivez comme un vrai disque.

Diffusez les octets entrants, diffusant les octets sortants. Écritures atomiques, préservation mtime, fichiers volumineux fragmentés de manière transparente - pas de API spécial pour les grosses charges utiles.

/workspace
  • src/
  • ·Button.tsxM
  • ·Card.tsx
  • ·package.json
sdk.ts
await sandbox.files.write(
"src/Button.tsx",
source,
);
 
const out = await sandbox.files.read(
"src/Button.tsx"
);
Cycle de vie

Pause, instantané, reprise – même VM.

Chaque bac à sable a un cycle de vie déterministe. Démarrez une fois, prenez un instantané de l'état chaud, puis reprenez à partir de cet instantané pour la prochaine exécution en une fraction du temps de démarrage à froid.

Les instantanés incluent l'état du disque et du noyau, donc une installation de chaîne d'outils de 30 secondes devient une restauration de 300 ms. Pause lorsque l'agent attend un humain ; reprendre dès l'instant où la réponse arrive.

Commencer
Instantané
Pause
CV
Tuer
CommencerInstantanéPauseCV
Sécurité

Conçu pour l'examen de sécurité.

L'isolement est la valeur par défaut, pas une case à cocher. Chaque sandbox est une VM distincte avec son propre noyau, son propre disque et sa propre politique de sortie.

VM par agent

Pas de noyaux partagés, pas de locataires frères et sœurs. Chaque exécution d'agent obtient une nouvelle machine virtuelle Linux et la restitue lors du démontage.

Contrôles de sortie du réseau

Sortie par défaut refusée. Autorisez les domaines par modèle ou ouvrez un tunnel étroit vers vos services privés et rien d'autre.

Volumes chiffrés

Les disques sont chiffrés au repos avec des clés par locataire. Les instantanés héritent de l'enveloppe de cryptage et ne quittent jamais votre région.

Jetons à durée limitée

Les secrets sont injectés sous forme de jetons de courte durée, limités à l'exécution. Ils expirent au moment où le bac à sable le fait - pas d'informations d'identification restantes.

Journal d'audit

Chaque commande, écriture de fichier et appel réseau est signé et envoyé dans un journal immuable. Rejouez la course, de qualité médico-légale.

SOC 2 Type II

Rapports annuels SOC 2 de type II, GDPR DPA au dossier, résidence des données dans l'UE par défaut. Les achats passent plus vite.

Code · TypeScript SDK

Un appel, une VM.

Créez un bac à sable, exécutez une commande, capturez l'état - le tout à partir de TypeScript tapé. Pas de YAML, pas de planificateur séparé, pas d'abstraction qui fuit.

sandboxes/run-migration.ts
// Boot a sandbox, run a migration, stream the result
import { createSandbox } from "@codecourier/sdk";

const sandbox = await createSandbox({
  template: "node-22-ts",
  region:   "eu-west-1",
  cpu:      4,
  memoryMB: 8192,
  env:      { DATABASE_URL: secret("db-prod") },
});

const result = await sandbox.runCommand("pnpm db:migrate");

const snap = await sandbox.snapshot();   // → snap_8f3a
await sandbox.pause();

createSandbox renvoie un handle typé contenant les fichiers, git, le réseau et le cycle de vie. Même forme que Node, Bun et Deno.

Manuels de jeu

Où les bacs à sable gagnent leur vie.

Migrations parallèles entre dépôts

Répartissez une mise à niveau sur quarante services. Chaque agent obtient sa propre VM, capture son travail et ouvre son propre PR.

Lire le manuel de jeu →

Suites de tests de longue durée

Des intégrations de deux heures qui ne touchent jamais un ordinateur portable de développeur. Démarrage, instantané à mi-exécution, reprise après le déjeuner.

Lire le manuel de jeu →

Exécution de code non fiable

Exécutez du code que vous n'avez pas écrit - généré, récupéré, contribué - sans lui donner votre poste de travail ou votre réseau.

Parlez-nous →
Les bacs à sable ont déplacé toute la surface de risque de nos agents des ordinateurs portables des ingénieurs vers un endroit que nous pouvons réellement auditer. La vitesse de démarrage à froid signifie qu'il ne semble jamais distant - et l'histoire de l'instantané a financé à elle seule la migration.
Marcus Vidler·Responsable de l'ingénierie de la plateforme · Northwind Systems
FAQ

Quelle plateforme les dirigeants demandent.

Où les bacs à sable fonctionnent-ils physiquement ?
Les bacs à sable fonctionnent dans nos régions gérées dans l'UE (Francfort, Zurich) et aux États-Unis (us-east, us-west). Vous épinglez une région par modèle ou par appel, et les instantanés ne quittent jamais leur région d'origine - les données de l'UE restent donc dans l'UE par construction.
Puis-je apporter une image Docker personnalisée ?
Oui. Les modèles acceptent n’importe quelle image compatible OCI comme base. Nous sommes assis au sommet d'un hôte de pétard renforcé, de sorte que votre Dockerfile devient une véritable image de VM au moment de la construction - même image, même noyau, à chaque démarrage.
Combien de temps vivent les bacs à sable ?
Par défaut, un bac à sable dure toute la durée de l'exécution, plus une fenêtre d'inactivité que vous contrôlez - généralement quelques minutes. Vous pouvez épingler un bac à sable ouvert pendant des heures lorsque vous en avez besoin, ou le tuer dès la fin de l'étape. Les instantanés persistent indépendamment.
Qu'arrive-t-il au disque entre les exécutions ?
Rien d'implicite. Une nouvelle exécution obtient une nouvelle VM avec le disque propre du modèle. Pour reporter l'état, prendre un instantané à la fin d'une exécution et reprendre à partir de cet instantané la suivante - persistance explicite, auditable et sans surprise.
Les bacs à sable peuvent-ils appeler nos services privés ?
Oui, via des tunnels ciblés. Vous installez un connecteur léger dans votre VPC et accordez à un modèle de sandbox l'accès à des hôtes internes spécifiques. Refus par défaut partout ailleurs - rien ne fuit au-delà de la liste verte.
Agents plus sûrs pour les navires

Démarrez votre premier bac à sable en quelques secondes.

Gratuit pendant 14 jours · pas de carte de crédit

Embauchez votre premier ingénieur IA.
Expédier avant l'heure du déjeuner.

5 minutes pour embarquer. Premier PR dans l'heure. Annulez à tout moment.