Pi agent harness : un monorepo TypeScript pour agents LLM
Pi combine une API LLM indépendante du fournisseur, une boucle d'agent, une interface de terminal et une CLI de codage dans une boîte à outils TypeScript.
En bref
- De quoi s’agit-il ?
- Le README décrit trois paquets pour une API LLM unifiée, un moteur d'agent et un CLI d'agent de codage, plus une bibliothèque TUI, avec des conseils de conteneurisation et des contrôles de chaîne d'approvisionnement.
- À qui s’adresse-t-il ?
- Pi est un monorepo TypeScript sous licence MIT dont le README se concentre sur la structure des paquets, les options de conteneurisation, les étapes de compilation et les contrôles de chaîne d'approvisionnement. Les détails des API, les plateformes prises en charge et les propriétés de sécurité des modèles de sandbox ne sont pas couverts par le README et doivent être vérifiés dans la documentation sur pi.dev.
- Puis-je l’utiliser commercialement ?
- Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
- Est-il encore maintenu ?
- Oui. Le dépôt a reçu de nouveaux commits au cours des dernières 24 heures.
- En quel langage est-il écrit ?
- Principalement TypeScript, d’après les statistiques de langage de GitHub.
Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.
ANALYSE OPEN SOURCE APPROFONDIE
Les paquets qui composent Pi
Le README présente ce dépôt comme la maison du projet Pi agent harness, centré sur un agent de codage auto-extensible. Il liste trois paquets publiés : @earendil-works/pi-ai, une API LLM unifiée multi-fournisseurs couvrant OpenAI, Anthropic, Google et autres ; @earendil-works/pi-agent-core, le moteur d'agent gérant les appels d'outils et l'état ; et @earendil-works/pi-coding-agent, le CLI interactif d'agent de codage. Un quatrième paquet, @earendil-works/pi-tui, fournit une bibliothèque d'interface terminal avec rendu différentiel. Le README ne donne pas de détails d'API ni d'exemples d'utilisation pour ces paquets ; il faut les vérifier dans la documentation sur pi.dev/docs/latest ou dans le code source des paquets.
Les permissions restent à l'hôte
Le README dit explicitement ce que Pi ne fait pas : il n'inclut aucun système de permissions intégré pour restreindre l'accès au système de fichiers, aux processus, au réseau ou aux identifiants. Par défaut, l'agent s'exécute avec les permissions de l'utilisateur et du processus qui l'ont lancé. Pour des frontières plus fortes, le projet renvoie à la conteneurisation ou au sandboxing, avec trois modèles documentés : l'extension Gondolin, qui garde pi et l'authentification du fournisseur sur l'hôte tout en routant les outils intégrés vers une micro-VM Linux locale ; Docker simple, qui exécute tout le processus pi dans un conteneur local pour un isolement simple ; et OpenShell, qui exécute tout le processus pi dans un sandbox contrôlé par des politiques. Le README ne fait aucune déclaration sur les propriétés de sécurité de ces modèles.
Scripts de développement
Le développement dans le monorepo commence par npm install --ignore-scripts pour sauter les scripts de cycle de vie, suivi de npm run build, qui actualise les données de modèles et compile tous les paquets. npm run build:offline recompile avec les données de modèles existantes sans accès réseau. npm run check exécute lint, formatage et vérification de types. Les tests passent par ./test.sh, qui saute les tests dépendant des LLM en l'absence de clés API ; ./pi-test.sh exécute pi depuis les sources depuis n'importe quel répertoire. Le README ne précise pas le framework de test utilisé ni ne décrit la structure des répertoires en détail.
Compilation des binaires depuis les sources de release
Les releases GitHub incluent une archive source versionnée couverte par le fichier SHA256SUMS de la release. Le README documente la compilation de binaires autonomes : extraire l'archive et exécuter ./scripts/build-binaries.sh --offline-model-data --platform linux-x64 --out "$PWD/out". Le drapeau --offline-model-data compile avec les données de modèles fournisseurs générées incluses dans l'archive source, au lieu de les actualiser depuis les catalogues en ligne. Le script installe les dépendances, compile le monorepo, compile l'exécutable Bun et prépare ses ressources d'exécution. Les mainteneurs de paquets qui fournissent les dépendances séparément peuvent passer --skip-install --skip-deps. Le README ne liste pas d'autres plateformes prises en charge ni le contenu exact des ressources préparées.
Mesures de durcissement de la chaîne d'approvisionnement
Le projet traite les changements de dépendances npm comme des changements de code à réviser. Les dépendances externes directes sont épinglées à des versions exactes ; les paquets internes du workspace restent en plages de versions. .npmrc définit save-exact=true et min-release-age=2 pour éviter les dépendances publiées le même jour lors de la résolution npm. package-lock.json est la vérité de référence des dépendances, et un hook de pré-commit bloque les commits accidentels du lockfile sauf si PI_ALLOW_LOCKFILE_CHANGE=1 est défini. npm run check vérifie les dépendances directes épinglées, la compatibilité des imports TypeScript natifs et le shrinkwrap généré du coding-agent. Le paquet CLI publié inclut npm-shrinkwrap.json pour épingler les dépendances transitives pour les utilisateurs npm. Le CI installe avec npm ci --ignore-scripts, et un workflow planifié exécute npm audit --omit=dev et npm audit signatures --omit=dev. La génération du shrinkwrap a une liste d'autorisation explicite pour les scripts de cycle de vie des dépendances ; les nouvelles dépendances avec scripts de cycle de vie échouent aux vérifications jusqu'à révision. Le README n'indique pas la fréquence d'exécution du workflow d'audit.
Processus de contribution et partage de sessions
Les nouvelles issues et pull requests de nouveaux contributeurs sont automatiquement fermées par défaut, les mainteneurs examinant quotidiennement les issues fermées automatiquement. Les directives de contribution se trouvent dans CONTRIBUTING.md, et AGENTS.md contient des règles spécifiques au projet pour les humains et les agents. Les plans à long terme sont suivis dans des RFC sur rfc.earendil.com/keyword/pi/. Le README demande également aux utilisateurs de partager leurs sessions d'agent de codage open source ; l'outil de publication des sessions est badlogic/pi-share-hf, qui nécessite un compte Hugging Face, le CLI Hugging Face et pi-share-hf lui-même. Le README lie des exemples de sessions publiées mais ne décrit pas le format des données de session.
Licence · earendil works pi
Pi est sous licence MIT, copyright 2025 Mario Zechner. La licence accorde le droit d'utiliser, copier, modifier, fusionner, publier, distribuer, sous-licencier et vendre des copies du logiciel, à condition que l'avis de copyright et l'avis de permission soient inclus dans toutes les copies ou portions substantielles. Le logiciel est fourni en l'état, sans garantie d'aucune sorte, et le texte de licence ne dit rien sur le support, les garanties de sécurité ou les engagements de maintenance. Le README ne mentionne pas non plus si la documentation sur pi.dev relève de la même licence.
Conclusion éditoriale
Pi est un monorepo TypeScript sous licence MIT dont le README se concentre sur la structure des paquets, les options de conteneurisation, les étapes de compilation et les contrôles de chaîne d'approvisionnement. Les détails des API, les plateformes prises en charge et les propriétés de sécurité des modèles de sandbox ne sont pas couverts par le README et doivent être vérifiés dans la documentation sur pi.dev.
Notes de la communauté