Pi: agent kodujący bez smyczy. Testowaliśmy go obok Claude Code.

Dostałem wiadomość głosową przepisaną na tekst: „dowiedz się wszystkiego co konieczne o Hermes Pie, zainstaluj go też i przetestuj”. Przeczytałem to dwa razy. Nie miałem pojęcia, co to jest Hermes Pie.
Dyktowanie zjadło jedno słowo i dokleiło drugie. Chodziło o Pi, minimalny agent kodujący, o którym akurat czytałem dzień wcześniej. Zainstalowałem go tego samego wieczoru, w katalogu, który przez przypadek nazwałem po prostu „pi”. Test zajął mi kilka godzin, rozłożony na dwa wieczory. To, co z niego wyszło, jest ciekawsze niż sama pomyłka w transkrypcji.
Co to właściwie jest
Pi to terminalowy agent kodujący, autorstwa Mario Zechnera, dziś rozwijany przez firmę Earendil pod szyldem repozytorium na GitHubie. Strona projektu, pi.dev, opisuje go jako „minimalną uprząż agenta”. Konkuruje bezpośrednio z Claude Code i Codex CLI od OpenAI. Instaluje się jedną komendą (npm install -g @earendil-works/pi-coding-agent), a w terminalu przedstawia się skromnie: AI coding assistant with read, bash, edit, write tools.
To zdanie jest właściwie całą filozofią narzędzia. Cztery narzędzia, krótki prompt systemowy, i tyle. Armin Ronacher, twórca Flaska i współzałożyciel Sentry, napisał o Pi, że ma „najkrótszy prompt systemowy spośród wszystkich agentów, jakie widział”. Zamiast rozbudowanych, gotowych funkcji, Pi stawia na rozszerzenia pisane w TypeScript. Chcesz subagentów, planowanie, integrację z jakimś API? Napisz to sam, albo poproś agenta, żeby napisał to za Ciebie. Dokumentacja wprost zachęca, żeby rozszerzenia i skille powstawały w locie, pisane przez samego agenta, zamiast pobierane z gotowej listy.
Claude Code i Codex idą w drugą stronę. Mają wbudowane planowanie, subagentów, obsługę MCP, gotowe workflow. Pi celowo tego nie ma. To jest różnica między kupieniem gotowego mebla a kupieniem desek i wkrętarki. Jedno działa od razu. Drugie wymaga, żebyś wiedział, co robisz, ale zostawia Ci kontrolę nad każdą śrubką.
Zrobić to razem?
Wdrażam takie rzeczy w firmach na co dzień. Umów 30 minut, pogadamy konkretnie o Twoim przypadku. Bez prezentacji sprzedażowej.
Umów bezpłatną rozmowę →
Cztery tryby, jeden agent
Pi da się uruchomić na cztery sposoby, i to akurat jest rzecz, którą doceniam. Domyślny tryb to interaktywny terminal, podobny do tego, co znasz z Claude Code. Obok niego jest tryb print, flaga -p, który wykonuje jedno polecenie i kończy proces, bez zapisywania sesji. To ten, którego użyłem do pierwszych testów. Trzeci tryb zwraca strumień zdarzeń w formacie JSON, do zautomatyzowanych pipeline’ów, gdzie ktoś inny parsuje wynik. Czwarty to RPC, do osadzania Pi jako silnika wewnątrz własnej aplikacji, przez SDK.
Dla agencji, która buduje narzędzia dla ludzi, a nie tylko dla siebie, ten czwarty tryb jest najciekawszy. Claude Code ma swój Agent SDK do tego samego celu. Różnica jest w tym, ile musisz dobudować sam, zanim to ruszy produkcyjnie. W Pi odpowiedź brzmi: sporo.
Ten sam AGENTS.md co wszędzie indziej
Jedna rzecz mnie zaskoczyła pozytywnie. Pi czyta z katalogu projektu pliki AGENTS.md i CLAUDE.md, dokładnie te same, których używa Claude Code do zapisania kontekstu projektu, konwencji i zasad pracy. Jest nawet osobna flaga, --no-context-files, gdyby ktoś chciał to wyłączyć. W praktyce oznacza to, że jeśli masz już w repozytorium plik AGENTS.md napisany pod Claude Code albo Codex, Pi odczyta go bez żadnej dodatkowej pracy z Twojej strony. To jeden z niewielu momentów, gdzie różne agenty zaczynają się dogadywać zamiast rywalizować o własny, zamknięty format.
Instalacja i pierwszy test
Instalacja zajęła 25 sekund. npm install -g --ignore-scripts @earendil-works/pi-coding-agent, sto czterdzieści cztery paczki, gotowe. Komenda pi pojawia się od razu w terminalu, wersja 0.87.0.
Pierwszy test poszedł źle, i to akurat było pouczające. Odpaliłem pi --provider anthropic -p "krótkie pytanie testowe", licząc na klucz API z mojego pliku konfiguracyjnego. Odpowiedź: Your credit balance is too low to access the Anthropic API. Nie wina Pi, wina mojego konta, akurat ten klucz od dawna leżał bez doładowania. Przełączyłem się na klucz Google Gemini i tym razem zadziałało od razu, po polsku, bez żadnej dodatkowej konfiguracji poza jedną zmienną środowiskową.
Drugi test był ważniejszy. Utworzyłem plik z jednym słowem w środku i kazałem Pi go przeczytać i dopisać linijkę. Polecenie brzmiało: Przeczytaj plik test.txt i dopisz do niego nową linię „pi działa". Odpowiedź agenta: „Przeczytałem plik test.txt i pomyślnie dopisałem do niego nową linię”. Plik faktycznie miał dwie linijki. Zrobił to bez pytania o zgodę, bez okna z potwierdzeniem, bez niczego. Po prostu otworzył plik, zmienił go, zamknął. I tu dochodzimy do rzeczy, którą trzeba zrozumieć, zanim się to narzędzie w ogóle uruchomi na czymkolwiek poza pustym katalogiem testowym.
Brak smyczy to nie przenośnia
Claude Code przed każdą akcją, która coś zmienia, pyta Cię o zgodę. Codex ma systemowy sandbox i profile dostępu. Pi nie ma żadnego z tych mechanizmów. Dokumentacja mówi to wprost: narzędzia read/write/edit/bash oraz wszystkie rozszerzenia działają z pełnymi prawami użytkownika, który je uruchomił. Zaufanie do projektu lokalnego nie jest sandboxem, tylko flagą w konfiguracji. Twórcy sami zalecają Docker, maszynę wirtualną albo inną formę izolacji, jeśli chcesz zostawić Pi bez nadzoru.
To nie jest teoretyczne ostrzeżenie z dokumentacji, którego nikt nie czyta. Projekt ma na koncie cztery zgłoszone luki bezpieczeństwa, wszystkie opublikowane w czerwcu 2026. Jedna, oznaczona jako poważna, pozwalała na lokalną eskalację uprawnień przez przewidywalne ścieżki tymczasowe na współdzielonych serwerach Linux. Kolejna to race condition przy zapisie danych logowania, który mógł je ujawnić. Trzecia jest ciekawa z perspektywy agencji: Pi automatycznie ładował rozszerzenia z lokalnego katalogu projektu, bez pytania o zgodę. Innymi słowy, jeśli sklonowałbyś cudze repozytorium z podrzuconym złośliwym rozszerzeniem i odpalił tam Pi, agent sam by je uruchomił. Czwarta luka to XSS w eksporcie sesji do HTML. Wszystkie cztery są załatane od wersji 0.79.0, a obecna 0.87.0 leży poza znanymi podatnymi zakresami. Nie znalazłem żadnego śladu, że ktokolwiek je wykorzystał w praktyce.
Wymieniam to nie po to, żeby straszyć. Po to, żeby było jasne, na czym stoisz. Jeśli testujesz Pi tak jak ja, na jednorazowym pliku w pustym katalogu, ryzyko jest bliskie zeru. Jeśli chcesz go zostawić działającego bez nadzoru na czymś, co ma dostęp do prawdziwych danych, cudzego kodu albo kluczy API, potrzebujesz kontenera albo maszyny wirtualnej. To nie jest opcja do rozważenia później. To jest warunek wstępny.
Instalowanie cudzego kodu jednym poleceniem
Pi ma wbudowany menedżer rozszerzeń: pi install <source> pobiera pakiet i dopisuje go do konfiguracji, pi remove go usuwa, pi list pokazuje, co masz zainstalowane, a pi config otwiera panel w terminalu, gdzie włączasz i wyłączasz poszczególne zasoby z pakietów. Brzmi jak menedżer wtyczek WordPressa, i w praktyce działa podobnie. Ktoś publikuje rozszerzenie w TypeScript, Ty je instalujesz jedną komendą, ono dostaje dostęp do tych samych narzędzi co cały agent.
To wygodne, dopóki pamiętasz, co to oznacza w połączeniu z brakiem sandboxa. Zainstalowane rozszerzenie nie działa w piaskownicy osobno od Twojego systemu plików. Działa z takimi samymi prawami jak bash wywołany bezpośrednio przez agenta. Zanim zainstalujesz coś, czego nie napisałeś sam, warto przejrzeć kod, nie tylko opis w README.
Pi kontra Claude Code, Codex, i cała reszta
Pi wygrywa tam, gdzie liczy się kontrola i otwartość. Obsługuje ponad piętnaście dostawców modeli, od Anthropica przez OpenAI po Ollamę lokalnie na własnym sprzęcie. Zmiana modelu w trakcie sesji to jeden skrót klawiszowy, Ctrl+P. Sesje są drzewiaste, można się cofnąć, rozgałęzić rozmowę, wyeksportować ją i udostępnić przez gist. Narzut kontekstowy jest mały, bo Pi nie ładuje Ci na start żadnych gotowych mechanizmów, o które nie prosiłeś.
Ma też coś, co przypomina Skille z Claude Code, tylko chudsze. Flaga --skill ładuje plik albo katalog z instrukcjami dla agenta, podobnie jak --extension ładuje rozszerzenie w TypeScript. Różnica jest taka, że w Pi to Ty budujesz ten system od zera. W Claude Code dostajesz gotowy katalog tysięcy Skilli do zainstalowania i włączenia jednym poleceniem. MCP w Pi w ogóle nie istnieje jako wbudowana koncepcja, więc jeśli łączyłeś dotąd WordPressa z Claude przez MCP, w Pi musisz to odtworzyć sam przez rozszerzenie.
Claude Code i Codex wygrywają tam, gdzie liczy się to, że coś po prostu działa od razu, bez budowania własnego zestawu narzędzi. Mają dopracowane workflow, natywne planowanie, subagentów, integracje, które ktoś inny już przetestował za Ciebie. Na Hacker News w wątku o Pi ktoś ujął to tak, że to narzędzie daje „żywe narzędzia, które nie są kopią niczyjego innego zestawu”. Ładnie powiedziane, ale ta wolność ma cenę. Pojedyncze testy w internecie pokazują, że Pi potrafi zużywać wyraźnie mniej tokenów na to samo zadanie. Nie widziałem jednak jeszcze szerokiego, wiarygodnego benchmarku, który potwierdzałby przewagę jakości albo szybkości w praktyce, nie tylko w kosztach.
Ile to kosztuje i kto płaci
Tu jest różnica, którą łatwo przeoczyć. Claude Code i Codex działają dziś głównie w modelu abonamentowym, logujesz się kontem i płacisz stałą kwotę miesięcznie, niezależnie od tego, ile tokenów zużyjesz w rozsądnych granicach. Pisałem już o tym, który model wybrać i ile to kosztuje, i ten temat w Pi wygląda inaczej.
Pi domyślnie płaci per token, bezpośrednio dostawcy modelu, przez Twój własny klucz API. Jest też opcja logowania subskrypcyjnego przez /login dla wybranych dostawców, ale to nie jest domyślna ścieżka. Praktyczny skutek: jeśli Twój klucz Anthropica ma zerowe saldo, jak mój tego wieczoru, Pi po prostu nie odpowie, dopóki nie doładujesz konta albo nie przełączysz się na innego dostawcę. Nie ma tu żadnej warstwy pośredniej, która by to ukryła.
Z jednej strony to niewygodne, bo musisz sam pilnować salda na kilku kontach naraz, jeśli chcesz mieć zapasowego dostawcę. Z drugiej, dajesz mu pełną kontrolę nad tym, gdzie faktycznie lecą pieniądze. Możesz odpalić tańszy model do prostych poprawek, a droższy zostawić na trudniejsze zadania, komendą --model albo listą modeli do przełączania w locie przez --models. W abonamencie tej decyzji zwykle nie podejmujesz Ty, tylko dostawca.
Kto się tym w ogóle interesuje
Sprawdziłem to bezpośrednio w API GitHuba, zamiast wierzyć na słowo pierwszemu artykułowi, na który trafiłem. Pi ma dziś ponad sto osiem tysięcy gwiazdek i prawie czternaście tysięcy forków, przy repozytorium założonym w sierpniu 2025 roku. To tempo jest niezwykłe jak na projekt, który dopiero co przekroczył rok. Główny wątek na Hacker News, „Pi, a Minimal Terminal Coding Harness”, zebrał 608 punktów i ponad trzysta komentarzy. Na Reddicie, w społeczności zbudowanej wokół Claude Code, pojawił się wątek zatytułowany wprost: „zmień swojego agenta kodującego na Pi”.
Najmocniejszym dowodem na to, że to coś więcej niż zabawka, jest OpenClaw, projekt zbudowany na bibliotekach Pi, który zdjął z niego interfejs terminalowy i podłączył agenta bezpośrednio do kanałów komunikacji. Ronacher opisuje to jako skrajną wersję filozofii Pi, gdzie rozszerzenia i skille agent pisze sobie sam, zamiast pobierać je z gotowej listy. Software, który buduje software. Brzmi jak slogan, ale akurat w tym przypadku ma pokrycie w kodzie.
Nie jest to jednak historia bez rys. W repozytorium wisi dziś ponad dwieście otwartych zgłoszeń, część z nich dotyczy realnej wydajności. Jedno opisuje sześćdziesięciosekundowe zamrożenie interfejsu po naciśnięciu Escape w dużej sesji. Inne, że strumieniowana odpowiedź modelu potrafi renderować się z opóźnieniem i dużymi skokami, bo każda mała zmiana tekstu wywołuje pełne przerenderowanie Markdownu. To są dokładnie te bolączki, których spodziewasz się po projekcie, który rośnie szybciej, niż ktokolwiek zdąży go dopracować. Projekt jest wciąż przed wersją 1.0.
Samo repozytorium zmieniło po drodze właściciela. Wcześniejsze wersje pakietu były publikowane jako @mariozechner/pi-coding-agent, dziś to @earendil-works/pi-coding-agent. Przejście do firmy budzi u części społeczności pytania o przyszłą komercjalizację. Kod pozostaje na licencji MIT, więc na razie to bardziej temat do obserwowania niż realny problem.
Co z tym zrobić
Od kilku lat prowadzę agencję important.is, i w praktyce oznacza to, że zanim polecę jakiekolwiek narzędzie zespołowi, sam je najpierw rozkładam na czynniki pierwsze. Pi przeszedł test instalacji i pierwszego kontaktu bez problemu. Zainstalował się w 25 sekund. Odpowiedział po polsku, poprawnie przeczytał i zmienił plik, którego dotknąłem.
Ale to, co po drugiej stronie tej łatwości, to narzędzie bez żadnych barierek. Nie ma tu okienka, które zapyta, czy na pewno chcesz usunąć plik. Jest agent z pełnym dostępem do Twojego konta i Twojego dysku, i to Ty decydujesz, gdzie postawić granicę. Dla kogoś, kto lubi mieć wszystko pod kontrolą i nie boi się pisać własnych rozszerzeń, to może być najlepszy terminalowy agent, jakiego dziś dostaniesz za darmo, w sensie samej licencji. Dla kogoś, kto chce włączyć narzędzie i zapomnieć o nim, Claude Code w dobrze dobranym terminalu zrobi dziś mniej niespodzianek.
Ja zostawiam Pi zainstalowanego. W izolowanym katalogu, na razie bez dostępu do niczego, co mogłoby zaboleć, jeśli coś pójdzie nie tak. Zobaczymy, czy za pół roku będzie to jeszcze eksperyment, czy coś, czego używam codziennie.
Zostań w pętli
Nowe artykuły, narzędzia i case study prosto na maila. Bez spamu, bez sprzedaży.