Skip to main content
Jeffy Loop - point it at a project, give it a budget, come back to a better codebase and a report

Validate Claude Code Platform License: MIT

Quick Install  ·  Usage  ·  How it works  ·  The receipts  ·  Headless  ·  White paper

Autonomous Engineering With Proof

Agents that don’t just act.
They audit · verify · attack · and prove.

Jeffy Loop is an autonomous engineering system built around a simple principle: AI agents shouldn’t just produce work. They should produce evidence that the work is correct. Instead of asking an agent to complete a task and trusting its conclusion, Jeffy creates a continuous Audit → Attack → Verify → Prove loop in which specialized agents inspect the work, challenge it, validate the result, and generate an auditable record of what happened. The goal isn’t simply autonomous code generation; it is autonomous engineering with proof - where every claimed result is accompanied by reproducible evidence that can be independently examined.

Jeffy treats “done” as something that must be demonstrated, not declared. The system is designed to turn autonomous engineering from a conversational interaction into an evidence-producing process: actions leave traces, decisions have provenance, failures are exposed rather than hidden, and successful outcomes produce a durable receipt of what was changed, why it was changed, and how the result was verified.

The proof

Jeffy was run against 132 open-source projects with no connection to this repository, each judged by its own test suite, every run published, failures included.

Projects tested Converged Failed PRs merged PRs open Issues filed
132 103 28 29 35 4
Pie chart of the 103 converged public targets by language: Python 20 at 19.4 percent, Rust 14 at 13.6 percent, Go 12 at 11.7 percent, JavaScript 10 at 9.7 percent, C++ 7 at 6.8 percent, Java 6 at 5.8 percent, Ruby 6 at 5.8 percent, Swift 6 at 5.8 percent, C 5 at 4.9 percent, PHP 5 at 4.9 percent, TypeScript 5 at 4.9 percent, Kotlin 4 at 3.9 percent, C# 3 at 2.9 percent.

103 projects run to convergence across 13 languages with no language-specific analyzer or ruleset. Derived from the scorecard at render time.

Independent Validation

A merged pull request is the one result Jeffy cannot award itself. It takes an independent maintainer, someone with no stake in this project, to review the patch and accept it into their own codebase. Maintainers across 23 open source projects have done exactly that, including:

Merged by Pull request Merged in
Google snappy #257
Every release build compressed a 4 GiB input into a stream whose header claimed 0 bytes
1 day
Apple swift-log #504
A documented no-op setter asserted instead
2 days
swift-log #503
A handler implementing only log(event:) overflowed the stack on the SwiftLog 1.0 entry point
5 days
swift-protobuf #2164
The project's own CMake build of protoc-gen-swift had not compiled since June
15 hours
Microsoft mimalloc #1385
The zeroing allocator returned uninitialized memory above the small-size threshold
8 hours
snmalloc #878
The header-only build recipe named a CMake target removed in 2021 and include paths that resolved nowhere
2 hours
Apache commons-text #768
A StringMatcher overload forwarded the buffer end as its start
2 days
commons-csv #633
The record counter's Javadoc said headers were not counted while the constructor's header was
3 days
JetBrains kotlinx-datetime #650
Deprecation quick-fixes pointed developers at the wrong replacement
90 minutes
kotlinx-datetime #649
The Unicode pattern parser dropped the escaped quote inside a literal
4 days
Node.js ada #1244
The URL parser Node.js ships reported host_end one byte short
12 minutes
Cloudflare circl #700
The PKI marshal functions panicked on the library's own post-quantum keys instead of returning an error
1 day
circl #699
The hybrid KEM derived a different key pair from the same seed on a random subset of calls
1 day

See every project, every patch, and every failure

Quick Install

You need Claude Code, signed in once, and git. The installer handles everything else, including jq.

git clone https://github.com/lenamonj/jeffy-loop.git
cd jeffy-loop
./install.sh        # Windows PowerShell: .\install.ps1

If PowerShell refuses with "running scripts is disabled on this system", run in PowerShell:

powershell -ExecutionPolicy Bypass -File .\install.ps1

Or from PyPI, no clone needed; pipx install jeffy-loop and uv tool install jeffy-loop work the same way:

pip install jeffy-loop
jeffy install       # installs Jeffy as a Claude Code skill

Running Jeffy

Open Claude Code in the project you want to improve and type /jeffy 10. It is a slash command inside the session, not a shell command.

/jeffy                                     # 10 iterations, full-spectrum improvement
/jeffy 5                                   # 5 iterations
/jeffy 12 accessibility and performance    # 12 iterations with a focus directive
/jeffy 5 --highs                           # High hunt: find and fix only the Highs
/jeffy 10 --max-time 2h                    # 10 iterations, but stop after two hours either way

When the run ends, start a new session to run it again; the restart is doing real work. A High hunt fixes only the Highs and stops at the first audit that finds none, so it is usually the faster run. Usage covers every flag, rounds and budgets, scoped mode, and cancelling.

What the engine enforces

Each one is enforced by the iteration prompt, the state files, or the Stop hook. How.

  1. It audits like an engineer, not a linter. A finding exists only when the loop can point at it and prove it with a runnable check.
  2. It cannot wreck your repo. Every iteration is a local commit, a broken verify is reverted, and nothing is ever pushed.
  3. "Done" is not the agent's opinion. An adversarial evaluator and a shell gate re-check every declaration.
  4. It cannot declare convergence over code it never looked at. The loop maps the public surface into a checklist, every swept row records the commit it certified, and the Stop hook refuses the declaration while any row is unswept.
  5. Lessons become machinery. A rule learned once binds every later iteration, and the engine itself passes 347 behavioural checks on Linux, Windows and macOS.

Documentation

Page What it covers
Usage Flags, rounds and budgets, High hunt, scoped mode, cancelling, upgrading, uninstalling, and what to know before a first run
How it works The run lifecycle, what the engine enforces, the full rule set, what a converged stop looks like, and how the loop improves itself
Headless runs Running budgeted rounds unattended from bash or PowerShell
The receipts Every open-source target with its outcome, the merged patches, the greenfield builds
Contributing The validator and the review bar
White paper For readers new to agent loops: how loops got here, every rule from first principles, and what this method still cannot do

[!IMPORTANT] Trust model. The engine is one shell script, skills/jeffy/hooks/stop-hook.sh, plus the small library beside it in skills/jeffy/hooks/lib/, registered as a Claude Code Stop hook. In a session with no live Jeffy state file it exits at once and does nothing. The installer writes two skill folders under ~/.claude/skills, one hook entry in ~/.claude/settings.json, and, only if you say yes when jq is missing, a jq install through your package manager.

License

MIT

Release files for jeffy-loop 1.23.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jeffy-loop 1.23.1
File Size Uploaded
jeffy_loop-1.23.1.tar.gz 116.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jeffy-loop 1.23.1
File Interpreter ABI Platform
jeffy_loop-1.23.1-py3-none-any.whl Python 3 none any Details

Total release size: 247.2 kB

Release files / jeffy_loop-1.23.1.tar.gz

Download URL jeffy_loop-1.23.1.tar.gz
Size 116.8 kB
Tags Source
SHA-256 checksum
How to use checksums
55214baec8f5bc6cfc25d37eb1b1cd4530732e3b6f5918608c9d81656621d000
BLAKE2b-256 checksum
How to use checksums
15b4e693e264823bdc36401f62523308d1e315504064074ff0cd82f9f0d8a920
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / jeffy_loop-1.23.1-py3-none-any.whl

Download URL jeffy_loop-1.23.1-py3-none-any.whl
Size 130.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2ea3c68da2f18734c84c735505592abb4e397364b45d2b94b5ae3c25e4a275d1
BLAKE2b-256 checksum
How to use checksums
9fa9920053c3ee8b8542b8b9df622bea4942a532df7158132f8df3095804fdec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release history Release notifications | RSS feed

1.24.0

2 release files

1.23.3

2 release files

1.23.2

2 release files

This release

1.23.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page