- Yapay zeka kodlama ajanlarını tam sistem yetkileriyle çalıştırırken, kullanıcının ana dizinine zarar verme riskini engelleyen bir araç
- Claude Code, Codex, Gemini CLI, OpenCode gibi başlıca yapay zeka CLI’leri önceden yapılandırılmış olarak “YOLO modu” ile çalıştırılabilir
- Yalnızca proje dizinini Docker veya Podman konteyneri içine mount eder, ana dizini ise varsayılan olarak hariç tutar
- Konteyner içinde sudo yetkisi ve kalıcı volume sağlayarak araçların ve ayarların oturumlar arasında korunmasını sağlar
- Geliştiricilerin yapay zeka otomasyon özelliklerini güvenle deneyebileceği izole bir sandbox ortamı sunar
Genel Bakış
- Yolobox, yapay zeka kodlama ajanlarını konteyner içinde çalıştırarak sistemi korurken tam çalıştırma yetkisi veren bir araçtır
- Yapay zeka komut yürütürken yanlışlıkla
rm -rf ~ gibi yıkıcı komutlar çalıştırsa bile ana dizin etkilenmez
- Proje dizini
/workspace olarak mount edilir, ana dizin ise varsayılan olarak mount edilmez
- Kalıcı volume sayesinde araçlar ve ayarlar oturumlar arasında korunur
Başlıca Bileşenler ve Özellikler
- Konteyner içinde yapay zeka ajanı sudo yetkisine sahiptir ve komutları serbestçe çalıştırabilir
- Varsayılan image şunları içerir
- AI CLI: Claude Code, Gemini CLI, OpenAI Codex, OpenCode (hepsi otomatik çalıştırma moduna ayarlı)
- Geliştirme ortamı: Node.js 22, Python 3, make, cmake, gcc, Git, GitHub CLI
- Yardımcı araçlar: ripgrep, fd, fzf, jq, vim
- Gerekirse kullanıcı sudo ile ek paketleri doğrudan kurabilir
Çalıştırma ve Komutlar
yolobox komutuyla sandbox shell’e girilir
yolobox run ile tek bir komut çalıştırılabilir
yolobox upgrade, yolobox config, yolobox reset --force, yolobox version gibi yönetim komutları sunulur
- Başlıca flag’ler
--runtime: docker veya podman seçimi
--no-network: ağı devre dışı bırakır
--readonly-project: projeyi salt okunur olarak mount eder
--claude-config: host üzerindeki Claude ayarlarını konteynere kopyalar
Güvenlik Modeli
- Güvenlik sınırı olarak konteyner izolasyonu kullanılır
- Konteyner, Linux namespace’leri üzerinden dosya sistemi, süreçler ve ağı ayırır
- Yapay zeka konteyner içinde root yetkisine sahip olsa da dış sistemlere erişemez
- Korunan varlıklar
- Ana dizin, SSH anahtarları, kimlik bilgileri, dotfile’lar, diğer projeler, host sistem dosyaları
- Korunmayanlar
- Proje dizini (varsayılan olarak okuma/yazma açık)
- Ağ erişimi (isteğe bağlı olarak engellenebilir)
- Kernel açıkları veya konteynerden kaçış saldırıları
Güvenliği Güçlendirme Adımları
- Temel mod: standart konteyner izolasyonu
- 2. seviye:
--no-network --readonly-project seçenekleriyle saldırı yüzeyini küçültme
- 3. seviye: host root yetkisini kaldırmak için Rootless Podman kullanımı
- Konteynerdeki root, hosttaki normal kullanıcıya eşlenir; böylece kaçış durumunda zarar en aza iner
- 4. seviye: VM içinde çalıştırma ile kernel paylaşımını kaldırma
- macOS’te UTM, Parallels, Lima; Linux’ta Podman machine veya özel bir VM kullanılabilir
Ağ İzolasyonu
- Rootless Podman varsayılan olarak slirp4netns ağı kullanır ve host ağıyla ayrıdır
allow_host_loopback=false ayarıyla yerel ağa erişim engellenebilir
Lisans ve Diğer Bilgiler
- MIT lisansı ile yayımlanır
- Depo dil dağılımı: Go %75.9, Dockerfile %13.6, Shell %8.7, Makefile %1.8
- ‘Yolobox’ adı, “YOLO (You Only Live Once)” anlayışından gelir ve yapay zekayı özgürce çalıştırırken güvenli şekilde izole edilmiş bir ortam anlamını taşır
1 yorum
Hacker News yorumları
Kısa süre önce Litterbox adında benzer bir proje yaptım (demo sitesi)
Sadece Linux için, çünkü Podman'a dayanıyor. Bunun yerine benim kullanımım için bazı avantajları var
Ben de benzer bir şeyi deniyordum.
README'de nasıl çalıştığını ve güven sınırlarını (Docker konteyneri tabanlı) net şekilde açıklamak iyi olur. Çekirdek açıkları istismar edilebileceği için konteynerden kaçış riski hâlâ var
Ağ erişimini en aza indirmek için Rootless Podman ve
slirp4netnskullanıyorum.Sonraki adım olarak çekirdeği tamamen ayırmak için Podman machine kullanmak istiyorum ama volume mount düzgün çalışmıyor
agents.mdya daclaude.mdiçine Asimov'un 3 yasasını koymayı öneriyorumclaude.mdiçine koymak, modelin bu kavramı 'zihnine yerleştirmesi' gibi bir etki yaratır. Eski modellerde “fil kelimesini kullanma” denirse, tam tersine o kelimeden kaçınmaya çalışırken tuhaf sonuçlar çıkıyorduShai'ye bakmanı öneririm. Lokal çalışıyor ve dizin erişim izinleriyle ağ trafiğini kontrol edebiliyor
shai -rw .ile mevcut dizine okuma/yazma izni verilebilir,shai -u rootile başka bir kullanıcı olarak çalıştırılabilirShai, varsayılan engelleme, açık izin verme (opt-in) felsefesini izliyor. Tüm ekibin aynı ayarları kullanması için
.shai/config.yamldosyasını repoda paylaşmayı öneriyorum--no-networkile engellenebiliyoryolo-cage geliştiriyorum. Yolobox yerel makineyi korumaya odaklanırken, yolo-cage gizli bilgi sızıntısını önleme ve çoklu ajan iş birliği üzerine odaklanıyor
Kubernetes üzerinde çalışıyor ve tüm egress trafiğini tarayarak API anahtarı ya da token sızıntısını engelliyor.
Git branch izolasyonunu zorunlu kılarak ajanın kendi PR'ını merge etmesini engelliyor — “ajan önerir, insan onaylar”
Ayrıca yerleşik bir kaçış testi çerçevesi içeriyor; Claude'un kendi başına kaçmaya çalışmasını tetikliyor. Bu prompt repoda bulunduğu için ajanın gerçekten o davranışı sergileyip sergilemediğini doğruluyor
Commit'lere neden “claude” etiketi eklendiğini merak ettim. Sonuçta OS ya da vim sürümü gibi belirtilmiyor. LLM sonuçta sadece İngilizceyi koda derleyen bir araç
Ben de benzer bir deneme yaptım. Biraz daha fazla kolaylık özelliği ekleyerek Toadbox'ı yaptım
Yapay zeka için sandbox konuşması çok ama aslında Claude Code, Codex, Gemini CLI içinde zaten yerleşik sandbox var
Ben de Apple Container Framework kullanarak benzer bir şey yapıyorum. Buna bakıp bakmadığını merak ettim
Ancak Docker API uyumluluğu ve birleştirilebilirlik eksik. İlgili tartışmayı burada topladım
Aslında Shai'yi Apple Container üzerine kurmak istiyordum ama paketleme sorunları yüzünden vazgeçtim
Ben de benzer bir şey yapıyorum → sandbox-codex
Hâlâ geliştirme aşamasında ve tmux loglarının okunabilirliği zayıf. Docker tam bir sandbox olmadığı için VirtualBox içinde çalıştırıyorum