Nool

More agents.
Less cleanup.
Rules enforced.

Nool sits between your coding agents and Git: you decide who may change what, your rules run before anything lands, and every change carries signed evidence.

Engineers: run it on your own repo first. Community is free forever: no email, no card, no licence.

Coding agents send changes through Nool's coordination and checks before landing in Git.Claude CodeCodexopencodeGit / CINOOLCoordinateCheckLand
Coding agents are planes. Nool is air traffic control. Git is the flight log.

Plus d’agents.
Moins de nettoyage.
Des règles appliquées.

Nool se place entre vos agents de code et Git : vous décidez qui peut modifier quoi, vos règles s’exécutent avant tout atterrissage, et chaque changement porte des preuves signées.

Ingénieurs : essayez-le d’abord sur votre propre dépôt. Community est gratuit pour toujours : sans e-mail, sans carte, sans licence.

Les agents de code envoient leurs changements à Nool pour coordination et vérification avant l’intégration dans Git.Claude CodeCodexopencodeGit / CINOOLCoordonnerVérifierIntégrer
Les agents de programmation sont des avions. Nool est le contrôle aérien. Git est le carnet de vol.

Más agentes.
Menos correcciones.
Reglas aplicadas.

Nool se sitúa entre tus agentes de programación y Git: tú decides quién puede cambiar qué, tus reglas se ejecutan antes de que nada aterrice y cada cambio lleva evidencia firmada.

Ingenieros: pruébalo primero en tu propio repositorio. Community es gratis para siempre: sin correo, sin tarjeta, sin licencia.

Los agentes de código envían sus cambios a Nool para coordinarlos y verificarlos antes de integrarlos en Git.Claude CodeCodexopencodeGit / CINOOLCoordinarVerificarIntegrar
Los agentes de programación son aviones. Nool es el control de tráfico aéreo. Git es el registro de vuelo.

Mais agentes.
Menos retrabalho.
Regras aplicadas.

O Nool fica entre os seus agentes de programação e o Git: a sua equipa decide quem pode alterar o quê, as suas regras correm antes de qualquer aterragem e cada alteração traz provas assinadas.

Engenheiros: experimente primeiro no seu próprio repositório. O Community é gratuito para sempre: sem e-mail, sem cartão, sem licença.

Os agentes de código enviam alterações ao Nool para coordenação e verificação antes da integração no Git.Claude CodeCodexopencodeGit / CINOOLCoordenarVerificarIntegrar
Os agentes de programação são aviões. O Nool é o controlo de tráfego aéreo. O Git é o diário de voo.

Mehr Agenten.
Weniger Nacharbeit.
Regeln, durchgesetzt.

Nool sitzt zwischen deinen Coding-Agenten und Git: Du legst fest, wer was ändern darf, deine Regeln laufen, bevor etwas landet, und jede Änderung trägt signierte Nachweise.

Für Entwickler: Probier es zuerst in deinem eigenen Repo. Community ist dauerhaft kostenlos: keine E-Mail, keine Karte, keine Lizenz.

Coding-Agenten senden Änderungen zur Koordination und Prüfung durch Nool, bevor sie in Git landen.Claude CodeCodexopencodeGit / CINOOLKoordinierenPrüfenIntegrieren
Coding-Agenten sind Flugzeuge. Nool ist die Flugsicherung. Git ist das Flugbuch.

更多智能体。
更少善后。
规则强制执行。

Nool 位于你的编码智能体与 Git 之间:由你决定谁可以修改什么,规则在任何变更落地之前执行,每一次变更都带有签名证据。

工程师:先在自己的仓库里跑一遍。Community 版永久免费:无需邮箱、信用卡或许可证。

编程智能体的变更经过 Nool 协调和检查后,再合入 Git。Claude CodeCodexopencodeGit / CINOOL协调检查合入
编程智能体是飞机。Nool 是空中交通管制。Git 是飞行日志。

エージェントは増やす。
後始末は減らす。
ルールは必ず守らせる。

Nool はコーディングエージェントと Git の間に立ちます。誰が何を変更できるかはあなたが決め、ルールは着地前に必ず実行され、すべての変更に署名付きの証拠が残ります。

エンジニアの方へ:まずは自分のリポジトリで試してください。Community は永久無料です。メールもカードもライセンスも不要です。

コーディングエージェントの変更は、Nool による調整と検証を経て Git に統合されます。Claude CodeCodexopencodeGit / CINOOL調整検証統合
コーディングエージェントは飛行機。Noolは航空管制。Gitは飛行日誌です。

더 많은 에이전트.
더 적은 뒷수습.
규칙은 강제됩니다.

Nool은 코딩 에이전트와 Git 사이에 있습니다. 누가 무엇을 바꿀 수 있는지는 여러분이 정하고, 규칙은 변경이 반영되기 전에 실행되며, 모든 변경에는 서명된 증거가 남습니다.

엔지니어라면 먼저 자신의 저장소에서 실행해 보세요. Community는 영구 무료입니다. 이메일도, 카드도, 라이선스도 필요 없습니다.

코딩 에이전트의 변경은 Nool의 조율과 검증을 거쳐 Git에 통합됩니다.Claude CodeCodexopencodeGit / CINOOL조율검증통합
코딩 에이전트는 비행기입니다. Nool은 항공 관제입니다. Git은 비행일지입니다.

وكلاء أكثر.
إعادة عمل أقل.
قواعد مُطبَّقة.

يقف Nool بين وكلاء البرمجة لديك وبين Git: أنت تقرر من يغيّر ماذا، وتُنفَّذ قواعدك قبل أن يُدمج أي تغيير، ويحمل كل تغيير أدلة موقّعة.

للمهندسين: جرّبه أولاً على مستودعك. نسخة Community مجانية للأبد: بلا بريد إلكتروني ولا بطاقة ولا ترخيص.

يرسل وكلاء البرمجة التغييرات عبر تنسيق Nool وفحوصاته قبل دمجها في Git.Claude CodeCodexopencodeGit / CINOOLتنسيقتحقّقدمج
وكلاء البرمجة هم الطائرات. Nool هو مراقبة الحركة الجوية. Git هو سجل الرحلات.

Nothing reaches Git unchecked. Every change takes the same three steps before it reaches Git.

How it works in detail →
  1. CoordinateAgents claim what they will change before they change it.
  2. CheckYour rules run before anything lands, the same way every time.
  3. LandEvery change reaches Git with signed evidence.

Faster source control, same collisions.

Anthropic went from 2,500 to over 30,000 merges a day and rebuilt source control to keep up; OpenAI rebuilt its Git server for Codex. Faster source control doesn't stop two agents from starting work that conflicts.

Without coordination

42–71%

of tokens went to work that never landed.

35 agents on one codebase, unscheduled git

What happens with 35 agents on one codebase using Nool

98–100%

of tasks landed. Same agents, same tickets, same model.

vs 33–62% for unscheduled git
41%

fewer tokens per task landed. Almost nothing has to be redone.

See the full benchmark

Vendor-run and pre-registered. Every result, condition and limit is published.

  1. 01Coordinate

    Control

    You decide what each agent may change. Agents claim code before they edit it, so overlap shows up first.

    Original screenshots: Claude Code, opencode, Codex.

    Claude CodeHolds quota_for
    $ nool announce intent --intent "Raise Team plan quota to 60,000 and update team_quota test" --target-nodes node:crates/billing/src/lib.rs#quota_for,node:crates/billing/src/lib.rs#team_quota --agent-id $NOOL_AGENT_ID✓ Announced intent: Raise Team plan quota to 60,000 and update team_quota test  Lease: seq 4, exclusive mode, expires in 1800000 ms
    opencodeRefused, then cleared
    $ nool announce intent --intent "Add startup plan (10,000 req/mo) to quota_for and a test" --target-nodes node:crates/billing/src/lib.rs#quota_for --agent-id $NOOL_AGENT_IDError: Coordination conflict: agent b0deb2ca (Raise Team plan quota to 60,000 and update team_quota test) on node:crates/billing/src/lib.rs#quota_for.$ nool announce wait node:crates/billing/src/lib.rs#quota_for✓ node:crates/billing/src/lib.rs#quota_for is free.

    Real sessions, 2026-11-04 · nool 7.24.0

Bring your agents. Keep your Git.

Why Nool →

Keep your Git forge. Keep your CI/CD.

Your code stays in Git. Your team keeps its repositories, reviews and CI, so agentic engineering can scale across the company without a migration.

Use the agents you already run: Claude Code, Codex or opencode. Want a harness your team owns? nool code is the one Nool ships, optional and governed the same way.

How nool code works
Your agentsClaude Code, Codex, opencode
NOOLCoordinate, Check, Land
Git historyStandard commits on your branch
Your forgeGitHub, GitLab or any Git hostUnchanged
Your CI/CDGitHub Actions, GitLab CI, JenkinsUnchanged

An AI reviewer can approve tomorrow what it rejected today. A rule can't.

  1. 02Check

    Enforcement

    Tests and policy run before a change lands. A change that breaks them is refused, not flagged afterwards.

    Configurable rules. YAML beside the code; edit the file and it applies to the next change.

    policies/no_secret_keys.yaml
    policies/no_secret_keys.yaml
    inv_id: POL-WS-001title: "No secret keys in source code"scope: { type: global }kind: behavioralseverity: criticalmode: blockingreason_code: 403when:  # skip tests: fixtures may hold fakes  not: { semantic_path_is_test: true }forbids:  # refuse AWS access key IDs  - diff_matches: "AKIA[0-9A-Z]{16}"

    Hard rules, installed for your teams. Compiled to WASM and sealed; changed only by rebuilding.

    billing_needs_test/src/lib.rs
    billing_needs_test/src/lib.rs
    fn evaluate(ctx: &PolicyContext) -> PolicyResult {  let changed = changed_paths(ctx);  let has_test = changed.iter().any(|p| p.ends_with(".test.ts"));  for p in &changed {    if p.starts_with("src/billing/") && !has_test {      return PolicyResult::deny(499, format!(        "{p} is billing code: include a test for it in the same change"));    }  }  PolicyResult::Allow}
    billing-api — zsh
    ~/billing-api $ ls policiesbilling_needs_test.wasm  no_secret_keys.yaml~/billing-api $ nool propose --path src/config.ts --intent "Add AWS config for usage export" --solidify[Aram DSL] POL-WS-001 failed: diff_matches(AKIA[0-9A-Z]{16})Error: Gate stack denied [POLICY_DENY] at stage pre-propose: reason code 403
    Rules
    no-secret-keysYAMLBlocked
    billing_needs_testWASM
    Show the terminal output
    billing-api — zsh
    ~/billing-api $ ls policies
    billing_needs_test.wasm  no_secret_keys.yaml
    ~/billing-api $ nool propose --path src/config.ts --intent "Add AWS config for usage export" --solidify
    [Aram DSL] POL-WS-001 failed: diff_matches(AKIA[0-9A-Z]{16})
    Error: Gate stack denied [POLICY_DENY] at stage pre-propose: reason code 403
    ~/billing-api $ nool propose --path src/billing/invoice.ts --intent "Add invoice totals" --solidify
    Error: Gate stack denied [POLICY_DENY] at stage pre-propose: src/billing/invoice.ts is billing code: include a test for it in the same change (code 499)
    ~/billing-api $ nool propose --path src/billing/invoice.ts --path src/billing/invoice.test.ts --intent "Add invoice totals with a test" --solidify
    ID      : 222638be
    Intent  : Add invoice totals with a test

    nool 7.24.0, fresh repository

  2. 03Land

    Audit evidence

    Every change carries its intent, test results and approvals in a signed record anyone can verify.

    auth-service — zsh
    ~/auth-service $ nool solidify  [Engine] ✅ No conflicts detected.  [Attest] ✅ 2 attestation(s) recorded for dd4652dc (evidence c02807a5)✓ Solidified Knot [dd4652dc] Knot dd4652dc  ├── 🔀 Concurrency: Commutative linear merge (0 conflicts)  ├── 🛡️ Invariants: 1 architectural rules satisfied · 0 breaking API changes (avoided ~90m incident risk)  └── 🔗 Git Mirror: Dual-state commit [b908c79f] live on 'main'
    Evidence
    compileintegrity-driverpass
    unit-testsintegrity-driverpass
    tests_constrain_change2 mutant(s) killedpass
    Show the terminal output
    auth-service — zsh
    ~/auth-service $ nool propose --path crates/auth/src/lib.rs --intent "Refactor authentication token validation"
      ▸ Collecting changes & verifying scopes...
      [Reify] 👻 Ghost-Run: Executing project-level tests...
      [Mutation] tests_constrain_change: pass (2 mutant(s) killed)
      ▸ Simulating commutative merge & invariants...
    📋 Staged Proposal [d81c96f7a29b] Refactor authentication token validation
      ├── 🛡️ Invariants: 3 architectural rules satisfied · 0 breaking API changes (avoided ~90m incident risk)
      ├── 🪙 Token Savings: Scoped AST context saved ~1k tokens (~$0.00)
      ├── 🧵 Thread: Scoped to thread 'main'
      └── ⚡ Mode: Full (Semantic verification)
    ~/auth-service $ nool solidify
      [Engine] ✅ No conflicts detected.
      [Attest] ✅ 2 attestation(s) recorded for dd4652dc (evidence c02807a5)
    ✓ Solidified Knot [dd4652dc] Knot dd4652dc
      ├── 🔀 Concurrency: Commutative linear merge (0 conflicts)
      ├── 🛡️ Invariants: 1 architectural rules satisfied · 0 breaking API changes (avoided ~90m incident risk)
      └── 🔗 Git Mirror: Dual-state commit [b908c79f] live on 'main'
    
    Evidence: compile pass (integrity-driver) · unit-tests pass (integrity-driver) · tests_constrain_change pass (2 mutant(s) killed)

    nool 7.24.0, fresh repository

Security teams ask where the code lives, who signs what, how rules are protected from tampering and what happens if a signing key is compromised. The answers are on one page.