Dwie nogi już są wydane
Agent Buzz to para kluczy Nostr, a to, co to daje, opisałem w tekście Twój agent to klucz. Tożsamość już podróżuje: atestacja, którą podpisuję nad kluczem publicznym agenta, jedzie w każdym publikowanym przez niego zdarzeniu, a przekaźnik sprawdza podpis agenta, mój podpis i moje członkostwo, zanim ktokolwiek zobaczy choć słowo. Ta weryfikacja przechodzi z dowolnej maszyny. Nic w niej nie wie ani nie obchodzi go, gdzie proces się obudził.
Pamięć też już podróżuje. Wspomnienia agenta to zaszyfrowane zdarzenia na przekaźniku, a klucz deszyfrujący wywodzi się z klucza prywatnego agenta i mojego klucza publicznego, więc pamięć rdzeniowa jest pobierana i wstrzykiwana do każdej nowej sesji, gdziekolwiek akurat jest klucz. To, co podąża za kluczem, przeżywa maszynę. Dwie nogi stołka są wydane już dziś. Trzecia wciąż jest przykręcona do mojego laptopa.
Trzecia noga jest przyklejona do maszyny
Trzecią nogą są poświadczenia. Token subskrypcji Claude, ten, który generuje claude setup-token, żeby agent obciążał mój plan zamiast licznika API, żyje w środowisku jednej maszyny. Tak samo klucze API narzędzi. Tak samo uprawnienia serwerów MCP. Tożsamość jest przenośna, pamięć jest przenośna, a wszystko, czego agent potrzebuje, żeby faktycznie pracować, jest przyszyte do tej skrzynki, którą skonfigurowałem jako pierwszą.
A oto wyznanie z naszego własnego wdrożenia. Klucz API narzędzia trafił do jednego z naszych agentów przez ręcznie napisany skrypt opakowujący, przemycony za plecami produktu. Żadne miejsce nie potrafiło wylistować tego uprawnienia. Nic nie mogło go audytować. Nic nie mogło go zrotować. Działało, i to jest najgorsze, bo obejście, które działa po cichu, staje się infrastrukturą. Uprawnienia, którego nie możesz wylistować, nie możesz też odwołać.
Przy rotacji uciążliwość zamienia się w awarię. Ponownie uruchamiam /login na laptopie i token, który trzyma każda zdalna kopia każdego agenta, umiera, po cichu, a nic mi nie mówi, kto utknął. Noga tożsamości leczy się sama. Noga pamięci leczy się sama. Noga poświadczeń po prostu się łamie, maszyna po maszynie.
Pęk kluczy: rotacja to ponowna publikacja
NIP-AK, naszkicowany dziś, to trzecia noga: pęki kluczy agentów jako zaszyfrowane zdarzenia na przekaźniku, których autorem jest właściciel. Każde uprawnienie ma własny adres, slug w rodzaju key/claude-sub albo key/mcp/blotato, a adresy są zaślepione HMAC-iem, więc przekaźnik niczego się nie dowiaduje z tego, co przechowuje. Uprawnienia mają typy: env, oauth, mcp, file. A lista uprawnień MCP nie jest wskazówką, ona jest listą dozwolonych narzędzi agenta.
Rotacja to ponowna publikacja. Publikuję nowy head pod tym samym adresem i każdy konsument się do niego zbiega. Watcher po stronie właściciela zauważa lokalne /login i publikuje ponownie w ciągu kilku sekund, bez żadnej ceremonii z mojej strony. Konsumenci pobierają heady przy starcie, trzymają aktywną subskrypcję na push, a przy każdym błędzie uwierzytelniania odpytują heady ponownie przed kolejną próbą, więc wykonawca, który utknął, leczy się sam. Agent, który przespał pięć rotacji, budzi się do jednego heada, bez protokołu nadrabiania. A konsumenci odrzucają heady starsze od ostatnio zaakceptowanego, więc odtworzone stare uprawnienie nikogo nie cofa. Odwołanie to rotacja do nagrobka.
Jedna zasada podtrzymuje cały model: agenci nie mogą być autorami zdarzeń pęku kluczy. Pęk kluczy jest mój do zapisu, a ich do odczytu. Przejęty agent nie może przyznać sobie nowego klucza, szerszej listy dozwolonych ani cudzych poświadczeń. Może wydawać to, co mu przyznałem, dopóki nie zrotuję. A rotacja to jedna publikacja.
Co pokazuje panel
Specyfikacja koduje regułę UX, i to właśnie ta reguła jest sednem: żadne poświadczenie nie trafia do agenta inaczej niż przez pęk kluczy, a pęk kluczy jest widoczny. Każdy agent dostaje panel: każde uprawnienie, skąd pochodzi, kiedy było ostatnio rotowane i jak świeża jest kopia każdego wykonawcy. Źródła, które da się synchronizować, to pola wyboru per agent. Zaznacz jedno, a subskrypcja podąża za tym agentem; odznacz, a następna rotacja zostawi agenta w tyle.
Przyłóż ten panel do skryptu opakowującego z naszego własnego wdrożenia. Przemycony klucz nie miał nigdzie swojego wiersza, a cała klasa takich obejść umiera, bo nie zostaje im już żadne miejsce do życia. To, co pokazuje panel, jest tym, co agent ma. Jeśli czegoś nie ma w panelu, agent tego nie ma.
Dlaczego to jest cała gra
Twój agent to dwa klucze: klucz tożsamości i klucz inferencji, i oba podróżują. Klucz tożsamości podpisuje jego pracę. Klucz inferencji płaci za jego myślenie. Wszystko inne, pamięć, narzędzia, członkostwo, wisi na jednym z tych dwóch.
Klucz inferencji to także ekonomia. Subskrypcja Claude za $200 miesięcznie daje o rząd wielkości więcej inferencji niż ta sama kwota wydana po cenach API, a przepalanie pieniędzy, które zabiło całą serię startupów agentowych, polegało na odsprzedawaniu inferencji z API poniżej cen subskrypcji. Systemy zbudowane na takim przepalaniu nie mogą konkurować z agentami, którzy wydają subskrypcję swojego właściciela. Okna limitów nie są uciążliwością. To naturalny budżet na człowieka.
Z trzema nogami pod spodem maszyna przestaje mieć znaczenie. Utwórz agenta gdziekolwiek: na mac mini na moim biurku, w kontenerze floty, w podzie Kubernetes, w sandboksie Fountain. Tożsamość podąża za kluczem. Pamięć podąża za kluczem. Teraz subskrypcja i narzędzia też podążają za kluczem. Maszyna jest jednorazowa. Traktuj ją w ten sposób.