Tecnologie

Pi coding agent: cos'è, come si usa e quando sceglierlo

Quattro tool, niente sotto-agenti né popup dei permessi, tutto il resto si scrive in TypeScript. Cos'è Pi, come si installa e perché lo uso come motore di un'app.

Cosmin-Anton Mihoc
9 min di lettura
Pi coding agent: cos'è, come si usa e quando sceglierlo
Indice dei contenuti (10 sezioni)

Pi coding agent è l'agente di programmazione da terminale che ha fatto la scelta opposta a tutti gli altri: invece di aggiungere funzioni, le ha tolte. Niente sotto-agenti, niente plan mode, niente popup dei permessi, niente MCP di serie. Al modello dà quattro strumenti (read, write, edit e bash) e tutto il resto lo costruisci tu con estensioni in TypeScript.

A settembre 2026 il repository ha superato le 107.000 stelle su GitHub e l'ultima release è la 0.85.

Io lavoro ogni giorno con Claude Code, ma Pi lo sto usando in un modo diverso: come motore agentico dentro un'applicazione desktop che sto sviluppando, pilotato via SDK da un processo Node.js. È un uso che spiega bene cosa lo rende speciale. In questa guida trovi cos'è Pi, come si installa, come si estende, cosa gli manca rispetto a Claude Code e OpenCode e quando secondo me conviene sceglierlo.

Cos'è Pi coding agent

Pi è un harness: lo strato di software che sta tra te e il modello linguistico e decide quali strumenti il modello può usare, come gestire il contesto e come salvare le sessioni. L'ha creato Mario Zechner, oggi il progetto è sotto l'organizzazione Earendil ed è rilasciato con licenza MIT.

Il monorepo contiene più pacchetti, ma i tre che contano sono:

  • pi-coding-agent: la CLI interattiva, cioè l'agente che usi nel terminale.
  • pi-agent-core: il runtime dell'agente con chiamate ai tool e gestione dello stato.
  • pi-ai: un'API unificata per parlare con più provider (Anthropic, OpenAI, Google e altri) con lo stesso codice.

La filosofia è dichiarata: il core resta minimo e le funzioni che gli altri agenti hanno già dentro si aggiungono con estensioni, skill o pacchetti di terze parti. L'idea è che sia l'agente ad adattarsi al tuo modo di lavorare, e non il contrario.

Come installare Pi coding agent

L'installazione richiede Node.js e si fa con npm:

npm install -g --ignore-scripts @earendil-works/pi-coding-agent

Il flag --ignore-scripts non è un dettaglio: disattiva gli script di installazione delle dipendenze, che sono uno dei punti d'ingresso degli attacchi alla supply chain npm. In alternativa c'è lo script ufficiale curl -fsSL https://pi.dev/install.sh | sh.

Poi entri nella cartella del progetto e lanci pi. Per collegare un modello hai due strade:

  • Chiave API: esporti la variabile d'ambiente del provider, per esempio ANTHROPIC_API_KEY.
  • Login: il comando /login gestisce le credenziali dei provider supportati.

La lista dei provider è lunga: Anthropic, OpenAI, Google Gemini e Vertex, Amazon Bedrock, Mistral, Groq, DeepSeek, OpenRouter, xAI, Hugging Face, OpenCode Zen e Go e molti altri. Per i modelli in locale c'è il supporto al router di llama.cpp, gestibile con il comando /llama.

Un consiglio pratico: se pensi di usare un abbonamento consumer invece di una chiave API, leggi prima i termini del provider, perché non tutti permettono l'uso del piano fuori dal loro client ufficiale.

Come si usa: le quattro modalità

Pi coding agent gira in quattro modi diversi, ed è qui che si capisce perché piace a chi costruisce strumenti:

  • Interattiva: la TUI nel terminale. Con @ cerchi i file del progetto, con !comando esegui un comando e mandi l'output al modello, con /model cambi modello a metà sessione.
  • Print o JSON: pi -p "richiesta" risponde ed esce, --mode json emette tutti gli eventi come righe JSON. Perfetto per script e pipeline CI.
  • RPC: pi --mode rpc parla JSONL su stdin e stdout, così lo integri da Python, Go o Swift.
  • SDK: importi createAgentSession da @earendil-works/pi-coding-agent e crei sessioni dentro la tua app Node.js.

Sessioni ad albero

Le sessioni sono salvate come file JSONL con una struttura ad albero. Con /tree torni a qualsiasi punto della conversazione e riparti da lì, con /fork crei una nuova sessione da un messaggio precedente, con /export la esporti in HTML.

Quando un agente sbaglia strada dopo venti passaggi, poter tornare indietro senza perdere il lavoro è la differenza tra ripartire da zero e correggere il tiro.

AGENTS.md e prompt di sistema

All'avvio Pi carica AGENTS.md (oppure CLAUDE.md) dalla cartella globale, dalle cartelle padre e da quella corrente, e li concatena. Se hai già un progetto impostato per Claude Code, le istruzioni vengono lette senza toccare nulla. Il prompt di sistema si sostituisce con .pi/SYSTEM.md o si estende con APPEND_SYSTEM.md.

Estensioni, skill e pacchetti: come si aggiunge ciò che manca

Qui sta il cuore di Pi coding agent. Le estensioni sono moduli TypeScript che possono registrare tool, comandi, scorciatoie, gestori di eventi e componenti della TUI. Con un'estensione puoi aggiungere sotto-agenti, plan mode, conferme prima dei comandi pericolosi, protezione di cartelle, checkpoint git o una compaction su misura.

Accanto alle estensioni ci sono:

  • Skill: seguono lo standard Agent Skills, quindi un SKILL.md scritto per Claude funziona anche qui. Si richiamano con /skill:nome o le carica l'agente quando servono. Se non le hai mai scritte, parti dalla mia guida per creare una skill da zero.
  • Prompt template: file Markdown riutilizzabili che si espandono con /nome.
  • Pi Packages: raccolte di estensioni, skill e template installabili con pi install da npm o da git.

Un dettaglio che mi è piaciuto subito: puoi chiedere a Pi stesso di scriverti l'estensione che ti manca, poi dai /reload e la usi senza riavviare.

Cosa manca rispetto a Claude Code (e perché è voluto)

Rispetto a Claude Code, Pi coding agent rinuncia di proposito ad alcune cose:

  • Nessun MCP di serie: l'autore preferisce strumenti da riga di comando descritti da una skill. Se ti serve MCP, lo aggiungi con un'estensione. Se vuoi capire cosa perdi, qui trovi la mia guida completa a MCP.
  • Nessun sotto-agente: si fanno con istanze multiple in tmux o con un pacchetto.
  • Nessun plan mode e nessuna to-do integrata: si scrive il piano in un file, oppure si installa un pacchetto.
  • Nessun sistema di permessi: Pi gira con i permessi dell'utente che l'ha lanciato.

Il punto da non sottovalutare: la sicurezza

L'ultimo punto è quello che chiedo di leggere due volte. Senza popup di conferma, un agente che ha accesso a bash può cancellare, spostare o inviare qualsiasi cosa l'utente possa toccare.

La documentazione ufficiale lo dice chiaramente e propone tre strade: l'estensione Gondolin che esegue i tool in una micro VM Linux, un container Docker per l'intero processo, oppure OpenShell con policy di sicurezza. Su una macchina con chiavi, clienti e dati veri, io non lo lancerei senza una di queste tre.

Pi coding agent vs Claude Code vs OpenCode

Sono le due domande più cercate su Pi, quindi le metto a confronto in modo diretto:

  • Claude Code: funziona subito, ha sandbox, permessi, hook, plugin e sotto-agenti pronti, e gira in terminale, desktop e IDE. Il limite è che usa solo i modelli Claude e il costo dipende dal piano: ne parlo in quanto costa Claude Code.
  • OpenCode: open source, decine di provider, una TUI molto curata e funzioni già pronte come MCP e sotto-agenti. È la via di mezzo tra libertà e comodità: trovi il confronto dettagliato in Claude Code vs OpenCode.
  • Pi: il più piccolo e il più controllabile. Prompt di sistema corto, quattro tool, tutto il resto è codice tuo. Richiede di saper scrivere un po' di TypeScript e di occuparti della sicurezza.

Esiste anche una quarta strada, opposta a Pi nella filosofia: DeepSeek Harness, dove tutto è un plugin e Claude Code diventa un sotto-agente. L'ho analizzato in DeepSeek Harness: Claude Code diventa un plugin.

Come lo uso io: Pi come motore dentro un'app

Il motivo per cui ho scelto Pi per il progetto su cui sto lavorando non è la CLI, è l'SDK. Mi serviva un loop agentico affidabile da incorporare in un'applicazione desktop, con i miei strumenti e le mie regole, senza portarmi dietro decisioni prese da altri.

L'impostazione che ho adottato è semplice da raccontare:

  • Pi gira in un processo Node.js separato, dietro un adapter: l'app non dipende direttamente dalla sua API, così un aggiornamento non rompe tutto.
  • I tool integrati di Pi sono disattivati: l'agente vede solo gli strumenti che registro io, ognuno con un controllo su cosa può fare.
  • Le azioni che modificano qualcosa (pubblicare, cancellare, fare un deploy) passano sempre da un diff e da un'approvazione umana.

Con Claude Code questo tipo di controllo non l'avrei: è un prodotto finito, pensato per essere usato così com'è. Pi invece è un componente. La regola che mi sono dato è "Pi gestisce l'agente, l'app gestisce il progetto".

Se stai valutando di integrare un agente AI in un gestionale o in un prodotto, è il tipo di lavoro che faccio nei progetti di automazione AI e di sviluppo web app.

Quando scegliere Pi coding agent

  • , se vuoi incorporare un agente nella tua applicazione via SDK o RPC, se vuoi usare qualsiasi modello (anche in locale) senza vincoli, se ti serve controllare ogni token che entra nel contesto.
  • , se ti piace costruirti gli strumenti e sai lavorare in TypeScript.
  • No, se vuoi un agente che funzioni subito, con permessi e sandbox già pronti: in quel caso Claude Code o OpenCode ti fanno risparmiare tempo.
  • No, se non hai modo di isolarlo in un container: meglio non lanciarlo su una macchina con dati sensibili.

Leggi anche

In sintesi

Pi coding agent non è l'agente più comodo del 2026, ed è proprio il suo punto. Quattro tool, un core piccolo, sessioni ad albero, SDK e RPC per incorporarlo dove vuoi: è il mattone giusto per chi vuole costruire un agente su misura, non per chi ne cerca uno pronto. L'unica condizione che non negozierei è l'isolamento: container o micro VM prima di dargli accesso a qualcosa di importante.

Se vuoi integrare un agente AI nel tuo software o nei processi della tua azienda e non sai da quale harness partire, scrivimi dal form contatti oppure a info@cosimo.dev: ti dico quale strada ha senso per il tuo caso.

Condividi questo articolo
Hai domande? Contattami

Pronto a dare vita al tuo progetto?

Contattami per discutere della tua idea e ricevere una consulenza gratuita.

Iniziamo insieme