Compartment nedir ve nasıl kullanılır?
Compartment ile aracı belleğini yerel makinede şifreli tutun. Verilerin ağa çıkmadığı çevrimdışı modelin güvenlik sınırlarını ve anahtar kaybı durumunda yaşananları inceleyin.
Compartment'ın farkı nedir
Compartment, her kaydı oluşturulduğu makinede şifreli tutan ve hiçbir ağ servisiyle iletişim kurmayan bir aracı bellek deposudur. İki temel tercih, onu diğer aracı bellek çözümlerinden ayırır. Kasa, yalnızca parolanızla açılan tek bir mühürlü dosyadır ve gömme (embedding) adımı yerel olarak çalışır; bu sayede bir belleğin metni, vektöre dönüştürülmek üzere hiçbir yere gönderilmez. 4.6.0 sürümü 10 Ağustos 2026 tarihinde yayımlanmıştır, lisansı Apache-2.0'dır ve PyPI üzerinden kurulur. Daha yeni sürümler yayımlanmıştır ve 12 Ekim 2026 itibarıyla PyPI üzerindeki en güncel sürüm, 30 Eylül 2026 tarihli 4.11.0'dır. Bu kılavuz 4.6.0 sürümüne sabitlenmiştir.
Bu bir tehdit modeli iddiasıdır, bu nedenle kılavuz bunu bu şekilde ele alır. Beklemedeki verinin şifrelenmesi (encryption at rest) ve çevrimdışı tasarım, belirli bir liste öğesini korur. Diğer noktaları açık bırakır ve bu boşluk, ikinci gün sorunlarının yaşandığı yerdir.
Bu kılavuz, 12 Ekim 2026 tarihinde son kez gözden geçirilen 4.6.0 sürümü için projenin kendi belgelerini takip eder. Compartment; bir masaüstü uygulaması, macOS'te bir menü çubuğu öğesi ve Windows'ta bir bildirim alanı simgesi ile birlikte komut satırı aracını sunar; parola istemi otomatik bir container üzerinden yönetilemez. Aşağıdakileri burada ölçülmüş bir davranış olarak değil, belgelenmiş davranış olarak kabul edin. Gerçek verilerle kullanmadan önce yedek bir makinede test edin.
Beklemede olan verilerin şifrelenmesi gerçekte neyi korur
Kasa, AEAD (ilişkili verilerle doğrulanmış şifreleme) algoritması olan XChaCha20-Poly1305 ile mühürlenmiştir; ana anahtarı tutan anahtar yuvaları ise yavaş çalışacak ve yüksek bellek tüketecek şekilde tasarlanmış bir parola özetleme fonksiyonu olan Argon2id ile sarmalanmıştır. Buradan iki sonuç çıkar. Çalınmış bir diskteki, eski bir yedekteki veya bir destek talebine eklenmiş dosya kopyası, sadece anlamsız baytlardan ibarettir. Ayrıca, dosya açılırken tek bir bitin bile değişmiş olması doğrulamayı başarısız kılar; böylece veri bozulması, yanlış bir sonuç yerine belirgin bir hata mesajına dönüşür.
Gömme vektörleri (embedding vectors) de şifrelenmiştir ve bu durum kulağa geldiğinden çok daha önemlidir. Bir gömme, bir özet (hash) değildir. Gömme tersine çevirme üzerine yapılan araştırmalar, yalnızca vektörden orijinal metnin okunabilir parçalarının kurtarılabildiğini göstermiştir; bu nedenle şifreli bir veritabanının yanında duran düz metin bir vektör dizini, veritabanını açık bırakmakla eşdeğerdir. Compartment, diske hiçbir düz metin dizini yazmaz.
Silme işlemi gerçek bir silmedir. Her kayıt kendi anahtarını taşır ve compartment forget --shred bu anahtarı yok eder; dolayısıyla geride kalan şifreli metin, siz dahil hiç kimse tarafından şifresi çözülemez hale gelir. Bunu, genellikle üzerine yeni veri yazılana kadar boş sayfalarda okunabilir durumda kalan, veritabanı dosyasından silinmiş bir satırla kıyaslayın.
Çevrimdışı çalışma ise işin diğer yarısıdır. Hiçbir veri yüklenmez; bu sayede anılarınızı tutan bir sağlayıcı hesabı veya onları sızdırabilecek bir API anahtarı bulunmaz.
Compartment'ın korumadığı durumlar
İddia, kasa sınırında sona erer ve bu sınır göründüğünden daha yakındır.
Ajan düz metni okur. Recall bir belleğin şifresini çözer ve metni ajana iletir. Eğer bu ajan barındırılan bir model ise, bellek, bağlam penceresindeki diğer her şey gibi bir sonraki istemin içinde model sağlayıcısına gider. Beklemedeki verinin şifrelenmesi dosyayı korur. Ancak geri çağırma işlemini korumaz. Bu nedenle yapay zeka ajanlarından sırları saklama konusundaki kurallar, depo şifreli olduğu için gevşemez: bellek olarak kaydedilen bir parola, otomatik olarak bir istemin içine yapıştırılmasını sağladığınız bir paroladır.
Çalışan bir makinede kilidi açık kasa, açık demektir. Projenin güvenlik notları bunu açıkça belirtir. Kasanın kilidi açıkken, ana anahtar ve çalışma seti RAM'de bulunur; Python bir arabelleğin temizlendiğini garanti edemez ve swap veya hazırda bekletme görüntüsü bu belleği diske yazabilir. Kullanıcınız olarak çalışan kötü amaçlı yazılımların şifreyi kırmasına gerek yoktur, çünkü zaten kilidi açık olan kasaya sorgu gönderebilirler.
Çağıran kimliği beyana dayalıdır. İsim alanları (namespace) çağıran başına kısıtlanabilir, ancak çağıranın adı ana bilgisayar sürecinden gelir; bu nedenle kendi adı hakkında yalan söyleyen bir ana bilgisayar, talep ettiği yetkileri alır. İsim alanı izinleri bir organizasyonel yapıdır, düşmanca bir yerel programa karşı bir güvenlik sınırı değildir.
Parçalama (shredding) kopyalara ulaşamaz. forget --shred mevcut dosyanın içindeki anahtarı yok eder. Parçalamadan önce alınan bir yedek, o kaydı hala tutar ve o günün parolasıyla açılmaya devam eder.
Zayıf bir parola tartışmayı bitirir. Argon2id her tahmini maliyetli hale getirir. Ancak bir kelime listesinde yer alan bir parolayı kurtarmaz.
Compartment'ı sabitlenmiş bir sürümden kurun
Compartment, Python 3.11 veya daha yenisini gerektirir. Proje hızlı ilerlemektedir; 26 Temmuz ile 10 Ağustos 2026 arasında PyPI üzerinde 23, 12 Ekim 2026'ya kadar ise 35 sürüm yayımlanmıştır. Bu nedenle kurulum yaptığınız gün güncel olanı almak yerine sürümü sabitleyin.
python3 --version
pip install "compartment==4.6.0"
compartment --version
compartment initcompartment --version, sabitlediğiniz sürümü yazdırmalıdır. Eğer kabuk compartment: command not found yanıtını verirse, kurulum dizini PATH değişkeninizde değildir; çoğu sistemde bu dizin ~/.local/bin şeklindedir. pipx install compartment==4.6.0 ve uv tool install compartment==4.6.0, kendi yollarını yöneterek bu durumun önüne geçer.
compartment init, iki kez parola ister ve hiçbir karakteri ekrana yansıtmaz. O parola tek anahtardır. Proje, kasıtlı olarak hiçbir parola veya kurtarma ifadesi üretmez: yazılımın elinde sizin sahip olmadığınız hiçbir kimlik bilgisi yoktur.
Herhangi bir şeyi ona bağlamadan önce sonucu kontrol edin.
compartment statusSağlıklı bir kasa, kilidinin açık olduğunu bildirir. Eğer kilitli olduğunu bildirirse, compartment unlock komutunu çalıştırın ve parolayı girin. Yeniden başlatma işlemi kasayı tekrar kilitler, çünkü kilidi açık tutan kimlik bilgisi her önyüklemede oluşturulan bir sırra bağlıdır. macOS üzerinde compartment unlock --keychain, bu kimlik bilgisini sistem anahtar zincirinde (keychain) saklayarak yeniden başlatma sonrasında da geçerli kalmasını sağlar.
Verinin fiziksel konumu
Varsayılan vault ~/.compartment/memory.vault dizinindedir. Herhangi bir komutta --vault PATH bayrağını kullanarak veya COMPARTMENT_VAULT ortam değişkeni ile farklı bir konum belirtebilirsiniz.
Bu tek dosya, tüm veri deposunu oluşturur. Dosya; format sürümünü ve Argon2id anahtar yuvalarını içeren bir başlık, ardından şifreli veri bloğu ve yeni anılar eklendikçe sona eklenen günlük kayıtları ile açılır. Her günlük kaydı, uzunluğu ve bu uzunluğun CRC (döngüsel artıklık denetimi) değeri ile çerçevelenir; böylece bir çökme nedeniyle yarıda kesilen yazma işlemi, veri olarak okunmak yerine eksik bir kayıt olarak tanımlanır. Sıkıştırma işlemi vault'u serileştirir, geçici bir dosyaya yazar, fsync ile diske yazılmasını garanti eder ve ardından dosyayı asıl konumuyla değiştirir; bu sayede bir okuyucu hiçbir zaman yarı yazılmış bir vault görmez.
Bunun faydalı sonucu şudur: Bir yedekleme betiği tam olarak tek bir yolu kopyalar. Zahmetli sonucu ise şudur: Dosya üzerinde grep çalıştıramazsınız ve bir metin düzenleyicide onarım yapamazsınız. cat ile okuyabileceğiniz ve git üzerinde saklayabileceğiniz anılar istiyorsanız, Memmy'nin düz yerel bellek dosyaları tam tersi bir tercih sunar. Korktuğunuz şeyin çalınan bir dizüstü bilgisayar mı yoksa bozulan bir araç mı olduğuna bağlı olarak her iki yöntem de makuldür.
compartment uninstall yazılımı kaldırır ancak vault dosyasını tutar. --purge bayrağını yalnızca gerçekten istediğinizde kullanın.
Bir ajana entegre etme
Tek bir komut, desteklenen bir istemciyi sisteme bağlar.
compartment integrate --list
compartment integrate claudeBir MCP (model context protocol) sunucusu girişi yazan ve ~/.claude/settings.json içine bir PostToolUse kancası ekleyen Claude Code için; önce dosyanın yedeği alınır, ~/.claude/skills/ altında bir /compartmentalize yeteneği kurulur ve ~/.claude/CLAUDE.md dosyasına, ajana Compartment'ın daha önce kullandığı dosya tabanlı belleğin yerini aldığını bildiren yönetilen bir blok eklenir. Her iki tarafı da doğrulayın:
compartment hook status
compartment recentSunucuyu manuel olarak kaydetmek için:
claude mcp add --scope user compartment -- \
compartment --vault ~/.compartment/memory.vault --caller claude-code serveMCP destekli diğer tüm ana bilgisayarlar, aynı sunucuyu kendi çağırıcı adlarıyla kullanabilir.
{ "mcpServers": { "compartment": {
"command": "compartment",
"args": ["--vault", "/path/to/memory.vault",
"--caller", "your-agent-name", "serve"] } } }Her ana bilgisayara farklı bir --caller değeri atayın. Bu değer, denetim günlüğünün kaydettiği etiket ve ad alanı izinlerinin yazıldığı anahtardır; bu nedenle paylaşılan bir isim her ikisini de işlevsiz kılar.
Eğer Claude Code halihazırda kendi bellek dosyalarına veriler yazıyorsa, compartment import-claude --dry-run komutu hiçbir şey taşınmadan önce nelerin taşınacağını gösterir. Önce Claude Code'un bellek dosyalarında neleri tuttuğu konusunu okuyun; çünkü bir yıllık notu yeni bir kasaya aktarmak, bellek deposunun kimsenin tutmak istemediği şeylerle dolmasına neden olur.
Yerel bir kasanın hızı nedir
Bunlar, projenin kişisel boyutlu bir kasa için yayınladığı rakamlardır. Bu veriler kendi dokümantasyonundan alınmıştır, burada yapılan bir çalışmaya ait değildir.
Bu grafiğin arkasındaki veriler
[
{
"label": "Store one memory, end to end",
"latency_ms": 40
},
{
"label": "Embed one memory, bundled model",
"latency_ms": 25
},
{
"label": "Hybrid search, median",
"latency_ms": 11.6
},
{
"label": "Vector search at 20k records, p95",
"latency_ms": 0.68
}
]Bir belleği depolama süresi 40 ms olarak belirtilmiştir; yirmi bin kayıt üzerinde yapılan bir vektör aramasının 95. yüzdelik dilimdeki süresi ise 0.68 ms'dir. Projenin belleği yerel tutma konusundaki argümanı aritmetiktir: barındırılan bir bellek API'sine yapılan tek bir ağ gidiş-dönüş süresi, genellikle buradaki tam bir hibrit aramanın 11.6 ms'lik medyan süresinden daha maliyetlidir.
Arama rakamlarını iki tasarım detayı açıklar. Yirmi bin kaydın altında Compartment, sorguyu her bir vektörle karşılaştırır; bu nedenle geri çağırma (recall) yaklaşık değil, yapı gereği tamdır. Bu sayının üzerinde ise, hız için küçük bir geri çağırma kaybını göze alan yaklaşık bir indeks olan HNSW (hierarchical navigable small world) yöntemine geçer. Kasa ayrıca embedding modelinin SHA-256 özetini (hash) kaydeder ve farklı bir model altında açılmayı reddeder; çünkü iki farklı modelden gelen vektörler hiçbir hata görünmeden karşılaştırılabilir ve dönen puanlar hiçbir anlam ifade etmez.
Yedekler ve gelecek yıl da açabileceğiniz bir kopya
Kilitli bir kasa tek bir taşınabilir dosyadan ibarettir, bu nedenle onu taşımak bir kopyalama işlemidir.
compartment lock
scp ~/.compartment/memory.vault other-machine:
compartment --vault memory.vault unlockÖnce kilitleyin. Ajan yazma işlemi yaparken kopyalamak, bir günlük kaydını ekleme sırasında yakalayabilir. CRC çerçeveleme, okuyucunun bu sondaki parçayı atlamasına izin verse de, içindeki bellek kaybolur. compartment lock --sign, dosyayı bir Ed25519 manifestosu ile mühürler; böylece alıcı makine, parola bilgisine sahip olmadan kopyanın sağlam ulaştığını doğrulayabilir.
Dosya zaten mühürlü olduğu için, sıradan bulut depolama alanları bunun için kabul edilebilir bir yerdir. İşte "encryption at rest" (durağan veri şifreleme) yönteminin doğrudan faydasını gördüğünüz nokta budur: yedekleme hedefi hiçbir zaman bir bellek içeriğini görmez.
İki uyarı. Shredding (parçalama) işlemi yedeklere ulaşmaz; bu nedenle bugün kriptografik olarak parçaladığınız bir kayıt, geçen haftanın parolasını bilen herkes için geçen haftanın kopyasında okunabilir kalır. Ayrıca compartment export --plaintext, tüm kasayı şifrelenmemiş olarak yazar. Bu, başka bir sisteme geçiş yapmak için doğru araçtır ancak ~/Downloads içinde bırakılacak yanlış dosyadır.
Az sayıda kopya tutun ve bunları tarihleyin. Bir bellek deposu, kimse temizlemediğinde bir yük haline gelir; eski ajan belleklerinin geri almayı sessizce nasıl zehirlediği konusundaki argüman da budur.
Anahtar yönetimi, rotasyon ve ikinci faktör
compartment rekey
compartment 2fa enable
compartment 2fa statusrekey, mevcut dosyanın anahtar yuvasındaki ana anahtarı yeniden paketleyerek parolasını değiştirir. Eski kopyalar eski parolayı korur; çünkü bu baytlar değişiklikten önce mühürlenmiştir ve geriye dönük bir düzenleme yapılmaz. Kopyaları da rotasyona dahil edin veya kullanımdan kaldırılmış bir parolanın hala bir şeyleri açabileceğini kabul edin.
2fa enable, anahtar türetme sırasında parola ile birleştirilmek üzere ikinci bir faktör olarak bir anahtar dosyası ekler; böylece kasayı açmak için her ikisi de gerekir. Bu durum, kaybedebileceğiniz öğelerin sayısını da ikiye katlar. Anahtar dosyasını, kasanın bulunduğu makinede tutmayın.
Betikler ve CI (sürekli entegrasyon) süreçleri için parola, COMPARTMENT_PASSPHRASE ortam değişkeni aracılığıyla iletilebilir; unlock --passphrase-stdin ise parolayı bir pipe üzerinden okur. Pipe yöntemini tercih edin. Ortam değişkeni, aynı kullanıcıya ait diğer süreçler tarafından okunabilir ve genellikle iş günlüklerine (job logs) yansır.
Denetim geçmişi hash zinciri ile korunur; compartment audit verify bu zinciri tarar ve kopan ilk halkayı raporlar. Her geri yükleme işleminden sonra bu komutu çalıştırın; çünkü sessizce kesilmiş bir dosya ancak o zaman kendini belli eder.
Parola kaybedildiğinde ne olur
Hiçbir şey olmaz; sistemin tasarımı bu şekildedir. Parola sıfırlama, kurtarma ifadesi veya başvurulacak bir merci yoktur; çünkü anahtarın bir kopyası hafızanız ve isteğe bağlı olarak kullandığınız anahtar dosyası dışında hiçbir yerde bulunmaz. Kasa, rastgele baytlardan oluşan bir dosya olarak kalmaya devam eder.
Bu nedenle kurtarma planı, kasa için değil, parola için oluşturulmalıdır. Parolayı compartment init komutunu çalıştırdığınız gün bir parola yöneticisine kaydedin. Ardından test edin: kasayı kilitleyin, yalnızca not ettiğiniz bilgileri kullanarak kilidi açın ve bu işlem başarılı olduktan sonra bir aracın kasayı doldurmaya başlamasına izin verin.
Compartment mı yoksa bellek sunucusu mu
Compartment, tasarım gereği tek makine odaklıdır. Makineler arasında paylaşım yapmak, kilitli dosyayı kopyalamayı veya dışa/içe aktarmayı gerektirir. Aynı makinedeki birden fazla aracı, bir danışma dosyası kilidi (advisory file lock) yazma işlemlerini sıraya dizdiği için aynı kasayı aynı anda kullanabilir. Belgelerde iki makinenin aynı dosyaya yazmasıyla ilgili bir yöntem tanımlanmamıştır; bu nedenle bir dizüstü bilgisayarı ve bir iş istasyonunu ağ paylaşımı veya senkronizasyon klasörü üzerindeki aynı kasaya yönlendirmeyin.
Birden fazla makinenin aynı anda aynı belleğe ihtiyaç duyması, bir sunucu sorunudur. VPS üzerinde kendi kendine barındırılan bir Mem0 bellek sunucusu bu sorunu çözer: tek bir uç nokta, birçok istemci ve dizüstü bilgisayardan daha uzun ömürlü bir bellek. Maliyetin açıkça belirtilmesi gerekir. Bu sunucu, depoladığı verileri okuyabilen bir süreç çalıştırır; dolayısıyla tehdit modeliniz artık VPS'i ve API'sine erişebilen herkesi kapsar.
Gerçekten korktuğunuz kayba göre seçim yapın. Eğer bu, çalınan bir dizüstü bilgisayar veya notlarınızı okuyan bir sağlayıcı ise, şifreli yerel kasa daha güçlü bir çözümdür. Eğer sorun, makine değiştirdiğiniz anda her şeyi unutan bir aracı ise, sunucu daha uygundur.
FAQ
Compartment'ın şifrelemesi aslında neyi korur?
Dosyayı korur. Kasa, XChaCha20-Poly1305 ile mühürlenmiştir, anahtar yuvaları Argon2id ile sarılmıştır ve gömme vektörleri de şifrelenmiştir; bu sayede çalınan bir disk veya eski bir yedek, okunabilir hiçbir şey içermeyen baytlardan ibaret kalır. Çalışan bir makinede kilidi açık bir kasayı korumaz, çünkü kasa açıkken ana anahtar RAM'de tutulur. Ayrıca, bir bellek geri çağrıldıktan sonra aracın onu düz metin olarak nasıl kullandığını denetlemez.
Compartment çevrimdışıysa, belleklerim model sağlayıcısından gizli kalır mı?
Sadece geri çağrılana kadar. Depolama ve arama işlemleri ağ olmadan gerçekleşir ve gömme modeli yerel olarak çalışır; bu nedenle yazma sırasında makineden hiçbir şey çıkmaz. Okuma sırasında aracı düz metni alır; eğer bu aracı barındırılan bir model ise, bellek isteme (prompt) girer ve bağlam penceresinin geri kalanı gibi sağlayıcıya gider. Asla bir kimlik bilgisini bellek olarak saklamayın.
Compartment parolamı kaybedersem ne olur?
Kasa, kasıtlı olarak kurtarılamaz durumdadır. Compartment hiçbir tohum (seed) veya kurtarma ifadesi üretmez ve sizin sahip olmadığınız hiçbir kimlik bilgisini tutmaz; dolayısıyla sıfırlanacak bir şey yoktur. Parolayı bir parola yöneticisine kaydedin, 2FA anahtar dosyasını kasayı saklayan makineden uzak tutun ve kasa içinde kaybetmek istemeyeceğiniz veriler tutmadan önce bir kopyasının kilidini açabildiğinizden emin olun.
İki makine bir Compartment kasasını paylaşabilir mi?
Aynı anda hayır. Kilitli bir kasa tek bir taşınabilir dosyadır ve belgelenen yöntem, kasayı kilitlemek, kopyalamak ve ardından diğer makinede --vault ile kilidini açmaktır. Belgeler, yazma işlemlerini yalnızca tek bir makinedeki aracılar için sıraya dizen danışma dosyası kilidini kapsar. İki makinenin aynı dosyaya yazmasıyla ilgili hiçbir bilgi yoktur, bu yüzden bu kurulumu bellek kaybetmenin bir yolu olarak görün. Buna ihtiyaç duyduğunuzda bir bellek sunucusu çalıştırın.