Pi Durable, Earendil'in çökmelere dayanıklı yapay zeka ajanları kurmak için geliştirdiği deneysel bir TypeScript kütüphanesidir. 1 Ekim 2026'da Pi 1.0 ile birlikte yayınlandı. Her model isteği ve araç çağrısı, ajan bir sonraki adıma geçmeden kontrol noktası kaydeden küçük bir görev haline gelir. Süreç çökerse yeni bir süreç aynı depoyu açar ve son kontrol noktasından devam eder. Bu rehberde Pi Durable'ın ne yaptığını, kontrol noktası depolarını, araçlar için tekrar (replay) beyanlarını, hangi platformların onu desteklediğini ve kullanmadan önce bilmeniz gerekenleri anlatıyoruz.
Kısaca
Pi nedir, Pi Durable nereye oturur
Pi, Mario Zechner'in terminal için yazdığı küçük, açık kaynak bir kodlama ajanı olarak başladı. Bugün projeyi, Flask'ın yazarı Armin Ronacher'in kurucuları arasında olduğu Earendil sürdürüyor. Kod MIT lisansıyla earendil-works/pi deposunda yayında. Kodlama ajanı tek bir makinede çalışır ve tek bir kişi tarafından yönetilir.
Earendil'in duyurusuna göre Pi Durable, kodlama ajanları dahil her türlü ajan uygulaması için bir çatı. Kodlama ajanının yerini almıyor. pi-ai model katmanı gibi ortak parçaları kullanıyor ve her yerde çalışabilen, farklı uygulamalardan erişilebilen, çok uzun konuşmaları taşıyabilen ve arızalara dayanan ajanları hedefliyor. Birden fazla kişi aynı konuşmayı izleyip yönlendirebiliyor.
Pi Durable nasıl çalışır
Her adım, kontrol noktası olan bir görevdir
Earendil bunu şöyle özetliyor: Bir çalışmanın her adımı, devam etmeden önce kontrol noktası kaydeden bir görevdir. Model çağrısı bir görevdir. Araç çağrısı da. Uzun konuşmaları özetleyen sıkıştırma (compaction) bile arka planda bir görev olarak çalışır. Her değişiklik atomik bir kayıttır: ya tamamı saklanır ya da hiçbiri.
Paketin README dosyasına göre kaydı saklanmadan hiçbir şey kullanıcıya gösterilmez. Yeniden başlattıktan sonra resume() çağırırsınız ve zamanlayıcı yarım kalan işleri sürdürür.
Yarıda kalan model istekleri yeniden denenir
Model bir yanıtı akış halinde gönderirken süreç çökerse Pi kısmi yanıtı iptal edilmiş olarak saklar ve bunu başarısız bir deneme sayar. Bir bekleme süresinden sonra yeniden dener. Deneme hakkı kalmazsa çalışma "interrupted" nedeniyle yanıtsız biter.
Aynı istek iki kez işlenmez
Gönderdiğiniz her girdi bir requestId taşıyabilir. Bir istemci aynı isteği, örneğin bir ağ hatasından sonra, ikinci kez gönderirse Pi yeni bir iş başlatmak yerine var olanı döndürür.
Çökme döngüleri durdurulur
Süreci her seferinde çökerten bir görev aksi halde sonsuza kadar yeniden başlardı. Pi yeniden başlatmaları sayar ve varsayılan olarak beşinci seferden sonra görevi sonlandırır.
Araçlar için tekrar beyanları
Pi Durable'ın en önemli fikri budur. Bir araç çalışmadan önce Pi niyeti kaydeder. Süreç çağrının ortasında çökerse Pi aracı yeniden çalıştırıp çalıştırmayacağına karar vermek zorundadır. Tahmin yürütmez. Her araç bunu baştan söyler.
- replay: "safe" olarak işaretlenen bir araç çökmeden sonra yeniden çalıştırılır. Okuma işlemleri ve zaten idempotent olan işlemler için uygundur.
- Bu işaret olmayan bir araç otomatik olarak asla tekrarlanmaz. Model, o ana kadar kaydedilen çıktıyla birlikte "interrupted" sonucunu alır ve ne yapacağına kendisi karar verir.
Earendil'in örneği bir yayına alma (deploy) işlemi: Çökme yüzünden yarıda kalan bir deploy modele bildirilir ama asla tekrarlanmaz. README'ye dayanan sadeleştirilmiş bir örnek:
const siparisOku = defineTool({
name: "siparis_oku",
description: "Mağaza veritabanından bir siparişi okur",
parameters: obj({ orderId: str() }),
replay: "safe", // iki kez okumak zararsız, çökmeden sonra tekrar çalışır
execute: async (args) => {
/* ... */
},
});
const iadeEt = defineTool({
name: "iade_et",
description: "Bir siparişin ücretini iade eder",
parameters: obj({ orderId: str() }),
// replay beyanı yok: çökmeden sonra modele çağrının
// yarıda kaldığı bildirilir, tekrar çalıştırılmaz
execute: async (args) => {
/* ... */
},
});Tekrar güvenliği sizin sözünüzdür
Kontrol noktası depoları
Pi Durable, ajanı durumunun tutulduğu yerden ayırır. README şu seçenekleri listeliyor:
| Depo | Nerede | README'deki notlar |
|---|---|---|
| Memory | Süreç içinde | Kalıcı değil. Testler için uygun. |
| SQLite | Tek bir veritabanı dosyası (Node) | WAL modu; kayıtlar süreç çökmesine dayanır, ama en yenileri elektrik kesintisinde ya da sunucu arızasında kaybolabilir. |
| JSONL | Bir klasörde yalnızca eklemeli dosyalar | İsteğe bağlı olarak her kayıttan önce fsync. Tüm geçmişi bellekte de tutar, uzun ajanlar için README SQLite öneriyor. |
| IndexedDB | Tarayıcı | Aynı anda tek sahip; Web Lock kullanın. |
| Cloudflare Durable Object | Bir Durable Object'in SQLite deposu | Kayıtlar nesnenin depolama işlemleridir. |
Postgres gibi kendi deponuzu da yazabilirsiniz. Earendil bunun için bir uyumluluk test seti sunuyor. Türkiye'deki şirketler için bu önemli bir artı: SQLite, JSONL ya da kendi Postgres'inizle konuşma geçmişi ve araç sonuçları kendi altyapınızda kalır. Kontrol noktaları kolayca kişisel veri içerebildiği için bu, KVKK kapsamındaki saklama ve yurt dışına aktarım sorularını sadeleştirir.
Entegrasyonlar: Cloudflare, Temporal ve Rivet
Cloudflare Agents SDK
Cloudflare, Pi'nin bir Durable Object içinde çalıştırılmasını Agents SDK'daki PiHarness ile belgeliyor. Pi, konuşma kayıtlarını ve görevleri nesnenin SQLite veritabanında, "pi_" önekli tablolarda saklıyor. İş olduğu sürece her 30 saniyede bir alarm tetikleniyor. Nesne bellekten atılırsa ya da çökerse bir sonraki alarm onu yeniden başlatıyor ve çalışma devam ediyor.
Temporal (pi-temporal)
Temporal farklı bir yol seçti. 8 Ekim 2026 tarihli "The immortal life of Pi" yazısında Temporal, Pi kodlama ajanını bir grup Temporal çalışanı üzerinde koşturan pi-temporal projesini anlatıyor. Yazarlar makineler arası yedeklilik istiyordu ve Pi Durable'ın yerel SQLite deposunun süreç çökmelerine dayandığını, ama sunucu kaybına dayanmadığını belirtiyor. Bu yüzden pi-temporal, çalışma motoru olarak Temporal'ı kullanıyor. Proje, küçük bir Pi çatalı üzerine kurulu bir deney olarak tanımlanıyor.
Rivet
Rivet, 7 Ekim 2026'da pi() yardımcısının bir Pi Durable çatısını Rivet Actor içinde çalıştırdığını duyurdu. Her actor kendi SQLite veritabanında bir çatı saklıyor. Böylece çalışmalar çökme ve güncellemelerden sonra devam ediyor, boşta kalan ajanlar uykuya geçebiliyor.
| Entegrasyon | Nerede çalışır | Durum nerede | Durum |
|---|---|---|---|
| Cloudflare PiHarness | Agents SDK ile Durable Object | Nesnenin SQLite'ı (pi_ tabloları) | Pi Durable deneysel; API küçük sürümlerde değişebilir |
| Temporal pi-temporal | Temporal çalışanları | Paylaşılan oturum dosyaları ve Temporal | Pi çatalı üzerinde bir deney |
| Rivet pi() | Rivet Actor | Actor'ün SQLite'ı | Rivet API değişiklikleri bekliyor |
Kullanmadan önce bilmeniz gerekenler
- Deneysel. Earendil API'nin hâlâ değişebileceğini söylüyor. README de sürümler arasında haber verilmeden değişebileceği uyarısını taşıyor.
- Yerleşik onay adımı yok. Cloudflare'in dokümantasyonuna göre Pi Durable'da araç çağrıları için henüz bir onay ya da yetki adımı bulunmuyor. Bir hook ile araçları engelleyebilirsiniz, ama insan onaylı bir akışı kendiniz kurmanız gerekiyor.
- Yerel depolama sınırı. Tek makinedeki SQLite süreç çökmelerine dayanır, sunucu kaybına değil.
- Cloudflare tarafındaki sınırlar. 15 dakikadan uzun akış yapan tek bir model isteği kesilebilir. Oturum silme henüz desteklenmiyor, bu da KVKK kapsamındaki silme talepleri için önemli. Eski bir Pi sürümüne dönmek yeni konuşmaları okunamaz hale getirebilir, Cloudflare ileriye doğru düzeltme öneriyor.
- Şimdilik yalnızca TypeScript.
Nasıl başlanır
- 1Paketi kurun ve README'deki hızlı başlangıç örneğini bellek içi depolamayla çalıştırın.
- 2SQLite'a geçin, uzun bir görev başlatın, süreci kapatın ve resume() çağırın.
- 3Her aracı tek tek ele alın: tekrar güvenli mi, değil mi? Dış çağrılara tekrar anahtarı ekleyin.
- 4Bir onay akışınız olana kadar riskli araçları engelleyen bir hook ekleyin.
- 5Barındırma seçin: kendi sunucunuz, Cloudflare, Rivet ya da makineler arası yedeklilik gerekiyorsa Temporal.
Temporal, Restate, Inngest, DBOS ve LangGraph dahil genel tablo için dayanıklı yapay zeka ajanları rehberimizi okuyabilirsiniz. Cloudflare tarafı için Cloudflare Project Think yazımıza göz atın.
Halmob nasıl yardımcı olur
Halmob, dayanıklı ajanlar kuruyor: durumunu koruyan, hatadan sonra yeniden deneyen ve kaldığı yerden devam eden, saatler ya da günler süren işler için uzun soluklu ajanlar. Ajan platformu danışmanlığımızla Pi Durable, OpenClaw, Hermes Agent, Meta Muse, OpenAI Dots ya da Claude Duet'i seçmenize, kurmanıza ve şirkete yaymanıza yardımcı oluyoruz. Buna araçların tekrar güvenliği incelemesi ve Pi Durable'ın size bıraktığı onay akışı da dahil. Bizimle iletişime geçin.