Billedkilde: We❤️Apple · AI-genereret redaktionel konceptillustration; billedet viser ikke en officiel Apple-brugerflade eller den konkrete Pi-opsætning.
Du kan køre Pi-kodeagenten i Apples container-værktøj uden at installere Node eller npm direkte på din Mac. Opsætningen kræver en Apple Silicon-Mac med macOS 26, en lokal modelserver på værten og et afgrænset projekt, som du bevidst monterer i containeren. Her er den reproducerbare arbejdsgang – inklusive den test, der viser, om grænsen faktisk virker.
Forudsætninger: det skal være på plads først
- En Mac med Apple Silicon og macOS 26. Apples container-projekt understøtter ikke ældre macOS-versioner.
- En lokal, OpenAI-kompatibel modelserver med tool calling. Kildeopsætningen bruger port 8080; modellen kører på macOS, mens agentens værktøjer kører i Linux-containeren.
- Git på værten og et enkelt projekt, agenten må se. Du behøver ikke installere Node eller npm på macOS.
- En backup eller ren Git-status, før agenten får skriveadgang til projektet.
Containeren er en stærkere grænse end at køre agenten direkte i Terminal, men den er ikke magisk. Det projekt, du monterer med skriveadgang, kan agenten stadig ændre. Montér derfor aldrig hele hjemmemappen, iCloud Drive, ~/.ssh eller mapper med credentials.
Trin 1: Installér Apples container-værktøj
Hent den seneste signerede .pkg fra Apples officielle GitHub-releases, installér den, og start derefter systemtjenesten:
container system start
container --versionEn versionslinje bekræfter, at CLI og tjeneste svarer. Hvis starten fejler, skal du først kontrollere Apple Silicon og macOS 26. Tillad også lokal netværksadgang under Systemindstillinger → Anonymitet & sikkerhed → Lokalt netværk, når macOS spørger.
Trin 2: Kontrollér den lokale modelserver
Start din lokale modelserver på værten med en OpenAI-kompatibel endpoint og tool calling. Den skal lytte på 0.0.0.0:8080, ikke kun 127.0.0.1, fordi containeren er en separat virtuel maskine. Kontrollér først fra din Mac:
curl -s http://127.0.0.1:8080/v1/modelsDu skal få en model-liste tilbage. Et tomt svar eller timeout betyder, at du skal løse modelserveren, porten eller macOS' netværkstilladelse, før du går videre.
Trin 3: Hent eksempelprojektet og byg agentbilledet
Kildeprojektet indeholder en Containerfile, Pi-konfiguration og små build-/run-scripts. Hent det, gennemgå filerne, og byg derefter billedet:
git clone https://github.com/michaelhannecke/pi-container.git
cd pi-container
./scripts/build.shBuildet installerer Node 22 og @mariozechner/pi-coding-agent inde i containerbilledet. Det er derfor “ingen npm på værten” – ikke “ingen npm overhovedet”. Et vellykket build ender med et lokalt image som pi-coding-agent:local.
Trin 4: Find værtsadressen set fra containeren
Containeren kan ikke bruge værtsmaskinens 127.0.0.1. Find i stedet bridge-adressen dynamisk:
container run --rm --entrypoint sh pi-coding-agent:local -c "ip route | awk '/default/ {print $3}'"Sæt den viste adresse ind som baseUrl i pi-config/models.json, efterfulgt af :8080/v1. Brug ikke blindt 192.168.64.1; adressen kan ændre sig mellem versioner og netværksopsætninger.
Trin 5: Giv kun adgang til ét projekt
Kør agenten med en eksplicit projektmappe:
PROJECT_DIR="$HOME/Developer/mit-projekt" ./scripts/run.sh --model mlx-local/gemma4-instructrun.sh monterer Pi-konfigurationen i agentens hjemmemappe og kun den valgte projektmappe som /workspace. Flaget --rm fjerner containerens skrivbare lag, når sessionen slutter. Ændringer i den monterede projektmappe består naturligvis.
Trin 6: Bevis at grænsen virker
- Bed agenten læse en ufarlig fil i projektet. Det bekræfter mount og modelkontakt.
- Bed den oprette en midlertidig fil i projektet, og kontrollér ændringen med Git.
- Bed den læse en sti uden for
/workspace. Den skal ikke have adgang. - Stop sessionen, kør
container list --all, og kontrollér, at den midlertidige agentcontainer er væk.
Hvis agenten kan chatte, men ikke bruge værktøjer, skal du kontrollere toolCalling: true og modellens reelle tool-calling-understøttelse. Hvis den ikke kan nå modellen, er de hyppigste årsager manglende lokal netværkstilladelse, binding til loopback eller en forkert bridge-adresse.
Konklusion: den konkrete sikkerhedsregel
Opsætningen er relevant, når du vil have lokal inferens og en disponibel agentruntime uden Node/npm på din daglige Mac. Den vigtigste handling er ikke selve build-kommandoen, men mountet: vælg ét projekt, kontrollér Git-status, og bevis med en test, at agenten ikke kan læse uden for /workspace. Hvis den test ikke består, skal du stoppe – ikke give agenten flere rettigheder.