By default a model of another family reviews the exact change an
agent staged, and a git hook refuses anything else at git commit.
Keep the agents you already use — Claude Code, Codex, Kiro, Qoder, OpenCode and the
rest. ao sits above them: it runs your gates on that staged change, grants
commit authority for that one tree, and writes every decision to a ledger that shows
tampering. A person can waive review, on the record; a commit no review or waiver
granted is flagged by ao doctor and the watchdog.
Varsayılan olarak ajanın sahnelediği tam değişikliği başka bir
model ailesinden bir gözden geçiren inceler; git hook'u da
git commit'te ondan başkasını reddeder. Kullandığın ajanları bırak —
Claude Code, Codex, Kiro, Qoder, OpenCode ve gerisi. ao onların üstünde durur:
o sahnelenen değişiklikte senin gate'lerini koşturur, tek bir ağaç için commit
yetkisi verir ve her kararı, kurcalanmayı gösteren bir deftere yazar. Bir kişi review'ı kayda
geçerek devre dışı bırakabilir; hiçbir review ya da muafiyetin vermediği commit'i
ao doctor ve watchdog işaretler.
# or: uv tool install ao-orchestrator# ya da: uv tool install ao-orchestrator pip install ao-orchestrator cd your-repositorydeponun-yolu ao init --profile agy-codex # agy implements, another family reviews# agy yazar, başka bir aile gözden geçirir git add .ao-project .gitignore && git commit -m "adopt ao" ao hooks install # the hook refuses an ungranted git commit; ao flags --no-verify# hook yetkisiz git commit'i reddeder; ao --no-verify'ı işaretler
Then, for every change an agent stages: ao verify,
ao review, ao commit-ok, ao commit. Nothing to
configure first and no dependencies by choice — Python's standard library only, 3.9
and up, because ao watches agents on machines it does not control.
Sonra, ajanın sahnelediği her değişiklik için: ao verify,
ao review, ao commit-ok, ao commit. Başta yapılandırma yok; bağımlılık da yok, bu bir tercih: yalnız Python'un
standart kütüphanesi, 3.9 ve üstü; çünkü ao kendi denetlemediği makinelerdeki ajanları
izliyor.
Want to see the guarantee before adopting it? ao demo plays
one change through ao on a scratch project, and ao prove runs the
guarantees on a throwaway candidate instead of describing them. On Windows
bin/ao.ps1 runs status, board and
doctor with nothing installed.
Benimsemeden önce o güvenceyi görmek ister misin? ao demo
tek bir değişikliği, sıfırdan kurulup atılacak bir projede ao'nun içinden geçirir;
ao prove ise garantileri tarif etmek yerine yine böyle bir aday üzerinde koşturur. Windows'ta
bin/ao.ps1 hiçbir şey kurulu olmadan status,
board ve doctor çalıştırır.
$ ao verify PASS gates run on the staged tree · 412 passed, 0 failed · 6m 04s $ ao review route: kiro → its read-only agent (family: kiro · implementer: antigravity) APPROVED 0 blockers, 0 highs · 2 notes · the candidate's digest bound to the verdict $ ao commit-ok granted for tree 8c1d2e4… — verify V-1792342, review adf8d371 $ ao commit -m "feat: count failed logins per account" committed · trailers bind it to that grant · push was never granted $ git commit -m "anything else" refused by ao's pre-commit hook: no grant for this staged tree
$ ao verify PASS gate'ler sahnelenen ağaçta koştu · 412 geçti, 0 kaldı · 6dk 04sn $ ao review rota: kiro → kendi salt-okunur ajanı (aile: kiro · uygulayıcı: antigravity) APPROVED 0 blocker, 0 high · 2 not · adayın özeti hükme bağlandı $ ao commit-ok yetki verildi ağaç 8c1d2e4… — doğrulama V-1792342, review adf8d371 $ ao commit -m "feat: hesap başına başarısız girişleri say" commit edildi · trailer'lar onu bu yetkiye bağlar · push asla verilmedi $ git commit -m "başka bir şey" reddedildi — ao pre-commit hook: bu sahnelenen ağaç için yetki yok
an illustrative run: the four commands of one change, and a plain git commit refusedörnek bir koşum: bir değişikliğin dört komutu, ve reddedilen düz bir git commit
the agent edits and stagesajan yazar ve sahneye alır -> ao verify your gates, run again by something with no stake in the result senin gate'lerin, sonuçta çıkarı olmayan bir şeyce yeniden koşturulur -> ao review another model family reads that candidate and the code around it başka bir model ailesi o adayı ve çevresindeki kodu okur -> ao commit-ok commit authority for that exact tree, granted from the evidence o tam ağaç için commit yetkisi, kanıttan verilerek -> ao commit the commit carries trailers that bind it to the grant commit, onu o yetkiye bağlayan trailer'lar taşır the pre-commit hook refuses any other git commit, and ao flags one made around it; pre-commit hook öteki her git commit'i reddeder, etrafından dolaşanı da ao işaretler; push is never granted asla verilmez
Each refusal names the condition it is missing, and a review is bound to
the digest of the bytes it read: change the staged tree and the verdict no longer
applies. When no reviewer can be reached, ao writes a request bound to that same
digest — you paste it into any session of another family, and a person files the
answer with ao collect-review.
Her ret eksik koşulu adıyla söyler; bir review okuduğu baytların
özetiyle bağlanır: sahnelenen ağacı değiştirirsen hüküm artık geçerli değil. Hiçbir
gözden geçirene ulaşılamayınca ao aynı özetle bağlı bir istek yazar — onu başka bir
ailenin herhangi bir oturumuna yapıştırırsın, cevabı da bir kişi
ao collect-review ile işler.
A model of another family than the one that wrote the change, by default — a model reviewing its own family's work shares its blind spots. And a reviewer only reads: ao measures that per harness, and where no flag denies the tools it writes a read-only agent for that harness itself. A route that could write is refused where it starts. Değişikliği yazandan farklı bir model ailesi, varsayılan olarak — bir model kendi ailesinin işini gözden geçirince kör noktaları da ortak olur. Bir gözden geçiren yalnız okur: ao bunu harness bazında ölçüyor; hiçbir bayrağın araçları kapatmadığı bir harness içinse o harness'ın kendi salt-okunur ajanını yazıyor. Yazabilecek bir rota, başladığı yerde reddedilir.
Runs your gates and writes the numbers to a ledger. Not the agent's report of its gates — the commands, run again, by something with no stake in the result. Senin gate'lerini koşturur ve sayıları deftere yazar. Ajanın gate raporunu değil — komutları, yeniden, sonuçta çıkarı olmayan bir şey tarafından.
Commit authority from that evidence: gates passed, review approved,
plan unedited, and the measurement still describes the tree in front of it. Every
refusal names its missing condition. It never covers push.
Commit yetkisini o kanıttan verir: gate'ler geçti, review onaylandı,
plan değiştirilmedi, ölçüm hâlâ önündeki ağacı tarif ediyor. Her ret eksik koşulu
adıyla söyler. push'u asla kapsamaz.
A live panel — and the part no other panel has: whether the agent is busy but producing nothing. A stuck agent looks perfectly healthy. Transcript growing, tool calls firing, credits burning. This compares activity against artifacts and says so. Canlı bir panel — ve başka hiçbir panelde olmayan şey: ajan meşgul ama üretmiyor mu? Saplanmış bir ajan sapasağlam görünür. Transcript büyür, tool call'lar akar, kredi yanar. Bu, faaliyeti üretilen şeyle karşılaştırır ve söyler.
Turn-based agents stop when a turn ends, mid-slice or not. A watchdog notices and nudges — behind guards that make sure a nudge is never spent where it cannot help: not into a provider outage, past a round budget, or beside a tree a person has taken. Tur-bazlı ajanlar tur bitince durur, dilim ortasında bile. Watchdog fark edip dürter — dürtme işe yaramayacağı yerde harcanmasın: sağlayıcı kesintisine, tur bütçesinin ötesine ya da bir kişinin devraldığı ağacın yanına değil.
A board of pre-authorised work: a slice waiting on you is parked with its reason, and when the queue runs dry the architect is woken to refill it. A turn that cannot be read is not counted as one that finished. Önceden yetkilendirilmiş işin panosu: seni bekleyen dilim, nedeni yazılı olarak park edilir; kuyruk boşalınca mimar onu doldursun diye uyandırılır. Okunamayan bir tur, bitmiş sayılmaz.
A review you waive is recorded, not swallowed: ao catchup
has a reviewer of another family read the landed range later, and
ao doctor names a commit whose content no review or waiver granted.
Muaf tuttuğun review kaydedilir, yutulmaz: ao catchup, inen aralığı sonra başka bir aileden bir gözden geçirene okutur;
ao doctor da içeriği hiçbir review ya da muafiyetin vermediği commit'i
adıyla söyler.
Alerts carry an audience: a human hears only what a human can fix. From a phone you can answer — and your reply becomes an urgent decision the implementer cannot commit past until it has read it. Uyarıların hedef kitlesi var: insana yalnız insanın çözebileceği şey ulaşır. Telefondan cevap yazabilirsin — ve yazdığın şey, uygulayıcının okumadan üstünden commit edemeyeceği acil bir karara dönüşür.
Agents report and read over MCP; other orchestrators read the board over A2A; and a bridge lets an MCP-only agent reach the A2A ones. All of it is the same files, so a project that installs none of it loses nothing. Ajanlar MCP üzerinden rapor verir ve okur; başka orkestratörler panoyu A2A üzerinden okur; bir köprü de yalnız MCP konuşan ajanı A2A konuşanlara ulaştırır. Hepsi aynı dosyalara dayanıyor, yani hiçbirini kurmayan proje hiçbir şey kaybetmez.
Every other orchestrator owns the agent: it spawns the
process, drives the loop, and adopting it means restarting your work inside it.
This one owns the authority instead — what is finished, what is
good, what may land — and leaves the agent exactly where it is. And it can be shown
its own work: ao gain reads ao's ledgers and says what it measured,
slices landed, what reviews said, what a turn cost.
Piyasadaki diğer orkestratörler ajanın sahibidir:
süreci onlar başlatır, döngüyü onlar sürer, benimsemek de işi onların içinde yeniden
başlatmak demek. Bu ise yetkinin sahibidir — ne bitti, ne iyi, ne
inebilir — ajanı tam olduğu yerde bırakır. Bir de kendi işini gösterebiliyor:
ao gain ao'nun defterlerini okur ve ne ölçtüğünü söyler — inen dilimler,
review'ların dediği, bir turun maliyeti.
══════════════════════════════════════════════════════════════════ ACME-API agent-orchestrator 18 Oct 14:44:44 ══════════════════════════════════════════════════════════════════ ● WORKING kiro · last write 0m 32s ago ↳ wiring the rate limiter into the login route, then gates ── QUOTA / CONTEXT ────────────────────────────────────────────── context █████████████░░░░░░░ 68% cost last turn 99 credit (162 tool calls) · 5 turns, total 412 (avg 82) ── PROBLEMS ───────────────────────────────────────────────────── spinning 41m busy, nothing committed or changed activity is not progress — re-specify, split, or check for a wait loop ── REVIEWS ────────────────────────────────────────────────────── round 3/5 candidate 8c1d2e4 · staged tree bound to the verdict 2026-10-18-141502-8c1d2e4.md NEEDS_CHANGES 1 high · kiro 2026-10-18-121930-8c1d2e4.md APPROVED 2 notes · antigravity ── THROUGHPUT 24h ─────────────────────────────────────────────── staged 2 · landed 1 · decisions 1 asked, 1 waiting (oldest 0h 52m) landing: candidates are reaching commits ── REPOSITORY ─────────────────────────────────────────────────── 8c1d2e4 feat: count failed logins per account 3b7a9f0 fix: keep the session cookie on token refresh e41c5d2 docs: describe the webhook retry policy 2 files uncommitted · 3 ahead / 0 behind origin/main Mailbox: 20261018-1352-kiro-to-architect-QUESTION-lockout-scope.md 1 other message(s) waiting in agent-mail/ Board: 1 running · 1 blocked · 4 queued · 6 done ⊘ ACME-142 rotate webhook secrets — new key from ops ── RECENT MESSAGES ────────────────────────────────────────────── 14:36 YOU Count failures per account, not per IP address; the │ decision is in the mailbox. 14:41 AGENT Moving the counter to the account key; the migration │ and its test come next. every 15s · Ctrl+C to exit
══════════════════════════════════════════════════════════════════ ACME-API agent-orchestrator 18 Eki 14:44:44 ══════════════════════════════════════════════════════════════════ ● ÇALIŞIYOR kiro · son yazma 0dk 32sn önce ↳ hız sınırlayıcıyı giriş rotasına bağlıyor, sonra gate'ler ── KOTA / BAĞLAM ─────────────────────────────────────────────── bağlam █████████████░░░░░░░ 68% maliyet son tur 99 kredi (162 araç çağrısı) · 5 tur, toplam 412 (ort 82) ── SORUNLAR ──────────────────────────────────────────────────── dönüp duruyor 41dk meşgul, commit ya da değişiklik yok faaliyet ilerleme değildir — yeniden tarif et, böl ya da bekleme döngüsüne bak ── GÖZDEN GEÇİRMELER ─────────────────────────────────────────── tur 3/5 aday 8c1d2e4 · sahnelenen ağaç hükme bağlı 2026-10-18-141502-8c1d2e4.md NEEDS_CHANGES 1 high · kiro 2026-10-18-121930-8c1d2e4.md APPROVED 2 not · antigravity ── AKIŞ 24sa ─────────────────────────────────────────────────── sahnelenen 2 · inen 1 · kararlar 1 soruldu, 1 bekliyor (en eski 0sa 52dk) iniyor: adaylar commit'e ulaşıyor ── DEPO ──────────────────────────────────────────────────────── 8c1d2e4 feat: hesap başına başarısız girişleri say 3b7a9f0 fix: token yenilemede oturum çerezini koru e41c5d2 docs: webhook yeniden deneme politikasını anlat 2 dosya commit edilmemiş · origin/main'in 3 önünde / 0 gerisinde Posta kutusu: 20261018-1352-kiro-to-architect-QUESTION-lockout-scope.md agent-mail/ içinde bekleyen 1 mesaj daha Pano: 1 çalışan · 1 engelli · 4 kuyrukta · 6 tamam ⊘ ACME-142 webhook sırlarını yenile — ops'tan yeni anahtar ── SON MESAJLAR ──────────────────────────────────────────────── 14:36 SEN Başarısız girişleri IP başına değil hesap başına say; │ karar posta kutusunda. 14:41 AJAN Sayacı hesap anahtarına taşıyorum; sırada göç betiği │ ve testi var. her 15sn · çıkmak için Ctrl+C
ao watch, on a sample project — the fields come
from the agent's own store and ao's ledgersao watch, örnek bir projede — alanlar ajanın kendi
deposundan ve ao'nun defterlerinden geliyor
Not style preferences. Each one is a failure that cost real hours. Üslup tercihi değil. Her biri gerçek saatlere mal olmuş bir arıza.
push is never granted by this tool.
Nor PRs, force-pushes, or hook bypasses.
push bu araç tarafından asla verilmez.
PR, force-push ve hook atlama da öyle.
Each adapter declares how ao observes its harness and how much of that
declaration has been measured. ao resolves and reads the agent's own session store for
kiro, claude-code, opencode and
qoder; for antigravity, warp and
cursor-agent (call-return), the call returns a structured
record that ao keeps itself; codex, command-code,
aider, droid, grok, hermes,
kilocode, kimi, omp, pi,
qwen and trae declare a transcript shape with no session store
ao resolves yet; amazon-q, amp, copilot,
deepseek, gemini and reasonix leave the
transcript unknown; openai-api, pr-agent and
ollama are tool reviewers or a model backend with no session store; and
cloud-generic (a cloud template omitted from the table below) observes work
through pull-request polling and Git results. Only the full and
partial rows are measured against an install, except
openai-api, whose client was tested against a stand-in endpoint while a
provider's own answer is proven only by an owner's local run; cursor-agent
(documented) is written from published docs only, and the
untested rows are written from documented interfaces and have not been
run.
Her adaptör, ao'nun o harness'ı nasıl gözlemlediğini ve bu bildirimin ne
kadarının ölçüldüğünü söyler. ao, kiro, claude-code,
opencode ve qoder için ajanın kendi oturum deposunu çözüp
okur; antigravity, warp ve cursor-agent
(call-return) için çağrının döndürdüğü yapılandırılmış kaydı kendisi
tutar; codex, command-code, aider,
droid, grok, hermes, kilocode,
kimi, omp, pi, qwen ve
trae, ao'nun henüz çözmediği bir oturum deposuyla yalnız transcript
biçimini bildirir; amazon-q, amp, copilot,
deepseek, gemini ve reasonix transcript'i
unknown bırakır; openai-api, pr-agent ve
ollama oturum deposu olmayan araç gözden geçirenleri ya da model arka
uçlarıdır; cloud-generic (aşağıdaki tabloda yer almayan bulut şablonu) ise
işi pull request yoklaması ve Git sonuçları üzerinden gözlemler. Yalnız
full ve partial satırları kurulu bir araç üzerinde
ölçülmüştür — istemcisi vekil bir uç noktaya karşı sınanan ve sağlayıcının kendi yanıtı
ancak sahibinin yerel koşumuyla kanıtlanan openai-api hariç;
cursor-agent (documented) yalnız yayımlanmış dokümandan
yazılmıştır, untested satırları ise dokümante arayüzlerden yazılmış ve
henüz koşulmamıştır.
| verified | doğrulama | adapters | adaptörler |
|---|---|---|---|
| full | kiro · claude-code · antigravity every capability exercised in a production run her yetenek gerçek koşumda sınandı | ||
| partial | opencode · command-code · codex ·
qoder · openai-api · warp reads state, some capabilities unexercised durumu okur, bazı yetenekler sınanmadı | ||
| documented | cursor-agent written from published docs, not yet run yayımlanmış dokümandan yazıldı, henüz koşulmadı | ||
| untested | gemini · aider · amp · copilot ·
amazon-q · deepseek · ollama · droid · grok · hermes · kilocode · kimi · omp ·
pi · pr-agent · qwen · reasonix · trae schema present, needs a first run şema hazır, ilk koşumu bekliyor |
ao adapters shows this table against what is actually
installed on your machine, and — with keyflip — whether an account exists even when
the CLI does not. Adding one is a JSON file.
ao adapters bu tabloyu makinende gerçekten kurulu olana
karşı gösterir; keyflip ile, CLI kurulu değilse bile hesap var mı diye de bakar. Yeni
eklemek bir JSON dosyası.
Extracted from a 30-epic durable-workflow product built over weeks by exactly this loop. Every guard in it exists because something went wrong first: a watchdog that started a second turn on one session and left a rename half-applied; fifteen agent processes accumulated in one repository; a timestamp bug that made live evidence look three hours stale. None of it was designed in advance — the lessons file is the list. Haftalarca tam olarak bu döngüyle geliştirilen 30 epic'lik dayanıklı-iş-akışı ürününden çıkarıldı. İçindeki her koruma önce bir şey ters gittiği için var: tek oturumda ikinci tur başlatıp yeniden adlandırmayı yarım bırakan bir watchdog; tek depoda biriken on beş ajan süreci; canlı kanıtı üç saat bayat gösteren bir saat hatası. Hiçbiri önceden tasarlanmadı — liste dersler dosyasında.
The suite runs on Linux, macOS and Windows with Python 3.9 and 3.12, and every command in the list is exercised daily against a real project. Still specification: read lanes, a lane's role and the merge queue, and cross-project parallel execution — the view exists, and running several implementers at once is governed by the machine-wide gate lock but has not been run in anger. Suite Linux, macOS ve Windows'ta Python 3.9 ve 3.12 ile koşuyor; komut listesindeki her komut gerçek bir projede her gün kullanılıyor. Hâlâ şartname olanlar: okuma şeritleri, bir şeridin rolü ve merge kuyruğu ile projeler arası paralel yürütme — görünüm var, birden çok uygulayıcıyı aynı anda koşturmak makine geneli gate kilidine bağlı ama hiç gerçek koşumda denenmedi.
What ao's own ledgers say about the guarantee on its own repository is published too: evidence. ao'nun kendi defterlerinin kendi deposundaki güvence hakkında söylediği de yayında: kanıt.