Configuration, personnalisation, paramètres de plateforme et références API pour Pi.

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

  1. exécuter l'ensemble du processus pi dans un environnement isolé, ou
  2. exécutez pi sur 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-scripts

Exécutez à partir du projet que vous souhaitez monter:

cd /path/to/project
pi -e ~/.pi/agent/extensions/gondolin

L'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-sandbox

Le -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 -- pi

Dans 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-out

Les 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.