fats 0.1.2 · 2026-10-17
Changelog
All notable changes to fats are in this file. Format: Keep a Changelog;
versions: Semantic Versioning. Numbers come from my own runs on one Apple
Silicon Mac, one run each unless a range is given; provider results move run to run.
Method: docs/benchmarks.md.
0.1.2 - 2026-10-17
Added
- npm package
fatsearch(npm i -g fatsearch,npx fatsearch), generated by cargo-dist: it installsfatsby downloading the release archive for the machine from GitHub at install (or at first run when install scripts are off). Every tagged release publishes it. - MCP Registry entry
io.github.fatsearch/fats(server.json: the crates.io and npm packages, run asfats mcp), listed after every release by a GitHub OIDC workflow.check.shfails when its version is not the crate’s.
Changed
- The installers require glibc 2.35+ on Linux, the version the Linux builds link against (was 2.31, which let them install a binary that cannot start on 2.31–2.34).
Fixed
- The key dir is made owner-only (0700) whenever
fatssaves a key into it, also when it existed already: on Linux the installer’s receipt can create~/.config/fatsearchat 0755 beforefatsfirst runs.
0.1.1 - 2026-10-17
Added
- Prebuilt binaries and installers via cargo-dist: every tagged release builds
fatsfor macOS (Apple silicon, Intel), Linux (x86_64, ARM64) and Windows (x86_64) and attaches the archives,.sha256checksums, GitHub build attestations and shell / PowerShell installers. A Homebrew formula (fatsearch/tap/fatsearch, installsfats) is generated too.
Changed
- The crate’s
homepageis the GitHub repository (was fatsearch.com, which has no site yet).
0.1.0 - 2026-10-17
First public release.
Added
fats <url>: fetch, clean, outline. One=line (title, place, counts, tokens, how it was fetched, what it cost), then numbered sections (u1#3) the agent reads on demand. Every page is cached; later reads are free.- Fetch ladder: plain request first, then Oxylabs (no JS, then JS) and Bright Data. Any one provider key works;
with both, the cheaper route goes first.
wait:N,timeout:N,fresh:true,country:xx,device:mobile,json. - Readers: HTML and PDF (one section per page). Pictures and videos are counted on the
=line; pixels on request. Office files are stored, not read yet. - Honesty: a
!line names what is missing and the next free move; a render that failed is not offered again; the price glyph≤$Xis the worst case; nothing is dropped silently. fats mcp: stdio MCP server, one toolfats(cmd), ~60-token card.fats setupfinds, checks and saves keys (mode 600).fats stats,fats config,fats guide,--dry.- One static binary, ~17 MB, ~4 ms start. No daemon, no browser, no telemetry.
- Command aliases, all free:
login,keys,authrunfats setup;?,commandsprint the guide;balance,usage,spend,creditsrunfats account. Words of other tools (whoami,logout,install,upgrade, …) get a!line naming the right command, rc 2. - Discussion threads:
fats uN commentslists the top-level comments, most replies first, one row each (uN#k · replies N · <text>).fats uN#kopens one comment with its direct replies;uN#k fullreads its whole tree. The outline footer says how many comments this copy served;N of M comments servedappears only when the page itself states its total, never as a guess.--helpstays the same card, under 500 bytes. fats gh <login>lists that account’s repositories by stars, not only repos that mention the name.fats statsadds one spend line over all sessions (last 24 h and all time, unverified cuts apart). The ledger sits beside the keys, holds a time and a price per paid record, never a URL or a query, and is never swept.
Changed
- Default
wait:is 30 s (was 5 s): most walled renders finish inside it. A run still going readspendingwith its free next move (→ fats uN wait:30). timeout:Nis one wall for every call of a command, the plain request included.- A batch of URLs runs at most 4 at once; ids are given in input order,
dry:trueprints the same ids, and a URL given twice is fetched once (its second row sayssame as above). - The cache lives in the OS cache dir (
~/Library/Caches/fatsearchon macOS,~/.cache/fatsearchon Linux, the local app-data dir on Windows;FATS_CACHEoverrides it, but not with an empty, relative,/or home path). A page is kept 30 min after its last read and at most 60 min after its fetch; a swept id says so and names the refetch. Only a dir fats made itself is ever swept. limit:Nsets both the results a search fetches and the rows shown, at most 20 rows within the read cap; a larger N says it was capped.
Fixed
- An unknown flag (
--login,-x,rust --fast) is refused with a!line and never becomes a paid web search. Beside an id or a file a dash word is a free filter (fats u1 -n). A dash inside a phrase is kept as typed. - A run whose process died reads
! abandonedinfats jN, in its page read and instats, with what it spent and a priced next move. - A page that moves to a sign-in page is judged by whole words of its new address (
login,sign_in,oauth,sso, …), so/authorsor/docs/authenticationis not a wall; a real sign-in wall is rendered once, not twice.