Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

fux

Your team's docs, as a search index your AI agent can trust.

Ranked. Cited. Checked against the source. Committed to git.
No server · no vector database · no API key · no model · zero dependencies

PyPI npm Python 3.12+ Dependencies: 0 License: MIT

fux is pronounced "fox".


Your agent can read every line of your code. It still doesn't know why the code is the way it is — that lives in ADRs, runbooks, specs, wiki pages and the PDF someone attached to a ticket in 2023.

So it greps, guesses, or asks a vector database for "the nearest chunk" — and gets an answer that sounds right, from a doc that went stale six months ago.

fux fixes that with boring, auditable arithmetic:

$ fux answer "how do I roll back a release"
To roll back a bad release, run `make rollback` from the release branch.
The previous image tag is kept for 7 days.

  -- docs/deploy.md:L1-L6 (sha 18ac8c4e4d33, current)

$ fux ask --band "kubernetes autoscaling limits"
No confident matches.
confidence: none - nothing in the index scored for this query.

The first answer quotes exact lines and proves they still say that today. The second one refuses — because your docs don't cover it, and a confident wrong answer is worse than none.

fux in three boxes: your documents stay put, a small index is committed to git, queries return ranked, cited answers

Why people use fux

grep / rg Vector-DB RAG fux
Ranks by relevance ❌ ✅ ✅ BM25F, field-weighted
Runs with nothing hosted ✅ ❌ server, embeddings, key ✅
Same query → same result, every machine ✅ ⚠️ depends on model + chunker ✅ byte-identical
Cites exact line ranges lines, unranked chunks ✅ plus a current / stale verdict
Says "I don't know" — returns the nearest neighbour ✅ confidence band
Index reviewable in a PR — ❌ opaque vectors ✅ plain JSONL, diffs like code
Reads PDF, Word, Excel, slides, wikis ❌ depends ✅ editable decoders
  • 🗂 Clone and ask. The index lives in .fux/index/. Every clone — yours, a teammate's, CI's, your agent's — searches the same thing. Nothing to deploy.
  • 🔍 Answers you can audit. answer re-reads the cited lines from the source and tells you whether they still match. --receipt + fux verify lets anyone reproduce it later.
  • 🤖 Built for agents first. fux setup drops ready-made skills and instructions for Claude Code, Codex, GitHub Copilot and Kiro, and fux mcp serves the index over MCP.
  • 🔒 Offline unless you ask. No telemetry, no network on any default path, PII redaction before anything is committed.
  • 🧾 Your docs never move. fux stores statistics, not content. Sources stay in the repo or in the system that owns them.

60-second quickstart

pip install --pre fux-engine     # Python ≥ 3.12 · Linux, macOS, Windows · zero deps
cd your-repo
fux setup                        # writes .fux/ and agent instructions (only missing files)
fux ingest                       # indexes README.md and docs/ by default
fux ask "how do we roll back a release"
git add .fux fux.toml && git commit -m "Add fux index"

That's it. Your teammates — and their agents — now get the same answers from a plain git clone.

No Python on the machine? fux setup vendors a single-file, zero-dependency Node reader into .fux/node/, so .fux/fux find rollback works with nothing installed. Or: npx fux-engine find rollback.

Prefer a library?

from fux import open as fux_open
fux_open(".").ask("how do we roll back a release")

Plug it into your coding agent

fux setup        # skills + instructions for Claude Code, Codex, Copilot, Kiro, plus AGENTS.md
fux mcp          # MCP over stdio: fux_search, fux_passage, fux_related

The instructions teach the agent to search the index before grepping, read the JSON (not the prose), and treat an archived document as history rather than as the current design. There's deliberately no answer tool over MCP — the agent is the answerer; fux is the evidence. (SR-AGENT-POLICY · SR-MCP)

What it can read

  • Text: Markdown, reStructuredText, AsciiDoc, Org, plain text
  • Office & data: PDF, Word, PowerPoint, Excel, CSV/TSV, JSON, YAML, TOML, INI, XML
  • Everything else: HTML, email, draw.io, SVG, images (via your agent, fux enrich)
  • Web pages and wikis: fux add <url> — plain HTTP, or through the session your signed-in Chrome already holds, so internal wikis work too

Every decoder and fetcher is copied into .fux/ as your code — read it, edit it, replace it (SR-DECODE, SR-FETCHER).

Everyday commands

I want to… Run
Rank documents for a question fux ask "…"
One answer, quoted from the source fux answer "…"
Just file paths, for piping fux find "…"
Know why something ranked, or how sure fux is fux ask --why "…" · fux ask --band "…"
Machine-readable output add --json
Index another folder, file or URL fux add <path-or-url>
Re-index after changes fux ingest (or fux hooks to do it on every commit)
Fix a wrong answer, durably fux correct "<question>" <doc-that-answers-it>
Follow links between docs fux explain <doc> · fux graph "…" · fux path <a> <b>
Find duplicate, unreachable or boilerplate docs fux inspect
Keep IDs whole (RF 118 = RF-118) fux identifiers
See it all in a browser fux serve — Ask, Answer, Documents, Words, Index, Identifiers
Check the setup fux doctor (read-only, offline)

Full surface: fux --help and SR-CLI.

Measured, not assumed

Every claim ships with a pre-registered bar and a published run — including the ones that failed.

  • ⚡ 27.2 ms worst-case p95 for warm ask --fast over 8,870 RFCs, against a 150 ms bar (run). The fast path must return byte-identical results to the full scan.
  • 🕸 24/24 on a graded 66-document graph corpus, with the derived graph hashing identically on x86-64 Linux and arm64 macOS (run).
  • 🪦 Failures kept on file. Index pruning failed its gate (verdict). A dense embedding lane fixed 0 queries and broke 2 — so it was deleted.

What fux is not

Honesty up front, so you don't find out the hard way:

  • Not code search. No AST, no symbols, no call graph. Pair it with a code-graph tool; fux covers what you wrote down.
  • Not semantic magic. Ranking is lexical. If your docs say "revert" and you ask "undo", use --expand, or teach it once with fux correct.
  • Not a chatbot. fux finds and verifies evidence. Your agent (or you) writes the answer.

Status

3.0.0 is in alpha (pip install --pre fux-engine); 2.0.x is the latest stable line. The index format is versioned and fux tells you when to run fux ingest --full. Every change is in CHANGELOG.md.

⭐ Star the repo if fux saved your agent from one confident wrong answer — it's how other people find it. 👀 Watch → Custom → Releases to hear when 3.0 goes stable.

Under the hood

Architecture diagrams
The thirteen laws fux is built under

Every decision of record lives in the SR register (SR-LAWS): L0 SRs are the source of truth · L1 a retired SR is archived · L2 $0, FOSS-only · L3 content never durable · L4 deterministic · L5 offline by default · L6 say "index" · L7 Python ≥ 3.12 · L8 Node ≥ 22 · L9 use record never committed · L10 build output, never source · L11 the sealed answer key is closed to Claude · L12 every value lives in a config file. The laws were renumbered on 2026-09-28; an older document is read through SR-LAWS decision 2a.

Security and sensitive text
  • .fux/pii.toml redacts matches before anything reaches the committed index; fux will not run without it (SR-PII).
  • .fux/refusals.toml stops a sign-in wall being indexed as the page behind it (SR-REFUSAL).
  • Only explicit, opt-in commands touch the network, and they say so on stderr (L5).
Reading order for contributors
  1. docs/index.md — the map of every doc in the repo
  2. The SR register — every decision of record
  3. The paper — what ships, what was measured, what was designed and not built
  4. Sibling environments — the sandbox, measurement lab and benchmark harness
  5. CLAUDE.md — how work is done here, for people and agents

Contributing

pip install -e ".[dev]" && pytest

Issues and PRs welcome — bug reports with a failing query are gold. Every change to an SR-owned component updates its owning record in the same commit; CI checks it. Start with CLAUDE.md.

License

MIT — free forever, FOSS-only dependencies forever (L2).

Metadata

Release files for fux-engine 3.0.0a11

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

Source distribution (sdist)

Source distribution for fux-engine 3.0.0a11
File Size Uploaded
fux_engine-3.0.0a11.tar.gz 74.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for fux-engine 3.0.0a11
File Interpreter ABI Platform
fux_engine-3.0.0a11-py3-none-any.whl Python 3 none any Details

Total release size: 75.4 MB

Release files / fux_engine-3.0.0a11.tar.gz

Download URL fux_engine-3.0.0a11.tar.gz
Size 74.1 MB
Tags Source
SHA-256 checksum
How to use checksums
b7f243e45166ba860b5d3d705f3aceb89ced34a339a949ed7b85f018c5e90e1b
BLAKE2b-256 checksum
How to use checksums
7bd01cd1d8ecc1710879ba8f5267320c50e3e36bdfb89b2e412fbd926c8187de
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 Oct 5, 2026.

Transparency log

Release files / fux_engine-3.0.0a11-py3-none-any.whl

Download URL fux_engine-3.0.0a11-py3-none-any.whl
Size 1.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
96927253ca2bc340fcec8c3c5504f11d048754a043f113a77c223884ea7bf4f5
BLAKE2b-256 checksum
How to use checksums
de0e56e0d684b6b742ae65ab342785ad5c52b6a97aad70f3b373369c0f5611e9
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 Oct 5, 2026.

Transparency log

Release history Release notifications | RSS feed

3.0.1

2 release files

This release

3.0.0a11 This release

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.0.0

2 release files

0.37.1

2 release files

0.37.0

2 release files

0.36.0

2 release files

0.35.0

2 release files

0.34.0

2 release files

0.33.0

2 release files

0.32.0

2 release files

0.30.0

2 release files

0.26.0

2 release files

0.25.0

2 release files

0.24.0

2 release files

0.23.1

2 release files

0.23.0

2 release files

0.22.1

2 release files

0.22.0

2 release files

0.17.0

2 release files

0.16.0

2 release files

0.15.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

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