← AI Hacker Daily

Edition

06

picks

# AI Hacker Daily — 2026-08-21 A keyword algorithm from the 1990s outscored four hyperscalers.

# AI Hacker Daily — 2026-08-21 A keyword algorithm from the 1990s outscored four hyperscalers. On EnterpriseRAG-Bench — a third-party benchmark from Onyx, 512,000 simulated company documents, a public leaderboard on Hugging Face — the entry labelled `BM25 + GPT-5.4` scores **50.60**, above Amazon Q with Kendra (48.96), Azure AI Search (48.42), Vertex AI Search (41.87) and NVIDIA AI Blueprints (37.73). LangChain and LlamaIndex on default configs sit at **24.98 and 27.20**, roughly half the score of grep with a language model bolted on. A bash agent with a shell and no retrieval stack at all scores 52.63 and beats every one of them. Set that next to a bill: on `openai/codex` issue #37674, filed 12 days ago and still open, a team running Codex against Bedrock published four days of Cost Explorer figures — **3,656 requests, 171.94M cache-write tokens, $1,182.09 of $1,386.46 total spend**, about 88K cache-write tokens per request and **zero** `cached_input_tokens`. They paid 85% of their model bill to fill a cache that was never once read, because the provider config has no field for the cache control that would have stopped it. GitHub has it labelled `enhancement`. The connecting idea in today's picks is not that AI is expensive; it is that the expensive component is frequently not the component doing the work, and almost nobody is in a position to tell. The best sentence in the day's biggest thread was a developer explaining why he now runs every model's output past every other model: "The tokens are too cheap not to." He is describing the same accounting as the Bedrock invoice. Today's five picks are ordered by how much of the expensive part you can actually delete — starting with the one that adds a second bill instead.

01

Vomit — you are now buying a second model to undo the first one, and 2,000 people already installed the other one

A Go binary that pipes Claude's output through a local LLM to convert it into English. `go install github.com/zachahn/vomit@latest`, then `vomit init` to point it at Llama.app, Ollama or anything speaking the OpenAI API, then `vomit scrub -claude`. GPL-3.0, 104 stars, created six days ago. It hit the HN front page at **264 points with 260 comments**, which is not a number a six-day-old Go utility earns on its engineering. It earns it because the premise is a grievance with a very large constituency: Opus 5 writes prose that a lot of paying customers cannot stand reading, and the market's response has been to buy inference twice. The tell is what the tool actually is. A commenter pasted its entire mechanism into the thread — a system prompt instructing an editor model to remove "weird subject and verb combinations," "subjects that should be objects," "very roundabout reasoning, peppered with pseudo-epiphanies," "a distracting beat to the flow of the message," and "self-praise," with the rule that "only humans, groups of humans, and agents should do 'action verbs'. Objects should never do anything." That is the product. It is not a criticism of Vomit, which is honest about being small; it is a description of where the frontier is. And it is not one tool: `gvzdv/claudish-to-english`, a Claude Code plugin doing the same job as a display-layer hook, has **1,976 stars** on eleven days of life, MIT, defaulting to `gemma4:26b-mlx` — a **17 GB** local model running at roughly 60 tokens per second whose entire assignment is rewriting the sentences a frontier model just charged you to generate. The thread found the joke inside the joke: that plugin's own README, as one reader put it, "includes lots of good Claudish." Another commenter got to the actual question and got no satisfying answer: "if we need to babysit 100% of its output with another vendor's model. Why not just use that other vendor's model for everything?" Reach for it if you read agent transcripts by the hundred and have started skimming the ones you are paying for. Delete the CLAUDE.md section where you have been accumulating banned words one at a time — several people in that thread are maintaining exactly that file and it is losing. Tradeoffs: the author says it plainly — "this is totally vibe-coded, only tested on Mac," "it's pretty slow," the local model "can only see what Claude tries to communicate (no access to any actions or files), so it hallucinates a bit," and there is "a possibility you'll completely miss Claude's message," which for a tool sitting between you and your agent's output is the failure mode that matters; GPL-3.0 will matter to some shops; no measured numbers of any kind are published — no token counts, no latency, no before-and-after on comprehension; running the 17 GB alternative means a second model resident in RAM on your laptop all day; and the whole category is a workaround for a vendor behavior that a single model update could erase, taking the tool with it.
github.com/zachahn/vomit

02

Router by Ramp — the company whose product is spend visibility now sells a token gateway, and will not show the 40%

Ramp bought the domain router.com and shipped an LLM gateway on it: one endpoint in front of OpenAI, Anthropic and open models, routing each request to "the cheapest approved model that clears your quality bar, with automatic fallbacks when a provider fails," plus spend mapped to teams and budgets. Point an existing SDK at it and keep your code. It is **free through 2026** — you pay list price for tokens, and new accounts get $26 in credits. The headline claim is that it "cuts inference costs by 40% on average." There is no methodology behind that number. The page links to a section called Benchmark; what is published is the 40% figure restated in the FAQ as "cutting our customers' AI costs by 40%." No workload, no baseline, no task mix, no distribution — an average with no denominator, from the company that sells other companies the ability to see what they are spending. That is worth stating precisely rather than sneering at, because Ramp is the most credible possible author of a real number here: it has the corporate-card data, the customers, and a compliance department. It published a marketing average instead. The second thing worth pricing in is what "free through 2026" buys the vendor. A routing layer sees every prompt, every completion, every model choice and every dollar, across every customer — which is the exact dataset needed to build a good router and to know what the AI budget of a few thousand companies looks like. Free is the acquisition cost of that corpus. Which is not disqualifying, and is the same trade every gateway offers, but it should be a conscious trade rather than an unexamined one, particularly for the audit-conscious buyer this product is aimed at. Reach for it if you have several teams burning inference on separate keys and cannot currently answer which team spent what on which model. Delete the homegrown "if the prompt is short use the cheap model" if-statement that everyone writes in month two and nobody ever tunes again. Tradeoffs: closed source and hosted, so every prompt and completion in your organization transits a third party who is explicitly in the business of analyzing spend; the 40% has **no published methodology, workload or baseline**, and this is a category where the savings depend entirely on your task mix; "cheapest model that clears your quality bar" means something is judging quality and how that judgment is made is undisclosed; free through 2026 is a price that has an end date attached and no successor price named; a routing layer is a new hard dependency in the request path of everything you ship, with the outage surface that implies; and vendor-side routing has an unavoidable structural conflict — the party choosing your model is the party you are trusting to tell you the choice was optimal.
router.com

03

hRAG — €116 a month, one spot below Azure, and the honest numbers are in the file written for the agents

A self-hosted hybrid RAG stack — Postgres with `pg_textsearch` for BM25, vectors, a cross-encoder reranker, grounded answers with citations — running on a five-node Hetzner Kubernetes cluster that costs **€116 per month, total**. It was submitted to EnterpriseRAG-Bench and officially scored: overall **44.74**, correctness 52.6, completeness 54.38, document recall **69.65**. That places it below Azure AI Search (48.42) and above Vertex AI Search (41.87) and NVIDIA AI Blueprints (37.73). On document recall specifically it beats Azure (64.25) and Vertex (61.76) outright, and the site's wording is careful enough to claim only those two — NVIDIA's recall is 72.61, higher than hRAG's, and the claim is worded to exclude it rather than to hide it. The engineering has real numbers behind it: Block-Max WAND gets BM25 to "88ms over 2 million chunks, where plain tsquery took 7.5 seconds," the reranker "cost $1 to prototype offline before a line of service code existed," and the benchmark run that produced the score cost about $60 once. There is a public 512,000-document playground with no login. Two corrections and a finding, all of which make it a better pick rather than a worse one. First: the site says **#9** on the leaderboard. We pulled the benchmark's own `leaderboard.csv` from the Hugging Face Space, and on the live board today hRAG is **13th of 24**, with four systems having landed above it since submission. Every relative claim it makes still holds exactly — one spot below Azure, ahead of Vertex and NVIDIA — but the rank number on the marketing page is stale, which is what happens to any absolute position on a live board. Second: the site says the code is MIT. The umbrella repo `victormocioiu/hrag` is MIT; the five repos that constitute the actual system — `rag-api`, `rag-ui`, `rag-reranker`, `rag-ingest`, `rag-embedder` — have **no license file at all**, which means the thing you would deploy is not licensed for you to deploy. And the finding: this repo carried both a `README.md` and a `CLAUDE.md`, so we read the machine-facing file first, as a test we committed to on 08-20. The README names **zero** limitations. The `CLAUDE.md` names a dozen, including that "chat rerank measured 16.5 s warm at window 50 (~330 ms/pair on the 2 vCPU reranker pod)," which is why the reranker ships opt-in; that queries embed with `input_type="query"` while documents were embedded as `"passage"`, a contract mismatch that "causes ranking degradation"; that floating `:HEAD` release tags "can deploy fossils twice"; that the hybrid default weights BM25 above vectors at `vector_weight=0.3`; and, under unfinished work, a planning agent for **"Azure-gap closure."** The engineer's private file names the competitor it is behind. The landing page frames the same gap as a rank. Reach for it if someone has quoted you a managed enterprise RAG price and you want to know what the alternative actually scores before you sign. Delete the assumption that the hyperscaler product is the safe default — on this benchmark, four of them lose to a keyword baseline. Tradeoffs: **the five service repos are unlicensed**, which is a blocker for any company adopting it, and the MIT claim on the site refers to the umbrella repo only; it is one engineer's project — 1 star, 0 forks, 0 watchers, last pushed 12 August; running it means operating a five-node Kubernetes cluster, Postgres, an embedder, a reranker and an ingest service, which is a real staffing cost that €116 does not include; 44.74 is a middling score and the reranker is opt-in because it takes 16.5 seconds; its `invalid_extra_docs` rate of 9.01 is nearly triple Azure's 3.25, so it returns more junk alongside the right answers; and a benchmark of 512,000 *simulated* documents is a proxy for your corpus, not a measurement of it.
hrag.app/

04

ParqDB — a billion vectors on two cores and 4 GB, and the demo has no query server at all

An embedded vector database that stores the index itself as Parquet: "an embedded vector database for larger-than-memory search and analytics on billion-scale multimodal data, with Parquet storage and Arrow-native execution." MIT, 47 stars, created 3 August, `python -m pip install parqdb`. The published headline is SIFT1B — one billion vectors searched at **90.3% recall with 63.05 ms median latency using just 2 CPU cores and 4 GB of memory**. The Show HN that surfaced it is the browser demo: 100,000 Wikipedia leads searched semantically from a static file, with the embedding computed in-tab via ONNX and WASM, an IVF-LVQ8 index of 2,048 centroids, Parquet footers pruning candidates, and only the required byte ranges pulled over HTTP. "No query server. Just object storage + your browser." The reason this belongs on today's list is the shape of the bill it deletes rather than the recall figure. The standing cost of a vector search deployment is not the search; it is the always-on managed service holding the index in RAM so that it can answer a query that may not arrive. ParqDB's argument is that if the index is a Parquet file, it is an artifact — you publish it to object storage, and the client does the work. The maintainer put this well when a commenter asked the obvious "doesn't DuckDB do this?": DuckDB's vector support comes from extensions whose indexes "are managed by DuckDB and are not designed to be shared as standalone artifacts or queried directly from a browser," whereas here "the vector index itself is stored in Parquet format," making it "a portable dataset that can be published, shared through object storage, and queried directly by clients." For a docs site, a public dataset, or any search over a corpus that changes daily rather than hourly, that turns a monthly bill into a build step and a CDN. It also took two attempts to be noticed — the same project posted on 19 August and got 2 points, and the browser-demo framing got 21 two days later, which is a fair reminder that the framing is doing as much work as the index. Reach for it if you are paying a monthly minimum for a managed vector index over a corpus that is essentially static. Delete the always-on search service in front of your documentation, your changelog or your public dataset. Tradeoffs: the project's own status table marks **browser/WASM querying as "Experimental,"** along with Iceberg and client/server — meaning the thing that got upvoted is the least-finished part of the product; the SIFT1B figures are the project's own and we did not reproduce them; there is **no published comparison against FAISS, pgvector, Qdrant or any other named system**, only against an internal legacy system, so "faster" and "cheaper" have no third-party anchor; 47 stars, 1 watcher, and three weeks old; a browser-side index means shipping your embeddings to every visitor, which is fine for Wikipedia leads and unacceptable for anything private; and updates mean rebuilding and republishing an artifact, so this is the wrong shape for a corpus with live writes.
github.com/parqdb-io/parqdb

05

RollTab — 125M parameters, on a phone, for zero, and it is the best-documented model release of the day

The last rung is the one where the bill goes to zero because the expensive component is gone. A 125M-parameter decoder-only transformer — RMSNorm, rotary embeddings, causal attention, SwiGLU — trained on a few hundred thousand public-domain MIDI files representing roughly **300 million note events**, exported to Core ML at INT8, running at about **108 notes per second on an iPhone 15**. It autocompletes piano performances in real time: you play a few bars, it continues them. It went up as a Show HN and took **556 points**, the largest on the board today. The app is on the App Store, free, 185 MB, released yesterday. It is in a builder newsletter because of the engineering write-up, which is the most complete methodology anyone published today. The tokenization is the interesting decision: rather than separate note-on and note-off events, one token carries `NOTE(pitch, delta_onset, duration, velocity)`, so "the transformer advances the music by one complete note at a time" instead of taking four steps to place one — a four-fold reduction in sequence length bought by making the token match the domain's actual unit. Trained to 512 notes of context, deployed with a 384-note rolling window, cross-entropy across five output heads, scheduled sampling up to 50%, augmentation by transposition and tempo scaling — and the largest single improvement came from **DPO post-training**, at a 69.05% preference rate on the consensus dataset. Preference optimization, the technique the labs use to align chat models, applied by one person to piano continuation, on-device. Everything above this pick spends money working around a general-purpose model that is too expensive, too verbose, or too remote for the job. This one asks the prior question: how large does the model need to be if it only has to do one thing? For real-time note prediction the answer is 125 million parameters, small enough that the marginal cost of an inference is a phone battery. The author's own summary is the right register: "Think GPT-2, but for piano." Reach for it if you have a narrow, high-frequency prediction problem and are currently paying per token for a frontier model to solve it. Delete the API call in any loop where the task is narrow, the latency budget is tight, and 125M parameters trained on your domain would plausibly do it. Tradeoffs: **neither the code nor the weights are released** — the write-up is detailed, the artifact is a closed App Store binary, and nothing here is reproducible; it requires a physical MIDI keyboard, so most readers cannot even run the demo; the author names the failure modes — it "loops occasionally, short prompts are difficult"; the DPO preference number is measured against the project's own consensus dataset with no external comparison; iOS only, one developer, released yesterday; and the transferable part is a method, not a dependency — nobody can install this, which under this newsletter's usual rubric is a real strike and is why it closes rather than opens.
apps.apple.com/us/app/rolltab/id6799679058

06

**Also on the board.** *Huzzah* (329 points, 175 comments) was the strongest thing we dropped: an editor where the prompt is persistent declarative pseudocode rather than transient longform English, with source maps linking every generated line back to the intent that produced it — a direct answer to the input half of today's bill. It is out because the author is straighter about its status than the headline is: "this is just a proof of concept," a web app that cannot touch your filesystem, multi-file untested, no license on the repo, 97 stars. A commenter asked why you would not simply put "if I give you pseudocode, write and test it in real code" in your system prompt, and the author agreed you can. • The **arrayref** supply-chain attack (509 points) is the important security story of the day and off today's axis entirely — a malicious Rust crate executing a payload at *build* time, with the official rust-lang advisory alongside it. • *GitHub's August 17 outage* post-mortem took 542 points. • *Vendo* (Launch HN, YC S26, 524★, Apache-2.0) lets your users build features inside your product — genuinely interesting, entirely orthogonal. • *Encore's crackling* rebuilds the Linux microVM stack on Apple Silicon via Virtualization.framework, and admits Apple will not grant third parties the `com.apple.private.virtualization` entitlement snapshots require; no repo, no numbers, so nothing to install. • *Argentic* charges scraping agents **10 satoshis (~$0.001) per hour-long session** over L402 Lightning — the only thing in the pool billing agents rather than being billed by them, and it publishes no repo, no license and no operator install path. • And *Seed* (38★, created yesterday, no license) is "the smallest starting point from which an agent can grow," which is a lovely premise and one day of evidence. *Verification note: star counts, licenses, watcher counts and creation dates come from the GitHub API on 2026-08-21. The EnterpriseRAG-Bench figures are not hRAG's — we pulled `data/final_display_data/leaderboard.csv` directly from the benchmark's Hugging Face Space and re-derived every rank and score quoted above, which is how the stale #9 and the BM25-beats-four-hyperscalers result surfaced. That is an independent check of a published claim, not a reproduction of a benchmark run; no pick's benchmark was re-executed today. The hRAG license split was confirmed against the author's repo list, not the landing page. Codex issue #37674's state, labels and reaction count came from the GitHub API; the dollar figures are the reporter's own Cost Explorer estimates and are described in the issue as "usage-derived estimates, not finalized AWS invoice amounts." Onyx, which runs EnterpriseRAG-Bench, sells a RAG product and "excludes itself from the leaderboard to avoid conflict of interest"; submissions must supply either a reproduction guide or a live endpoint for verification. Today's pool was 64 — hn:front 29, hn:show 17, producthunt 18 — with `github:trending` back at zero rows one day after returning 22, and Reddit dark for the twentieth consecutive week.*

One of these,
every weekday.

Free. Unsubscribe by replying with one word. No tracking pixels in the email.

2026-08-21 — AI Hacker Daily