Remana
Agent Cluster
Kodlama ajanlarını kendi makinelerinizde çalıştıran kontrol düzlemi. İşler kuyruğa girer, sandbox profiliyle çalışır, onaydan geçer ve her adım denetim kaydına yazılır.
Ajanlar gerçek makinelerde, çoğu zaman kimse bakmıyorken çalışıyor
git push --force yazdırabilir.Tek kontrol düzlemi, makinelerde ajanlar
Master işleri sıraya koyar, politika ve onaylardan geçirir, kendi makinelerinizdeki worker'lara dağıtır. Worker ajanı seçilen sandbox profilinde çalıştırır ve sonucu geri yollar.
- Master sizin işlettiğiniz bir host'ta docker compose ile çalışır: API, zamanlayıcı, Postgres, Redis, backup servisi. Veri ve sırlar kendi altyapınızda kalır.
- Worker Windows, macOS ve Linux'ta işletim sistemi servisidir; master'a yalnız giden WSS bağlantısı açar. Makinede dinleyen port açılmaz.
- Runtime olarak Claude Code, Codex, Pi ve OpenCode. Sürümler pinli; runtime politikası canary'den stable'a yükseltir.
- Çıktılar master'da toplanır: dosyalar, siteler (Cloudflare Pages, Coolify), önizleme tünelleri.
Beş parça, her birinin tek bir işi var
Master
Fastify API; her route'ta yetki kontrolü, varsayılan ret. Zamanlayıcı ve yerleştirme. Postgres doğruluk kaynağı: her durum geçişi bir outbox satırıyla aynı işlemde yazılır.
Redis / BullMQ yalnız teslim ipucu taşır (jobId, attemptId, fencingEpoch). Redis kaybolursa durum Postgres'ten uzlaştırılır.
Kasa yalnız şifreli metin tutar. Denetim kaydı append-only ve hash zincirli.
Web konsol
Chat, Jobs, Outputs, Uptime, Machines, Usage, Audit. Katı CSP: script-src 'self', inline script yok. Telefona uygulama olarak kurulur, Web Push alır.
Worker daemon
Windows 10/11'de NT SERVICE\RemanaWorker, macOS'ta (Apple silicon, Intel) LaunchDaemon, Linux'ta (x64, arm64, Raspberry Pi OS) systemd. Ed25519 cihaz anahtarı; lease ve imleçleri yerelde saklar, yeniden başlatmada kaldığı yerden sürer.
Runtime adaptörleri
Claude Code (Agent SDK), Codex (app-server), Pi (RPC), OpenCode (loopback sunucu). Yetenekler doğru bildirilir; desteklenmeyen özellik varmış gibi sunulmaz.
Backup servisi
Gece yedeği, kurtarma sırlarının owner anahtarlarına şifrelenmesi, isteğe bağlı S3/R2 kopyası, haftalık geri yükleme tatbikatı. Durumu Settings → Backups'ta.
Worker'ın kimliği bir anahtar, işi imzalı bir lease
- Tek giden WSS (TLS 1.3)
wss://<master>/v1/worker. NAT ve kurumsal güvenlik duvarı arkasında çalışır; VPN ya da gelen port gerekmez. - Eşleştirme: 10 dakikalık tek kullanımlık kod ve Ed25519 parmak izi; admin step-up ile onaylar.
- Oturum: her bağlantıda sunucu nonce'u cihaz anahtarıyla imzalanır; en çok 15 dakikalık oturum tokeni. Uzun ömürlü bearer sır yok. İptal canlı soketi hemen kapatır.
- Lease: master'ın Ed25519 ile imzaladığı kısa ömürlü token ve iş başına artan fencing epoch. Eski epoch'lu her yazma reddedilir ve denetlenir.
- Sürümleme: Zod şemalı zarf,
MAJOR.MINOR; bilinmeyen alanlar atılır, master mevcut ve önceki major'ı birlikte konuşur.
// worker → master · her mesaj { "protocolVersion": "1.0", "type": "EVENT", "messageId": "…", // tekrar → yeniden işlenmez "workerId": "…", "jobId": "…", "seq": 1842, // monoton "ts": "…", "correlationId": "…", "payload": { "epoch": 3, … } // eski epoch → ret }
rac/<jobId>/<attempt> ve commit trailer'ı denemeyi taşır, eski bir deneme yenisinin üstüne yazamaz.Taslaktan hafızaya, her adım ayrı bir kapı
- Geçişler açık bir geçiş tablosuna göre doğrulanır; geçersiz geçiş reddedilir ve denetlenir.
- Worker kesilirse iş körlemesine yeniden çalışmaz: lease süresi dolan iş
LOSTolur ve uzlaştırılır. Yalnız idempotent adımlar otomatik tekrar edilir. PAUSED: deneme açık, lease yok, slot boş. Devam aynı denemede, epoch + 1.
Asistan okur ve taslak hazırlar, çalıştıran insandır
- Asistan sunucuda değil, seçilen bir worker'da Claude Code ile çalışır. Master hiçbir model anahtarı tutmaz.
- Kabuğu, dosya ve web erişimi yok. Yalnız panel araçlarını kullanır ve bu araçlar kullanıcının kendi yetkisiyle çalışır.
- Değişiklik bir taslak kartıdır. Confirm authenticator kodu ister, iş normal yoldan gider (onay kuralları, kotalar aynı). Kart 24 saatte düşer.
- "Haber ver" izlemeleri: iş, onay, deploy, makine. Olunca sohbete not düşer ve bildirim gelir; yalnız isteyen kişiye.
- Sabitleme, gruplar, etiketler, yıldızlı mesajlar, Details paneli, okunmamış sayacı, bildirim sesi, Web Push. Hepsi kişiye özel.
Meşgul makine işi düşürmez, bekletir
- Sınıflar: Acil +50 · Normal 0 · Arka plan −50. Dağıtım sınıf sırasıyla; sınıf içinde yaşlanma (her 60 sn +1) ve projeler arası ağırlıklı adil pay. Yaşlanma sınıfı değiştirmez.
- Acil rezervi: makine başına 0/1/2 slot (varsayılan 1), en az iki paralel slot varsa uygulanır.
- Geçici ret (
declineKind: transient) işi kuyrukta tutar. Yalnız kalıcı ret o makineyi iş için dışlar. - Profil başına slot: worker her profil için kapasitesini bildirir; master ret beklemeden bekletir ve sebebini gösterir.
- Abonelik girişleri giriş deposu başına tek tek çalışır; API anahtarlı işler paralel. Sohbetten gelen iş Normal'dir; Acil'i yalnız kullanıcının kendi mesajı yaptırır.
Kapasite tahminle değil, ölçümle
- Öneri ölçülen değerlerden çıkar. Örnek kart (4 CPU, 7.9 GB RAM'li bir Windows makinesi):
Recommended: 1 parallel job — Claude Code peaks ~2.8 GB, o makinedeki 12 işin ölçümüyle. - Panel yapılandırması öneriden fazla isterse liste ve makine sayfası uyarır (
above recommended 1). Kapasite modu: manuel, öneri ya da sınırlar içinde otomatik. - Worker yapılandırması panelden yönetilir: imzalı, nesil numaralı, hash'li. Makinedeki yerel tavan panelden geleni her zaman sınırlar.
- Liste: durum, yük, slotlar (
3 slots (unconfined: 1),1 kept for Acil), hazır runtime'lar.
Her işletim sistemine kendi kafesi, zayıfa düşüş yok
| PROFİL | NEREDE | İZOLASYON |
|---|---|---|
| container | Linux, rootless Docker/Podman | salt-okunur kök, düşürülmüş yetenekler, seccomp, egress allowlist proxy |
| runtime-sandbox | Codex (Linux, Windows), Claude Code (Linux) | runtime'ın kendi sandbox'ı + host kısıtları |
| host-restricted | Windows, macOS, Linux/Pi host | özel düşük yetkili hesap; Windows Job Object, macOS Seatbelt |
| unconfined | yalnız izin verilen makine + proje | dosya/ağ sınırı yok; kaynak limitleri ve kimlik kuralı sürer |
- Politika bir profil isterse ve worker veremiyorsa iş reddedilir; daha zayıf profile kendiliğinden geçilmez.
- Prepare panelden imzalı bir komuttur; SYSTEM/root yardımcısı imzayı kendisi doğrular ve yalnız imzalı pakete gömülü sabit adımları çalıştırır.
unconfinediçin makine anahtarı, proje opt-in'i ve taze TOTP gerekir; makine sahibi yerel config ile tamamen yasaklayabilir.
Paralel host işleri, birbirinin klasörünü göremeden
- Her eşzamanlı host denemesi kendi yerel hesabında çalışır:
remana-job-1…N(havuz 1–16, varsayılanmax(maxParallelJobs, 4)). - Hesaplar yalnız batch logon alır; interaktif, RDP, ağ ve servis girişi kapalı, oturum ekranında gizli. Rastgele parolalar yalnız DPAPI LocalMachine blob olarak saklanır.
- Runner hesabı
LOGON32_LOGON_BATCHile açar, runtime'ıCreateProcessAsUserile worker'ın Job Object'i içinde başlatır. - Deneme klasörlerine korumalı DACL. İş bitince izinler geri alınır; temizlik başarısızsa hesap karantinaya girer.
- Paralellik ancak makinede çapraz erişim öz-testi geçince açılır. Abonelik girişli işler bu hesaplara verilmez: paylaşılan OAuth yenilemesi paralel çalışmada girişi bozduğu için tek tek çalışırlar.
Parallel: up to 3 for API-key runtimes; subscription logins run one at a time (each API-key attempt runs as its own Windows account)Zararsız komut beklemez, çünkü iki taraf ayrı ayrı kanıtlar
- Platform tabanı projeden gevşetilemez: korumalı dala push ve merge, force push, deploy, workspace dışı silme, sır okuma, bütçe artışı.
- Worker runtime'ın çalıştıracağı komutu ayrıştırır, yolları diskte çözer (symlink, hard link,
.git) ve bir iddia ekler. - Master komutu kendisi yeniden sınıflandırır. Kararlar eşitse onaylar ve
approval.auto_safedenetim kaydı yazar; değilse istek insana gider. - Ayrıştırıcı regex değil: bash/sh/zsh, PowerShell ve cmd için dar alt kümeler. Değişken, glob, script bloğu, bilinmeyen alias: hepsi sorulur.
- Full access (unconfined + "Never ask") proje opt-in'i, makine izni ve güvenilir kaynak ister; her anahtar taze TOTP, denetim ve sahiplere bildirimdir.
Onay bekleyen iş düşmez: duraklar, sonra kaldığı yerden sürer
- Çalışma içi istek süresi dolup işi düşürmez. 15 dk sonra stale: hatırlatma bildirimi, sohbete bir not.
- 60 dk sonra fenced
PAUSE_JOB: runtime nazikçe durur, lease bırakılır, slot boşalır. Workspace, sandbox klasörü ve oturum 7 güne kadar saklanır. - Karar gelince aynı deneme, aynı makine, epoch + 1. Öncesinde politika, onaylayanın rolü ve makine yeniden kontrol edilir.
- Karar eylemin parmak izine bağlıdır (eylem + özet için sha256). Ajan başka bir komut isterse yine insana sorulur.
- Devam edemeyen iş başka makineye taşınmaz; konsol Restart from scratch ya da Cancel önerir. Duraklama süresi iş süresinden düşmez.
Ajan işin bir parçasını başka bir runtime'a devreder
- Ajan
request_subtask,wait_subtask,cancel_subtaskaraçlarını kullanır (Claude Code'da süreç içi MCP). Her çağrı canlı lease'e fenced birSUBTASK_REQUESTolur. - Alt iş sıradan bir iştir: aynı kuyruk, kota, bütçe, onay ve denetim. İkinci bir zamanlayıcı yok.
- Spec ajandan değil ana işin kayıtlı spec'inden türetilir. Sandbox ve kaynak güveni aynı, onay politikası aynı ya da daha sıkı; sır, deploy ve fallback aktarılmaz; bütçe ana işten kesilir.
- Sınırlar: derinlik ≤ 2, iş başına ≤ 8 (aynı anda ≤ 4), aile başına ≤ 16. Proje başına varsayılan kapalı; açmak taze TOTP ister.
- Abonelik girişli Claude ana iş ile Codex alt işi ayrı giriş depolarındadır; aile istisnasıyla aynı makinede birlikte çalışır.
needs human review ile durdu: lease'i kaybolan iş körlemesine yeniden çalıştırılmaz.Ne üretildiyse tek yerde, ne açıldıysa tek porttan
- Outputs: canlı siteler,
out/dosyaları, notlar. Önizleme (Markdown, CSV, JSON, PDF, diff), SHA-256, saklama süresi, pin, klasörler, 100 dosya / 50 MiB ZIP veMANIFEST.txt. - Site HTML'i script çalışmayan sandbox'lı çerçevede gösterilir; secret taramasının işaretlediği paket hiç gösterilmez.
- Önizleme tüneli: master her önizleme için tek ingress kurallı bir Cloudflare Tunnel kurar. Worker'a yalnız o tünelin connector token'ı gider: 0600 dosyada, komut satırında değil.
- Yalnız işin kendi süreç ağacının dinlediği port açılır; SSH, RDP, veritabanı ve worker'ın kendi portları reddedilir. Varsayılan 4 saat, en çok 24 saat; tahmin edilemez hostname.
Yayın onayı iş açılırken verilir, kapı sonucu görene kadar bekler
- Deploy on success: onay iş oluşturulurken alınır (politikaya göre taze TOTP). Tek kullanımlık, 8 gün geçerli kayıt; tekrar çalıştırma devralmaz. Production proje bazında ayrıca açılır.
- Verify when done: off · report · gate. Master sitenin linklerini kendisi kontrol eder; doğrulayıcı iş build/test çalıştırır, Playwright ile 1280×800 ve 390×844 ekran görüntüsü, konsol hataları, kırık linkler.
- Kapı yalnız alıkoyar: doğrulayıcının "geçti" demesi yetki vermez. Override proje admini ve taze kod ister, denetlenir.
- Deploy sonrası sağlık: SSRF korumalı prob ve aynı-köken tarama; isteğe bağlı otomatik geri alma (production için ikinci anahtar).
- Uptime: HTTP/TCP, Cloudflare Pages, Coolify. Metadata adresi,
localhost, özel ağlar reddedilir; her yönlendirme yeniden kontrol edilir.
İnsan onaylar, bilgi birikir, sohbet anlamca bulur
- Biten işlerin özetleri ve projeye bağlı sohbetler kurallarla okunur (
MEMORY:,KARAR:, paket yöneticisi, marka rengi…). Operator kabul etmeden hiçbir şey context'e girmez. - Embedding: AWS Bedrock
cohere.embed-multilingual-v3, 1024 boyut. Anahtar panelden girilir, master'da şifreli durur, worker'a gitmez. - Gönderilen yalnız izinli projelerin doküman, iş özeti ve sohbet metni. Prompt, log, araç çıktısı ve sırlar gönderilmez.
- Her mesajda en çok 6 parça (~6 KB), kullanıcının okuyabildiği kaynaklardan, "veri, talimat değil" bloğunda. Başkasının özel sohbeti hiç kullanılmaz.
Öneri kutusu ve kaynaklı cevap, panelde
Harcanan para ile tahmin ayrı satırda
- API harcaması gerçek dolardır. Abonelik kullanımı token, tur ve saat olarak gösterilir; yanında "API-equivalent ≈ $X (estimate)". Bilinmeyen maliyet sıfır sayılmaz, "≥" alt sınır olarak yazılır.
- Kırılım: proje, runtime, model, makine, otomasyon; en pahalı ve en yavaş işler; CSV.
- Bütçeler gün/hafta/ay, saat dilimiyle. %50/%80/%100 eşikleri. %100'de: yalnız uyar, yeni işleri beklet ya da yalnız otomasyonları durdur. Override sebep ve TOTP ister.
- API-equivalent tahmin, Usage → Prices'a girilen sürümlü fiyat tablosundan hesaplanır; fiyat yoksa "unknown — price missing" yazar.
- Öneriler sabit kurallarla ve kanıtıyla gelir; hiçbiri kendiliğinden uygulanmaz. Haftalık rapor her Pazartesi 08:00, kişinin saat diliminde.
| RUNTIME · FATURA | TOKEN | İŞ | BAŞARI | API $ | TAHMİN |
|---|---|---|---|---|---|
| Claude Code · abonelik | 4.82M | 96 | %89.6 | — | ≈ $23.10 |
| Codex · abonelik | 1.31M | 34 | %88.2 | — | ≈ $3.30 |
| Pi · API anahtarı | 0.92M | 14 | %85.7 | $6.40 | — |
| OpenCode · API anahtarı | 0.41M | 8 | %87.5 | $3.10 | — |
| Toplam | 7.46M | 152 | %88.8 | $9.50 | ≈ $26.40 |
Ajan çekirdekte, her halka ayrı bir kapı
- İnsan: scrypt parola + zorunlu TOTP. Oturum çerezi HttpOnly, Secure, SameSite=Strict; CSRF çift gönderim. Step-up penceresi 10 dk; hesap güvenliği işlemleri her seferinde taze kod.
- Roller: owner, admin global; operator, viewer proje bazında. Başka projenin kaynağı 404 döner.
- Güvenilmeyen içerik: depo metni ve ajan çıktısı hiçbir şeyi yetkilendirmez. Fork PR'lar unconfined, auto-approve ve deploy alamaz.
- Denetim: append-only, SHA-256 hash zinciri, aralık doğrulama; dışa aktarım step-up ister.
Master anahtarları taşır ama açamaz
Değer her seçili worker'ın X25519 anahtarına ayrı ayrı mühürlenir: HKDF-SHA256 + AES-256-GCM, yalnız WebCrypto.
açık metin yalnız buradaMetadata ve worker başına şifreli metin saklar; hiçbir route değeri kabul etmez, döndürmez, loglamaz. Yazma: admin + taze step-up + CSRF.
açamazLease anahtarıyla imzalı; worker, kimlik bilgisi, sürüm ve şifreli metin özetine bağlı. Eski ya da çelişen sürüm reddedilir.
şifreliKendi anahtarıyla açar, yerel sır deposuna koyar, yalnız id + sürüm bildirir. İş başına ortam değişkeni olarak enjekte edilir.
açık metin yalnız burada- Vault anahtarı worker'ın Ed25519 cihaz anahtarıyla imzalanıp duyurulur; master eşleştirmede pinlediği anahtarla doğrular. Anahtar değişirse kayda geçer ve bildirilir.
- Yazma-yalnız: döndürülür, kaldırılır, iptal edilir; asla geri gösterilmez.
- Abonelik girişi (Claude, ChatGPT): platform okumaz, kopyalamaz, iletmez. Tarayıcı ve worker
sk-ant-oat…token'larını reddeder; durum yalnızauthenticated: yes | no | unknown. - Master'ın tuttuğu entegrasyon sırları AES-256-GCM ile, HKDF alt anahtarlarıyla saklanır; worker'a ve sohbet asistanına gitmez. Log redaksiyonu hem worker'da hem master'da.
Yedek, geri yüklenene kadar yedek sayılmaz
- Her gece 02:30 UTC;
REPEATABLE READanlık görüntüsüyle tutarlı dump. Manifest: şema sürümü, tüm tabloların satır sayıları, parmak izleri, SHA-256, denetim zinciri başı. - Kurtarma sırları
ageile owner'ların açık anahtarlarına şifrelenir. Sunucuda açacak anahtar yok; yedek panelden indirilemez. - Saklama 7 günlük, 4 haftalık, 3 aylık. Haftalık tatbikat ağsız, geçici bir Postgres'e geri yükler ve her şeyi yeniden kontrol eder.
age ile şifreli yüklenir. Yapılandırılmazsa yedekler host'ta kalır ve panel bunu açıkça uyarır. Varsayılan RPO 24 saat.Her sürüm imzalı, her deploy kapılı
- Master deploy tek komut: image'lar host'ta build edilir, image ID'leri Ed25519 imzalı bir release kaydına yazılır ve rollout'tan hemen önce yeniden doğrulanır.
- Deploy öncesi yedek, ileri yönlü migration, ardından sağlık kapısı. Uygulama deploy'u Postgres ve Redis'i yeniden yaratmaz.
- Worker sürümleri çevrimdışı release anahtarıyla imzalanır. Master yalnız saklar ve sunar; worker ve root güncelleyici imzayı ayrı ayrı doğrular. Geçiş atomik; yeni sürüm ayağa kalkmazsa güncelleyici geri döner, sürüm düşürme reddedilir.
- Kanallar stable ve canary, yüzdeyle rollout: önce canary makineler, sonra stable %10–25, sonra %100. Yükleme step-up ister; kabul de ret de denetime yazılır.
- Protokol uyumu: master önceki major'ı da konuşur; eski worker'lar yeni özellikleri almaz ama çalışmaya devam eder.
preflighttemiz ağaç, commit'ten sürüm etiketi, imza anahtarı kontrolüship · buildgit archive (yalnız izlenen dosyalar, sır yok) → host'ta docker buildimzaimage ID'leri → imzalı release kaydı; rollout öncesi yeniden doğrulamayedek · migratedeploy öncesi yedek, ardından ileri yönlü migrationsağlık kapısı~60 sn: container'lar healthy, imzalı image ID'leri çalışıyor, smoke istekleri geçiyorkeep · prunekapı geçmezse ve şema değişmediyse önceki sürüme otomatik dönüş; son sağlıklı sürümler tutulur, gerisi temizlenirNeler üretimde kanıtlı, neler yolda
ÜRETİMDE ÇALIŞIYOR
- Windows iş başına hesaplar: çapraz erişim öz-testi geçince API anahtarlı host işleri paralel.
- Onay → stale → pause (slot boşalır) → onay → aynı makinede devam → Succeeded.
- Alt işler: Claude koordinatör ve Codex alt işi eşzamanlı; çıktı ana işe teslim.
- Anlamsal hafıza: Bedrock Cohere ile dizinleme, sohbette kaynaklı cevap.
- Yedek ve tatbikat: gece yedeği, haftalık otomatik geri yükleme tatbikatı.
- Sürüm hattı: imzalı worker sürümleri kanal ve yüzdeyle; master deploy'u sağlık kapısıyla.
- Uptime: HTTP ve Cloudflare Pages monitörleri.
YOLDA / BİLİNEN SINIRLAR
- macOS ve Linux worker'lar otomatik uçtan uca filo testinde doğrulanıyor (eşleştirme, heartbeat, yeniden bağlanma, drain, iptal); saha kullanımı en olgun hâliyle Windows'ta.
- Linux/Pi host profilleri şimdilik tek tek çalışır; iş başına izolasyon sıradaki iş.
- Playwright doğrulayıcısı ve deploy sonrası sağlık kontrolü testlerle kapsanıyor; gerçek deploy'larla saha doğrulaması sürüyor.
- Önizleme tünelleri gerçek bir Cloudflare hesabıyla uçtan uca doğrulama bekliyor.
- Runtime oturumunun birebir sürmesi garanti değil; Claude Code ve Codex özetle yeni oturumda devam edebilir.
- Image build'i bugün kontrol düzlemi host'unda; CI build, registry ve provenance imzası planlı.
- Web Push'un mobil cihaz doğrulaması ve sandbox kaçış testleri planlı.
Ajanları başıboş bırakmadan,
kendi makinelerinizde çalıştırın.
Kuyruk sınıfları, profil başına slot, geçici ret. Meşgul makine işi düşürmez.
İşletim sistemine göre sandbox, Windows'ta iş başına hesap, iki taraflı kanıtla güvenli komut.
İmzalı lease ve sürümler, hash zincirli denetim, her hafta geri yüklenen yedek.
Kontrol düzlemi kendi host'unuzda docker compose ile; worker'lar Windows, macOS ve Linux makinelerinizde.