OpenShell est un backend géré pour les environnements isolés : au lieu d’exécuter
des conteneurs Docker localement, OpenClaw délègue le cycle de vie des environnements
isolés à la CLI openshell, qui provisionne des environnements distants et exécute
des commandes via SSH.
Le Plugin réutilise le même transport SSH et la même passerelle de système de fichiers
distant que le backend SSH générique, et ajoute
le cycle de vie OpenShell (sandbox create/get/delete/ssh-config) ainsi qu’un mode
facultatif de synchronisation de l’espace de travail mirror.
Prérequis
- Plugin OpenShell installé (
openclaw plugins install @openclaw/openshell-sandbox)
- CLI
openshell disponible dans PATH (ou chemin personnalisé via
plugins.entries.openshell.config.command)
- Un compte OpenShell avec accès aux environnements isolés
- Gateway OpenClaw en cours d’exécution sur l’hôte
Démarrage rapide
Redémarrez le Gateway. Au tour d’agent suivant, OpenClaw crée un environnement
isolé OpenShell et y achemine l’exécution des outils. Vérifiez avec :
Modes de l’espace de travail
Il s’agit de la décision la plus importante concernant OpenShell.
mirror (par défaut)
plugins.entries.openshell.config.mode: "mirror" maintient l’espace de travail
local comme référence canonique :
- Avant
exec, OpenClaw synchronise l’espace de travail local vers l’environnement isolé.
- Après
exec, OpenClaw resynchronise l’espace de travail distant vers l’environnement local.
- Les outils de fichiers passent par la passerelle de l’environnement isolé, mais l’environnement
local reste la source de vérité entre les tours.
Ce mode convient particulièrement aux flux de développement : les modifications locales effectuées
en dehors d’OpenClaw apparaissent lors de l’exécution suivante, et le comportement de l’environnement
isolé reste proche de celui du backend Docker.
Compromis : coût de téléversement et de téléchargement à chaque tour d’exécution.
remote
mode: "remote" fait de l’espace de travail OpenShell la référence canonique :
- Lors de la création initiale de l’environnement isolé, OpenClaw initialise une seule
fois l’espace de travail distant à partir de l’environnement local.
- Ensuite,
exec, read, write, edit et apply_patch agissent directement
sur l’espace de travail distant. OpenClaw ne resynchronise pas les modifications
distantes vers l’environnement local.
- La lecture des médias lors de la génération du prompt reste fonctionnelle (les outils
de fichiers et de médias lisent les données par l’intermédiaire de la passerelle de
l’environnement isolé).
Ce mode convient particulièrement aux agents de longue durée et à la CI : il réduit
le surcoût par tour et empêche les modifications locales sur l’hôte d’écraser
silencieusement l’état distant.
Les modifications apportées aux fichiers sur l’hôte en dehors d’OpenClaw après l’initialisation ne sont pas visibles dans l’environnement isolé distant. Exécutez openclaw sandbox recreate pour le réinitialiser.
Choisir un mode
Référence de configuration
Toute la configuration OpenShell se trouve sous plugins.entries.openshell.config :
remoteWorkspaceDir et remoteAgentWorkspaceDir doivent être des chemins absolus
situés sous les racines gérées /sandbox ou /agent ; les autres chemins absolus
sont refusés.
Les paramètres au niveau de l’environnement isolé (mode, scope, workspaceAccess)
se trouvent sous agents.defaults.sandbox, comme pour tout autre backend. Consultez
Environnements isolés pour connaître la matrice complète.
Exemples
Configuration distante minimale
Mode miroir avec GPU
OpenShell par agent avec un Gateway personnalisé
Gestion du cycle de vie
Pour le mode remote, la recréation est particulièrement importante : elle supprime
l’espace de travail distant canonique pour cette portée, puis l’utilisation suivante
en initialise un nouveau à partir de l’environnement local. Pour le mode mirror,
la recréation réinitialise principalement l’environnement d’exécution distant puisque
l’environnement local reste canonique.
Recréez l’environnement après toute modification de l’un des paramètres suivants :
agents.defaults.sandbox.backend
plugins.entries.openshell.config.from
plugins.entries.openshell.config.mode
plugins.entries.openshell.config.policy
Renforcement de la sécurité
La passerelle de système de fichiers du mode miroir verrouille la racine de l’espace
de travail local et revérifie les chemins canoniques (via realpath) avant chaque
lecture, écriture, création de répertoire, suppression et renommage, tout en refusant
les liens symboliques intermédiaires. Le remplacement d’un lien symbolique ou le
remontage de l’espace de travail ne peut pas rediriger l’accès aux fichiers en dehors
de l’arborescence mise en miroir.
Limitations actuelles
- Le navigateur de l’environnement isolé n’est pas pris en charge par le backend OpenShell.
sandbox.docker.binds ne s’applique pas à OpenShell ; la création de l’environnement
isolé échoue si des montages sont configurés.
- Les paramètres d’exécution propres à Docker sous
sandbox.docker.* (à l’exception
de env) s’appliquent uniquement au backend Docker.
Fonctionnement
- OpenClaw exécute
sandbox get pour le nom de l’environnement isolé (avec les
options --gateway/--gateway-endpoint configurées) ; en cas d’échec, il en
crée un avec sandbox create, en transmettant --name, --from, --policy
lorsqu’elle est définie, --gpu lorsqu’il est activé,
--auto-providers/--no-auto-providers, ainsi qu’une option --provider
pour chaque fournisseur configuré.
- OpenClaw exécute
sandbox ssh-config pour le nom de l’environnement isolé afin
de récupérer les informations de connexion SSH.
- Le cœur écrit la configuration SSH dans un fichier temporaire et ouvre une session
SSH via la même passerelle de système de fichiers distant que le backend SSH générique.
- En mode
mirror : synchronisation locale vers distante avant l’exécution,
exécution, puis resynchronisation vers l’environnement local.
- En mode
remote : initialisation unique lors de la création, puis opérations
directes sur l’espace de travail distant.
Voir aussi