devin worker qui se connecte à Devin Cloud en HTTPS sortant, récupère des sessions dans la file d’attente et les exécute localement. Il ne nécessite ni ports entrants, ni adresse IP publique, ni réseau privé virtuel (VPN). Ici, chaque sandbox exécute un worker, qui traite les sessions les unes après les autres pendant toute la durée de vie de la sandbox.
Chaque worker traite une seule session active à la fois. Les sessions supplémentaires attendent qu’un worker se libère. Ce guide démarre un nombre fixe de workers : il ne crée pas de sandboxes supplémentaires lorsque des sessions s’accumulent dans la file d’attente. Démarrez d’autres workers manuellement ou utilisez un orchestrateur pour les provisionner automatiquement.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :- Une organisation Devin dans laquelle les Outposts sont activés. Si Outposts n’apparaît pas sous Settings > Environment dans Devin Cloud, adressez-vous à votre administrateur Devin.
- Un jeton d’accès à l’API CoreWeave disposant de l’action
SANDBOX_USER. - Pour une utilisation directe du kit de développement logiciel (SDK), Python 3.11 ou version ultérieure avec
uv, ou Node.js 22 ou version ultérieure.
Créer un avant-poste dans Devin Cloud
Pour créer un avant-poste et obtenir son jeton, suivez ces étapes :- Dans Devin Cloud, accédez à Settings > Environment > Outposts.
- Cliquez sur Create Outpost, saisissez un nom, puis sélectionnez Linux.
- Copiez le jeton de l’avant-poste. Devin Cloud ne l’affiche qu’une seule fois.
cws-agent ou le SDK Sandboxes, puis exécutez la session de vérification.
Démarrage rapide avec cws-agent
Suivez les instructions d’installation decws-agent. L’outil configure un volume d’instantanés qui permet d’enregistrer et de restaurer votre Workspace à l’aide d’instantanés du système de fichiers.
Remplacez [OUTPOST-TOKEN] par le jeton que vous avez copié, [OUTPOST-NAME] par le nom de votre avant-poste et [SANDBOX-NAME] par un nom de session cws-agent pour ce sandbox. Le nom de session doit comporter de 1 à 40 lettres minuscules, chiffres ou traits d’union, et commencer par une lettre ou un chiffre :
--agent devin.
Configurer avec le SDK Sandboxes
Utilisez cette méthode alternative pour lancer directement un worker, sans passer parcws-agent. Elle ne configure pas de stockage persistant.
Exécutez les extraits de code Python dans l’environnement virtuel créé à l’étape Configurer les identifiants et installer le client. Enregistrez les extraits de code TypeScript dans des fichiers .mts au sein du projet dans lequel vous avez installé le client, puis exécutez-les avec npx tsx [FILENAME].mts.
Configurer les identifiants et installer le client
Dans le terminal où vous exécutez le script, exportez le jeton que vous avez copié lors de la création de l’avant-poste :- Python
- TypeScript
Utilisez Python 3.11 ou une version ultérieure, ainsi que
uv :Démarrer le worker
Le script suivant crée une sandbox à partir de l’image de worker officielle de Cognition et exécutedevin worker comme commande principale de la sandbox. Le client lit DEVIN_OUTPOSTS_TOKEN dans votre environnement local et transmet sa valeur dans la requête de création de la sandbox afin de définir la variable d’environnement du worker. La sortie du worker constitue le journal de la sandbox. Si le worker se termine sur une erreur, la plateforme redémarre le conteneur, dans la limite d’un nombre maximal de redémarrages.
- Python
- TypeScript
start_outpost_worker.py
- Python
- TypeScript
sandbox.wait() rend la main dès que la sandbox est en cours d’exécution ou qu’elle s’est déjà terminée. L’installation et l’authentification du worker peuvent alors être encore en cours ; vérifiez donc l’état du worker avant de soumettre une tâche. Le worker démarre dans /workspace. Une session pour your-org/app extrait son dépôt dans /workspace/repos/app.
Le script n’utilise pas de bloc with : une sandbox en cours d’exécution continue donc de tourner une fois le script terminé.
Facultatif : utiliser un magasin de secrets
Vous pouvez transmettre une référence de secret Forge à la place de la valeur du jeton de l’avant-poste. Cette option nécessite une authentification Forge et un placement sans serveur. Stockez le jeton de l’avant-poste dans le Secret Manager de votre équipe Forge, puis exportez les identifiants d’authentification de cette équipe :FORGE_API_KEY et FORGE_TEAM ne sont que des exemples de noms de variables d’environnement : le SDK ne les détecte donc pas automatiquement.
- Python
- TypeScript
Importez Passez
AuthHeaders et définissez auth avant de créer la sandbox :auth=auth à Sandbox.run(). Dans les exemples Python suivants, incluez également cette configuration et passez aussi auth=auth à chaque appel de Sandbox.from_id().[SECRET-NAME] par le nom du secret de l’équipe :
- Python
- TypeScript
Importez
Secret depuis cwsandbox, supprimez DEVIN_OUTPOSTS_TOKEN de environment_variables, puis ajoutez secrets=[Secret(store="wandb", name="[SECRET-NAME]", env_var="DEVIN_OUTPOSTS_TOKEN")] à Sandbox.run().Exécuter et vérifier une session Devin
Pour ce test, utilisez un avant-poste qui ne contient que ce worker et aucune autre session active ou mise en file d’attente. Choisissez une valeur unique et non secrète pour ce test, puis remplacez[PROOF-VALUE] dans la tâche ci-dessous. Dans Devin Cloud, démarrez une nouvelle session et sélectionnez votre avant-poste sous Configuration > Virtual environment. Soumettez la tâche ci-dessous, qui commence par Write the exact text. Vous pouvez aussi envoyer le message complet dans Slack :
[SANDBOX-NAME] par le nom de votre Workspace cws-agent ou [SANDBOX-ID] par l’ID affiché par le script du SDK :
- cws-agent
- SDK Sandboxes
Vérifier le worker et l’arrêter
Pourcws-agent, connectez-vous au terminal du worker comme indiqué dans le démarrage rapide. Si vous utilisez le SDK, examinez son statut et ses journaux récents. Remplacez [SANDBOX-ID] par l’ID affiché :
- Python
- TypeScript
account.outposts.write). Corrigez l’identifiant d’authentification, puis recréez la sandbox.
Une sandbox peut afficher l’état running alors que son worker s’arrête et redémarre en boucle. Examinez ses journaux et, avec le client Python, les détails par conteneur présentés dans l’exemple précédent.
Arrêtez tout worker dont l’authentification échoue de manière répétée avant de créer son remplaçant. Si le démarrage échoue sans motif exploitable, conservez l’ID de la sandbox et les journaux pour le Support CoreWeave.
Arrêtez la sandbox lorsque vous n’avez plus besoin du worker. Pour la configuration sans serveur, consultez Premiers pas.
Attendez que la session Devin active se termine et enregistre ses résultats, puis arrêtez les ressources de calcul à l’aide de la commande correspondant à votre configuration :
- cws-agent
- SDK Sandboxes
down crée un instantané du Workspace avant l’arrêt. Si la capture échoue, examinez l’erreur signalée ainsi que la sortie de cws-agent status [SANDBOX-NAME], puis corrigez le problème avant de réessayer. Si vous pouvez abandonner les modifications non enregistrées, utilisez cws-agent down [SANDBOX-NAME] --no-snapshot.cws-agent, consultez le guide Devin Outposts de cws-agent.
Facultatif : personnaliser l’environnement
Vous pouvez personnaliser l’environnement du worker de plusieurs façons :-
Utilisez votre propre image. L’image officielle contient la CLI
devinet presque rien d’autre. Compilez à partir de celle-ci une image qui ajoute votre chaîne d’outils, puis transmettez-la viacontainer_imageen Python oucontainerImageen TypeScript. Devin nécessitegit. L’enregistrement d’écran nécessiteffmpeg, et les outils de navigateur et d’utilisation de l’ordinateur nécessitent un binaire de navigateur compatible. Pour les images amd64 basées sur l’image Ubuntu officielle, installez Google Chrome. Le paquetchromiumd’Ubuntu n’est qu’un stub snap qui ne fonctionne pas dans les conteneurs. Voir la configuration du conteneur Devin. L’utilisation de l’ordinateur nécessite également un affichage graphique actif, tel que Xvfb, avec la variableDISPLAYdéfinie pour le worker. Le worker effectue sa recherche dans les emplacements d’installation standard. S’il ne trouve pas votre binaire, définissezDEVIN_CHROME_PATHsur son chemin absolu. Voir la référence Devin Outposts. - Configurez des GPU. Pour connaître les options disponibles, voir la configuration GPU des sandbox. L’exemple de worker de ce guide utilise uniquement des ressources CPU.
- Exécutez davantage de workers. Un worker ne sert qu’une session à la fois. Exécutez de nouveau le script avec le même nom d’avant-poste pour démarrer un autre worker sur la file d’attente.
- Créez une sandbox par session. Ici, le worker réutilise sa sandbox d’une session à l’autre. Pour obtenir une nouvelle sandbox à chaque session, consultez le guide d’orchestration de Devin.