Conteneurisation
Pi s'exécute avec toutes les autorisations par défaut, mais dans certains cas, vous souhaiterez avoir plus de contrôle sur les répertoires dans lesquels Pi peut écrire et sur les accès dont il dispose.
Il existe deux options générales. Vous pouvez soit
- exécuter l'ensemble du processus
pidans un environnement isolé, ou - exécutez
pisur l'hôte et exécutez l'outil de routage dans un environnement isolé.
Choisissez un motif
| Modèle | Ce qui est isolé | Idéal pour | Remarques |
|---|---|---|---|
| Extension Gondolin | Outils intégrés et commandes ! |
Isolation des micro-VM locales tout en conservant l'authentification sur l'hôte | Voir examples/extensions/gondolin/. |
| Plaine Docker | Processus pi entier dans un conteneur local |
Isolement local simple | Les fournisseurs API key entrent dans le conteneur. |
| OpenShell | Processus pi entier dans un sandbox contrôlé par une politique |
Géré localement ou à distance sandbox | Nécessite une passerelle OpenShell |
Extensions s'exécute partout où le processus pi s'exécute. Si vous exécutez l'hôte pi avec une extension de routage d'outils, d'autres outils d'extension personnalisés s'exécutent toujours sur l'hôte à moins qu'ils ne délèguent également leurs opérations.
Gondolin
Gondolin est une micro-VM Linux locale.
Utilisez le example extension lorsque vous voulez pi sur l'hôte mais tous les outils intégrés sont acheminés vers la VM.
Installation:
cp -R packages/coding-agent/examples/extensions/gondolin ~/.pi/agent/extensions/gondolin
cd ~/.pi/agent/extensions/gondolin
npm install --ignore-scriptsExécutez à partir du projet que vous souhaitez monter:
cd /path/to/project
pi -e ~/.pi/agent/extensions/gondolinL'extension monte le cwd hôte à /workspace dans la VM et remplace read, write, edit, bash, grep, find et ls.
Les commandes de l'utilisateur ! sont également acheminées vers la VM.
Les modifications de fichier sous /workspace sont écrites sur l'hôte.
Exigences: Node.js >= 23.6.0 pour @earendil-works/gondolin, plus QEMU (nécessite une installation via votre gestionnaire de paquets).
Plaine Docker
Exécutez l'ensemble du processus pi dans Docker lorsque vous souhaitez la limite de conteneur local la plus simple.
Dockerfile.pi:
FROM node:24-bookworm-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends bash ca-certificates git ripgrep \
&& rm -rf /var/lib/apt/lists/*
RUN npm install -g --ignore-scripts @earendil-works/pi-coding-agent
WORKDIR /workspace
ENTRYPOINT ["pi"]Construisez et exécutez:
docker build -t pi-sandbox -f Dockerfile.pi .
docker run --rm -it \
-e ANTHROPIC_API_KEY \
-v "$PWD:/workspace" \
-v pi-agent-home:/root/.pi/agent \
pi-sandboxLe -v "$PWD:/workspace" monte votre répertoire actuel dans le conteneur /workspace de telle sorte que les lectures et écritures dans /workspace à l'intérieur de Docker affectent directement vos fichiers hôtes, comme dans l'exemple Gondolin.
Utilisez un volume nommé pour /root/.pi/agent si vous souhaitez des paramètres et des sessions locaux au conteneur. Le montage de votre hôte ~/.pi/agent expose les fichiers d'authentification et de session de l'hôte au conteneur.
OpenShell
Utilisez NVIDIA OpenShell lorsque vous souhaitez un sandbox contrôlé par une politique avec des contrôles de système de fichiers, de processus, de réseau, d'informations d'identification et d'inférence. OpenShell peut exécuter sandbox via une passerelle locale soutenue par Docker, Podman ou un runtime de VM, ou via une passerelle Kubernetes distante.
Chaque sandbox nécessite une passerelle active. Inscrivez-vous et sélectionnez-en un avant de créer un sandbox:
openshell gateway add <gateway-url> --name <name>
openshell gateway select <name>Lancez pi à l'intérieur d'un OpenShell sandbox:
openshell sandbox create --name pi-sandbox --from pi -- piDans ce modèle, l'ensemble du processus pi s'exécute à l'intérieur du sandbox.
Les outils intégrés, les commandes ! et les outils d'extension s'exécutent à l'intérieur de la limite OpenShell.
Si la passerelle est distante, les fichiers de projet ne sont pas montés en liaison depuis l'hôte, ce qui signifie que les écritures dans le sandbox ne sont pas reflétées sur votre machine. Clonez le référentiel à l'intérieur du sandbox ou utilisez les commandes de transfert de fichiers OpenShell:
openshell sandbox upload pi-sandbox ./repo /workspace
openshell sandbox download pi-sandbox /workspace/repo ./repo-outLes fournisseurs OpenShell peuvent conserver les modèles bruts API key en dehors des sandbox.
Lorsque le routage d'inférence est configuré, le code à l'intérieur du sandbox peut appeler https://inference.local et la passerelle injecte les informations d'identification du fournisseur configurées en amont.
Configurez Pi pour utiliser le point de terminaison compatible OpenAI ou Anthropic correspondant si vous souhaitez que le trafic du modèle utilise cette route.