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'in 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 aracı bellek alanındaki diğer çözümlerden ayırır. Kasa, yalnızca parolanızla açılabilen tek bir mühürlü dosyadır ve embedding adımı yerel olarak çalıştırılır; bu sayede bir belleğin metni, vektöre dönüştürülmek üzere hiçbir yere gönderilmez. Sürüm 4.6.0, 10 Ağustos 2026 tarihinde yayınlanmıştır, lisansı Apache-2.0'dır ve PyPI üzerinden kurulur.
Bu bir tehdit modeli iddiası olduğundan, bu kılavuz onu bu şekilde ele alır. Beklemedeki verilerin şifrelenmesi ve çevrimdışı tasarım, belirli bir liste öğesini korur. Diğer unsurları ise açık bırakır ve ikinci gün sorunları bu boşlukta ortaya çıkar.
Bu kılavuz, 11 Ağustos 2026 tarihinde okunan projenin kendi belgelerini ve sürüm notlarını takip eder. Compartment; komut satırı aracının yanı sıra bir masaüstü uygulaması, macOS üzerinde bir menü çubuğu öğesi ve Windows üzerinde bir bildirim alanı simgesi sunar; parola istemi otomatik bir container üzerinden yönetilemez. Aşağıdakileri ölçümlenmiş bir davranış olarak değil, belgelenmiş bir 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.
Sabitlenmiş bir sürümden Compartment kurulumu
Compartment, Python 3.11 veya daha yeni bir sürüm gerektirir. Proje hızlı ilerlemektedir; 10 Ağustos 2026 itibarıyla PyPI üzerinde otuz sürümü bulunmaktadır. Bu nedenle, kurulum gününde güncel olan sürümü almak yerine belirli bir 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. Bu parola tek anahtardır. Proje herhangi bir şifre veya kurtarma ifadesi oluşturmaz; bu kasıtlı bir tercihtir: yazılımın elinde sizin sahip olmadığınız hiçbir kimlik bilgisi bulunmaz.
Herhangi bir bağlantı kurmadan ö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ü kasanın açık kalmasını sağlayan 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.
The data behind this chart
[
{
"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 veya bir bellek sunucusu
Compartment, tasarımı gereği tek bir makine için geliştirilmiştir. Paylaşım yapmak, kilitli dosyayı kopyalamak veya dışa/içe aktarmak anlamına gelir; eş zamanlı yazma desteği yoktur. Bu nedenle, aynı dosyayı işaret eden bir dizüstü bilgisayar ve bir iş istasyonu, birbirlerinin yaptığı değişikliklerin üzerine yazacaktır.
Birden fazla makinenin aynı anda aynı belleğe ihtiyaç duyması, bir sunucu sorunudur. Kendi sunucunuzda barındırılan bir Mem0 bellek sunucusu (VPS üzerinde) bu sorunu çözer: tek bir uç nokta, çok sayıda istemci ve dizüstü bilgisayardan bağımsız bir bellek. Bu çözümün maliyeti açıkça belirtilmelidir. Söz konusu sunucu, depoladığı verileri okuyabilen bir süreç çalıştırır; bu nedenle tehdit modelinize artık VPS ve API'sine erişebilen herkes dahil olur.
Gerçekten korktuğunuz veri kaybına göre seçim yapın. Eğer endişeniz çalınan bir dizüstü bilgisayar veya notlarınızı okuyan bir hizmet sağlayıcısı ise, şifrelenmiş yerel kasa daha güçlü bir çözümdür. Eğer sorun, cihaz değiştirdiğiniz anda her şeyi unutan bir aracı ise, sunucu çözümü daha uygundur.
FAQ
Compartment şifrelemesi tam olarak neyi korur?
Dosyayı korur. Kasa, XChaCha20-Poly1305 ile mühürlenir, anahtar yuvaları Argon2id ile sarmalanır ve gömme vektörleri de şifrelenir; bu sayede çalınan bir disk veya eski bir yedek, okunabilir hiçbir veri içermeyen baytlardan ibaret kalır. Kilitli olmayan bir kasayı çalışan bir makinede korumaz, çünkü kasa açıkken ana anahtar RAM'de tutulur ve geri çağırma işlemi düz metin olarak döndükten sonra bir aracın bellek ile ne yapacağını denetlemez.
Compartment çevrimdışıyken, anılarım model sağlayıcım karşısında gizli kalır mı?
Yalnızca 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 veri çıkmaz. Okuma sırasında araç düz metni alır; eğer bu araç barındırılan bir model ise, anı isteme girer ve bağlam penceresinin geri kalanı gibi sağlayıcıya gönderilir. Bir kimlik bilgisini asla anı olarak saklamayın.
Compartment parolasını kaybedersem ne olur?
Kasa, tasarım gereği kurtarılamaz durumdadır. Compartment herhangi bir tohum veya kurtarma ifadesi oluşturmaz ve sizin sahip olmadığınız hiçbir kimlik bilgisini tutmaz, bu nedenle sıfırlanacak bir şey yoktur. Parolayı bir parola yöneticisine kaydedin, herhangi bir 2FA anahtar dosyasını kasayı saklayan makinenin dışında tutun ve kasa kaybetmek istemeyeceğiniz verileri içermeden önce bir kopyasının kilidini açabildiğinizden emin olun.
İki makine tek 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. Eşzamanlı erişim yoktur, bu nedenle aynı dosyaya yazan iki makine anı kaybına uğrar. Buna ihtiyaç duyduğunuzda bir bellek sunucusu çalıştırın.