Kontainerisasi
Pi berjalan dengan semua izin secara default, namun dalam beberapa kasus, Anda ingin memiliki kontrol lebih besar terhadap direktori mana Pi dapat menulis dan akses apa yang dimilikinya.
Ada dua opsi umum. Anda juga bisa
- jalankan seluruh proses
pidi dalam lingkungan yang terisolasi, atau - jalankan
pipada host dan rutekan eksekusi alat ke lingkungan yang terisolasi.
Pilih sebuah pola
| Pola | Apa yang terisolasi | Terbaik untuk | Catatan |
|---|---|---|---|
| Gondolin ekstensi | Alat bawaan dan perintah ! |
Isolasi mikro-VM lokal sambil tetap menjaga autentikasi pada host | Lihat examples/extensions/gondolin/. |
| Biasa Docker | Seluruh proses pi dalam wadah lokal |
Isolasi lokal sederhana | Penyedia API keys memasuki wadah. |
| OpenShell | Seluruh proses pi dalam sandbox yang dikontrol kebijakan |
Dikelola secara lokal atau jarak jauh sandbox | Membutuhkan gerbang OpenShell |
Extensions dijalankan dimanapun proses pi berjalan. Jika Anda menjalankan host pi dengan ekstensi perutean alat, alat ekstensi khusus lainnya akan tetap berjalan di host kecuali alat tersebut juga mendelegasikan operasinya.
Gondolin
Gondolin adalah mikro-VM Linux lokal.
Gunakan example extension bila Anda ingin pi di host tetapi semua alat bawaan dialihkan ke VM.
Pengaturan:
cp -R packages/coding-agent/examples/extensions/gondolin ~/.pi/agent/extensions/gondolin
cd ~/.pi/agent/extensions/gondolin
npm install --ignore-scriptsJalankan dari proyek yang ingin Anda pasang:
cd /path/to/project
pi -e ~/.pi/agent/extensions/gondolinEkstensi memasang cwd host di /workspace di VM dan menimpa read, write, edit, bash, grep, find, dan ls.
Perintah pengguna ! juga dirutekan ke VM.
Perubahan file di bawah /workspace tulis ke host.
Persyaratan: Node.js >= 23.6.0 untuk @earendil-works/gondolin, ditambah QEMU (memerlukan instalasi melalui manajer paket Anda).
Biasa Docker
Jalankan seluruh proses pi di Docker bila Anda menginginkan batas kontainer lokal yang paling sederhana.
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"]Bangun dan jalankan:
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-v "$PWD:/workspace" memasang direktori Anda saat ini ke dalam wadah di /workspace sehingga membaca dan menulis di /workspace di dalam Docker secara langsung memengaruhi file host Anda, seperti pada contoh Gondolin.
Gunakan volume bernama untuk /root/.pi/agent jika Anda menginginkan pengaturan dan sesi lokal-kontainer. Memasang host Anda ~/.pi/agent akan mengekspos file autentikasi host dan sesi ke dalam container.
OpenShell
Gunakan NVIDIA OpenShell bila Anda menginginkan sandbox yang dikontrol kebijakan dengan sistem file, proses, jaringan, kredensial, dan kontrol inferensi. OpenShell dapat menjalankan sandboxes melalui gateway lokal yang didukung oleh Docker, Podman, atau runtime VM, atau melalui gateway Kubernetes jarak jauh.
Setiap sandbox memerlukan gateway aktif. Daftarkan dan pilih salah satu sebelum membuat sandbox:
openshell gateway add <gateway-url> --name <name>
openshell gateway select <name>Luncurkan pi di dalam OpenShell sandbox:
openshell sandbox create --name pi-sandbox --from pi -- piDalam pola ini, seluruh proses pi berjalan di dalam sandbox.
Alat bawaan, perintah !, dan alat ekstensi dijalankan di dalam batas OpenShell.
Jika gatewaynya jarak jauh, file proyek tidak akan di-bind-mount dari host, artinya penulisan di sandbox tidak akan tercermin pada mesin Anda. Kloning repositori di dalam sandbox atau gunakan perintah transfer file OpenShell:
openshell sandbox upload pi-sandbox ./repo /workspace
openshell sandbox download pi-sandbox /workspace/repo ./repo-outOpenShell penyedia dapat menyimpan model mentah API key di luar sandbox.
Saat perutean inferensi dikonfigurasi, kode di dalam sandbox dapat memanggil https://inference.local, dan gateway memasukkan kredensial penyedia yang dikonfigurasi di bagian hulu.
Konfigurasikan Pi untuk menggunakan titik akhir yang kompatibel dengan OpenAI atau kompatibel dengan Antropik jika Anda ingin lalu lintas model menggunakan rute ini.