Fux
Deterministic knowledge retrieval for AI-assisted codebases — rank from a small git-carried index, fetch content from the systems that own it, verify at answer time.
Status (2026-08-19): M2 shipped — the accelerator is in. From any repo:
fux setup # writes the files you own, write-if-missing fux ingest # builds the committed .fux/index/*.jsonl (+ the accelerator) fux ask "your question" # ranks with BM25F, cites the source file fux find "your question" # ranked locations, one per line fux answer "a question" # the single best answer the index can giveWhat fux indexes is two committed files, not config.
.fux/sources/dirsand.fux/sources/urls, one entry per line, on one grammar — so a 5 000-entry corpus diffs and merges line by line, and the loader sorts so file order can never change a committed byte. Warmaskis measured at a worst-case p95 of 27.2 ms on 8 870 RFC documents — against a pre-registered 150 ms bar, where the reference scan takes 4.2 s (prediction R3 PASS, the run).The speed comes from a derived index under
.fux/runtime/— never committed, rebuilt from the committed shards byfux build. It is bound by a differential law: its results are byte-identical to the reference scan's, asserted over thousands of comparisons rather than spot-checked.fux ask --scanforces the reference path.A dense lane exists behind
ask --hybridand is off by default — on the graded corpus it closes three known gaps and breaks nine working queries, so the default is a measurement rather than a preference.URLs join the corpus through a consumer-owned fetcher file.
fux setupwrites two —http.py(a plain stdlib GET, the default) andcdp.py(Chrome DevTools Protocol, also pure stdlib) — into.fux/fetchers/, where they become your code and fux never rewrites them. Record a URL withfux url <URL> [--cdp] [--plain], thenfux ingest --refresh-urls— the only networked path in the engine. A line picks its own fetcher; nothing escalates automatically (ADR-URL-LIST · ADR-FETCHER). No graph query lane yet (M3). The v0.26 engine and its docs are archived underarchive/v0.26/, reference-only. The new architecture is specified inwork/paper/the-fux-index-paper.md(§4–§6 knowingly stale until M6) and built against the ADR register.The pruning gate closed (2026-08-09): FAIL. Keeping only each document's top-k terms was measured, twice, against a corpus that could actually test it — no selector came within 35.9 points of preserving candidate recall at a 6 % budget. The committed index carries full postings, permanently — P1-RERUN.
The idea
- Sources own content. Repo docs stay in git; Confluence pages stay in
Confluence. Fux never keeps a durable copy (except explicit per-source
snapshotpolicy). - Git carries the index — doc-major, sharded, human-readable JSONL;
full per-document postings, dense binary codes, an extracted link graph,
and a source ledger, one line per document, sorted and content-sharded so
git itself diffs and merges it —
work/compare/index-format.compare.md. - Answers verify themselves. Rank in the index, fetch the cited
documents live (through a version-keyed cache), re-score passages on the
fetched bytes, cite the fresh sha. (The refer plane is M4; M1's
askcites straight from the committed index.) - Laws: $0 default · stdlib-only · byte-deterministic · offline by default · one ADR per feature, every rule referenced.
The .fux/ directory
Everything fux puts in your repo lives here, and every child is declared as committed or derived (ADR-DOTFUX):
| entry | kind | what it is |
|---|---|---|
index/ |
committed | the sharded JSONL index |
sources/ |
committed | the source lists — dirs and urls, one entry per line |
fetchers/ |
committed | your code (http.py, cdp.py) — written by fux setup, never rewritten |
runtime/ |
derived | M2's accelerator segments (gitignored, CACHEDIR.TAG) |
cache/ |
derived | M4's fetch cache (gitignored, CACHEDIR.TAG) |
Scaffolding has two moments. Every fux ingest writes .fux/README.md
and a narrow .fux/.gitignore (derived names only, never *) if they are
missing, and never touches them again — a fresh clone has to be correct before
a byte is written. fux setup is the one that writes code: the fetchers and
the source lists, explicitly, once. Ingest never puts a fetcher in a repo
that only wanted an index.
fux doctor fails if the index has been git-ignored and warns about anything
undeclared.
Reading order
work/paper/the-fux-index-paper.md— architecture + falsifiable predictionswork/compare/index-format.compare.md— the committed format, measured- the ADR register — milestones M0–M8
work/adr/0004_index-format.md— the frozen M1 schema../fux-playground/PLAYGROUND.md— a graded 10-doc corpus to try it on, in a separate sibling repository (clone it next to this one)work/WORKLOG.md— the running build log
License: MIT.
Release files for fux-engine 0.33.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fux_engine-0.33.0.tar.gz | 8.2 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fux_engine-0.33.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.2 MB
Release files / fux_engine-0.33.0.tar.gz
| Download URL | fux_engine-0.33.0.tar.gz |
|---|---|
| Size | 8.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e09d8395b73e1be5ec6032d0ab2180d4ee36e4da14d100317449068ea0eab4cc
|
|
BLAKE2b-256 checksum How to use checksums |
2d40a2e56dd54508264c2c591dd60145c0aab43357fccb6d220565afa278e937
|
| 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 Aug 19, 2026.
Transparency logRelease files / fux_engine-0.33.0-py3-none-any.whl
| Download URL | fux_engine-0.33.0-py3-none-any.whl |
|---|---|
| Size | 7.0 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e76e17ef5d42710e393ec7b521366f6771243fb9921c9a0e76d8397b4e871328
|
|
BLAKE2b-256 checksum How to use checksums |
d4807147a80f69fa68c7d056d22df362eff01926028b6e5e2c70339b27608408
|
| 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 Aug 19, 2026.
Transparency log