治る · to be fixed

Autonomous code repair
that earns the commit.

Naoru drives your software, judges the result, and has an LLM propose a fix in an isolated worktree — then gates every autonomous commit behind a deterministic red-first oracle. No false greens. No silent regressions.

The loop

Drive → judge → fix → gate.

A bounded, deterministic loop. The engine core imports zero host code — it binds to your environment through three seams, so it runs on arbitrary-language repos.

01 · drive

Drive

Launch the system-under-test, stream output, detect when it terminates.

02 · judge

Judge

Score the run RED or GREEN with machine-checkable predicates — exit code, traceback, contract, output.

03 · fix

Fix

A bounded LLM worker proposes a patch in an isolated git worktree. Your model, inherited from host config.

04 · gate

Gate

The oracle re-runs the check blind to the fix. Only a proven repair is allowed to commit.

Why you can trust the commit

A red-first oracle stands between the fix and your history.

  • RED→GREENRed-first. The check must have genuinely failed before the fix, then pass after. A patch can't take credit for code that was already green.
  • N-of-MRepeated. The post-fix pass is confirmed across multiple runs, so a flaky green never clears the gate.
  • blindFixer-blind. The oracle that validates the repair never sees the patch's reasoning — it judges behavior, not narrative.
  • safeSandboxed by default. Bounded worker, isolated worktree, gate-required commits. --unsafe is an explicit opt-in.
Missions

Point it at a goal, declare your checks, let it run.

Author checks as declarative leaves — a command plus a pass-predicate. naoru leaves generate proposes a starter set from your project's own tooling.

auto-committest-and-fix-bugs

Red-first oracle. Finds a failing check, repairs it, and commits only a proven fix.

auto-commitimprove-performance

Metric gate. Keeps a change only when it measurably moves the number you defined.

reviewimprove-ux

Proposes a patch for human review. Never commits autonomously.

reviewgeneral-improvement

Open-ended propose-a-patch for review — the engine suggests, you decide.

Get started

Install naoru and its host.

Naoru is the repair engine; a host binds it to your environment — LLM access, runtime paths, tooling discovery. Obra is the default host, and one command installs both:

Prefer a different host? Naoru is host-agnostic by design. The [obra-host] extra is just the default — install bare uv tool install naoru and bind your own environment through fix_engine.host.configure_host(...). Obra is the batteries-included choice, not a requirement.

On autopilot

Let it fix what's broken while you sleep.

Install naoru View on PyPI