Deployed code that repairs itself.

fluidfix watches your test suite and restores mechanical regressions byte-exactzero AI tokens per decision. Teach it a bug class once, from one example; every future member is fixed free, forever. Unknown bugs are refused loudly, never guessed.

Pre-book a license Star on GitHub $ pip install fluidfix
# deploy, commit, forget — real run, 0.7s
$ fluidfix guard . --commit
[16:43:06] billing.py: repaired line 2 in 4 suite runs (0.7s):
  - return p * (1 - rate)
  + return p * (1 + rate)
  committed

$ git log --oneline -1
2298af3 fluidfix: restore billing.py:2
26/27
byte-exact vs 22/27 for full Opus 5, same corpus
0
wrong repairs ever measured
0 tok
per decision, forever
432/432
decisions correct under all renumberings
0.7s
typical repair, committed

see it run

76 seconds, real time, unedited output

Install from PyPI, a regression ships, the guard repairs and commits it, a novel class is refused, taught from one example, and the whole class becomes free — every duration on screen is measured.

The full demo — follows the CI-tested script in docs/DEMO.md step for step.
One hard example → the whole class: one dictionary repairs three different files, each restoration committed.

how it works

A four-instruction kernel decides. Your suite judges.

The decision layer is a machine-authored, exhaustively verified expression — not a model, not a lookup table. Run fluidfix selfcheck and re-derive every law on your machine in about a second.

01

Localise

Traceback frames ∪ failing-test coverage ∪ AST spans find the fault file and line. Mechanical, zero tokens.

02

Route

The kernel maps the observed fault class to its repair from ONE worked example.

act = 15 & ((x>>4) + ((x>>8) − x))
03

Judge

Your own test suite accepts or rejects every candidate. Rejected candidates roll back byte-exact.

04

Refuse

Empty mask → loud refusal, untouched tree, and a machine-readable teach-me signal. Never a plausible guess.

precision

More exact than the model it replaces

On 33 real-library bugs: 26/27 byte-exact in-vocabulary vs 22/27 for full Opus 5 debugging — which also shipped five suite-green-but-different edits. fluidfix shipped zero.

economics

Pay for a class once, decide members free

One worked example buys an entire fault class. Every future instance routes in four integer instructions — re-runs, audits, renumberings included.

honesty

Refusal under contract

Green suite: touches nothing. Unknown class: refuses, exits 2, writes the teach-me report. The failure mode is a statement, not a wrong edit.

what it fixes — honestly

You teach rules, not values.

fluidfix learns a whole bug class from one example when the fix is a rule you apply to the broken line. When a fix needs a value that isn't on the line, it refuses instead of guessing. Both columns below are from a real generalisation test — one example taught, then run on different, unseen bugs of the same class.

generalises from one example ✓

Rule-shaped fixes

Flipped >= / >, swapped + / , off-by-one literals, and/or, True/False, ==/!=, a .get() missing its default, swapped return operands. One example = the whole class, free forever.

Tested: 11/11 unseen bugs repaired byte-exact.

refused, never guessed ✗

Value-shaped fixes

The right variable name, the right constant, the right guard for this function — information the broken line doesn't carry. One example of name→email can't know the next bug is count→total. fluidfix leaves these for a human.

Tested: 0/5 — every one safely refused, zero wrong edits.

That refusal is the product: an unattended repair tool is only trustworthy if its failure mode is a loud "not this one," never a silent wrong edit. Measured record across every test: many repairs, zero wrong ones.

one example, measured

Teach a class once. Here's exactly how far that goes.

Each class was taught from one worked example, then tested on different, held-out bugs of the same class. These results are enforced as tests in the repo's CI — if they stop being true, the build goes red.

Class shapeHeld-out bugsResult
Rule-shaped — flipped +/−, comparison strictness, off-by-one literals, missing .get default… 11 bugs · 4 classes 11/11 repaired byte-exact
Value-shaped, repo-searchable — the wrong attribute, name, or constant, where the correct value exists somewhere in your repo: fluidfix mines the candidates (bounded at 32) and your suite judges each one. One registration covered .name→.id and .count→.total — different values, same class. held-out set repaired byte-exact
Value not in the repo — the right answer was a computation that exists nowhere in the codebase. 1 case every candidate failed → refused, tree byte-identical

The contract underneath all three rows: fluidfix has never made a wrong repair — every fix passes your full suite or is rolled back byte-for-byte, and what it can't prove, it refuses. Precision is bounded by your suite's strength, which is also why it rewards teams that test.

students & open source

Free for your repos. Forever.

fluidfix is open source (AGPL) — students, hobby projects, and open source pay nothing, ever. If your repo has a pytest suite, you can guard it in three steps. Never written a test? The quickstart teaches you the whole idea in 2 minutes — call your function, check the answer.

step 1

Install & verify

pip install fluidfix
fluidfix selfcheck

Selfcheck re-proves the whole engine on your machine in about a second — expect SELFCHECK PASS.

step 2

Guard your repo

cd your-project
fluidfix guard . --commit

Green tests: it touches nothing. A mechanical bug: it finds the file itself, repairs it byte-exact, and commits fluidfix: restore …. An unknown bug: it refuses loudly — that one's yours to fix, and honestly, that's the good practice.

step 3

Guard it on GitHub

Add .github/workflows/fluidfix.yml so every push is checked:

name: fluidfix
on: [push]
jobs:
  guard:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with: {python-version: "3.12"}
      - run: pip install -e . pytest pytest-cov fluidfix
      - run: fluidfix guard .
        # exit 0 = green or auto-repairable
        # exit 2 = a real bug fluidfix won't guess at — fix it yourself

Full walkthrough with expected outputs (every step CI-tested): docs/DEMO.md. Built something cool with it? Email me — student stories get featured.

pricing

Open source forever. Pre-book the rest.

Checkout is being set up — pre-booking costs nothing today, locks the launch discount, and puts you in the first-ten cohort. We email you when payment opens; you can walk away any time.

Open source

$0
AGPL-3.0 · forever
  • Full engine, guard, selfcheck
  • Teach classes with register()
  • Commercial use under AGPL terms
pip install fluidfix

Commercial license

$39$19/repo/mo
first-ten cohort · locked for as long as you subscribe
  • Per guarded repo, unlimited developers
  • No copyleft obligations — proprietary & SaaS OK
  • 60-day guarantee: a real regression repaired, or full refund

Custom dictionary

$1,500
one-time · per repository
  • Fault classes compiled from YOUR bug history
  • Ships as versioned company_rules.py
  • The kernel runs it free forever

Enterprise (unlimited repos, SSO, SLA) from $10k/yr — talk to us. Every number on this page comes from measured runs: benchmark & per-bug data.

pre-book

Reserve your launch pricing

Reserve launch pricing or book a free 20-minute live demo — I run fluidfix on your repo while you watch. No card, no charge.

Submitting opens a pre-filled email to devkancheti4@gmail.com if in-page reservation isn't available in your viewer. Nothing is charged either way.