257 Hacker News points for a tool whose README admits it is “totally vibe-coded.” That ratio tells you how bad the readability problem got before anyone shipped a fix.
On August 20–21, 2026, zachahn/vomit — a GPL-3.0 Go CLI — hit the Hacker News front page with a blunt pitch: pipe Claude Code assistant text through a local LLM so humans can read it again. The repo crossed ~100 GitHub stars within a day of the thread; the top comment on HN wasn’t about stars — it was that AGENTS.md and output preferences drift away as sessions lengthen, and Opus 5 prose has become a professional tax on anyone reading agent output all day.
explainx.ai’s read: Vomit is the third wave of the same fix — after Concise output style and claudish-to-english — and it confirms the complaint is legibility, not just length. Builders aren’t asking for shorter answers; they’re asking for answers that don’t read like load-bearing seam metaphors wrapped around a git status update.
Update — August 22, 2026: A fourth wave landed on Hacker News — Debuzz, aka "Claudette" (adnanakil/nobuzz), a Claude Code skill that routes the rewrite through Google's Antigravity CLI running Gemini instead of a local model. Its 134-comment HN thread also surfaced the most concrete CLAUDE.md fixes of the three launches — see that post for nrmitchi's CC-1 through CC-6 comment rules.
TL;DR — what people are asking
| Question | Answer |
|---|---|
| What is Vomit? | A local Go hook that rewrites Claude Code messages before display |
| Does it change Claude’s actions? | No — runtime tool use is untouched; only the prose you read is edited |
| Does it save tokens? | No — Claude still generates the full original; you add local inference |
| What model does it use? | Any OpenAI-compatible endpoint — author recommends GPT-OSS 20B via Llama.app |
| How do I install it? | go install github.com/zachahn/vomit@latest → vomit init → vomit scrub -claude |
| Is it production-grade? | Early — author: Mac-only testing, slow, can hallucinate, no releases yet |
| How is it different from claudish-to-english? | Standalone binary + hooks vs plugin; smaller default model; can replace display text |
| What did Anthropic ship? | Concise outputStyle in Claude Code 2.1.237 — trims narration, not Claudish vocabulary |
What “Claudish” means in practice
Claudish is the register coding agents default to when post-training optimizes for agentic density: confident, compressed, full of invented compound nouns and objects that “carry” or “name” things humans would say differently.
HN commenters named the failure modes precisely:
- Dense pseudo-jargon — “load-bearing,” “honest caveat,” “the seam,” “verified rather than assumed”
- Objects doing verbs — “The API carries the filter object the page already has”
- Process narration in the wrong place — commit messages and doc comments that track how you arrived instead of what changed
- Un-steerable summaries — even “explain like I’m five” sometimes returns compressed Claudish
The Vomit editor prompt targets exactly those tics. It tells the local model to rewrite in clear, conversational prose, keep details, ban em dashes, and restrict action verbs to humans, groups, and agents — not APIs pretending to be narrators.
What Vomit actually does
Author Zach Ahn describes Vomit as converting “token vomit” into English — fully local, no telemetry, OpenAI API-compatible backends (Ollama, Llama.app, etc.).
Install and hook wiring
go install github.com/zachahn/vomit@latest
vomit init # point at your local model URL + model id
vomit scrub -claude # prints Claude Code hook config to paste
Sidecar mode if you don’t want hooks touching runtime display:
vomit list
vomit tail # follow latest session; optional session id arg
The README’s honest disclaimer block is worth quoting in full — rare for a trending repo:
- Local LLM only sees Claude’s prose, not tool actions → can hallucinate
- Slow compared to reading raw output
- Mac-tested only (author’s words)
- You can miss the original message entirely if the rewrite drops a caveat — keep session logs or tools like AgentsView for audit
Before / after (author example)
Ahn’s blog post shows a force-push verification reply. Original Claude ends with “One caveat, and it’s a real one” and six paragraphs of seamslop-adjacent verification theater. Vomit × GPT-OSS-20B collapses it to direct statements: what was pushed, what was verified, what remains fetchable by SHA, and what GitHub GC options exist — same facts, fewer performative frames.
That example is why HN landed on mental health and PR readability as often as token cost. The thread’s correction — Vomit saves brain cycles, not tokens — matters for anyone budgeting spend: you still pay Anthropic for every Claudish word; you optionally pay locally to translate them.
Why prompts and AGENTS.md aren’t enough
The highest-signal HN thread underneath the launch wasn’t “install this tool” — it was “why is there no reliable way to change how the model talks?”
Practitioners named structural causes explainx.ai has tracked separately:
| Cause | What builders observe |
|---|---|
| Context drift | Instructions in CLAUDE.md fade as the session grows; hooks help but burn tokens re-injecting rules |
| RLVR / agent training | Post-training rewards verifiable coding outcomes; prose style may inherit agent-to-agent dialect |
| Output style limits | Concise mode shortens structure; Boris Cherny called it “a band aid” — vocabulary tics remain |
| Subagent inheritance | Custom output styles don’t reliably reach subagents |
Vomit is an admission that presentation-layer fixes are now load-bearing infrastructure — the same category as claudish-to-english, deslop skills for comment hygiene, Caveman compression, and HN commenters routing Claude plans through Codex or Opus 4.6 just for readable English.
Vomit vs claudish-to-english vs Anthropic Concise
| Tool | Layer | Model | Original preserved? | Maturity |
|---|---|---|---|---|
Concise outputStyle | Anthropic built-in | Same Claude model | Yes — just shorter | Shipped Aug 20, 2026 |
| claudish-to-english | Claude Code plugin | Local Ollama (~17GB default) | Yes — rewrite appended | Aug 10, 2026, MIT |
| Vomit | Go CLI + hooks | Local OpenAI API (GPT-OSS 20B suggested) | Sidecar yes; hooks may replace display | Aug 2026, GPL-3.0, early |
| Route to Codex / 4.6 | Different harness | Other vendor / older Claude | N/A — different agent | Production teams already doing this |
When Vomit fits: you want hook-level control, a small local rewriter, and you accept GPL-3.0 plus author-stated jank.
When claudish-to-english fits: you live entirely inside Claude Code plugins, already run Ollama, and prefer append-only fail-open rewrites.
When Concise fits: you want zero extra inference and can tolerate residual Claudish if answers are shorter.
When switching harnesses fits: readability problems are severe enough that paying a second vendor beats stacking translators — a recurring HN theme as GPT-5.6 in Codex gets cited for neutral prose.
What the HN thread got right (and wrong)
Right:
- Legibility is a product defect, not a user skill issue — dense output that resists summarization breaks code review, incident response, and pairing
- Session drift is real; hooks that re-push instructions each turn are a partial fix with a token bill
- LLM centipede risk — rewriter stacks (Claude → local model → another pane) compound latency and failure modes
Wrong or overstated:
- “Just get used to Opus-ese” — team communication breaks when session-specific jargon escapes into meetings (HN thread concern)
- Vomit saves tokens — it does not; Claude already emitted them
- Regex alone fixes it — deterministic linters like vale.sh help prose violations but miss semantic bloat; Vomit’s author chose an LLM editor for a reason
Practical setup if you try it today
- Pick a small local model first — author suggests GPT-OSS 20B through Llama.app or Ollama with an OpenAI shim.
- Run
vomit init— store base URL and model name once. - Start with
vomit tailbefore hooks — compare rewrite quality against your real sessions without hiding originals. - Add hooks only after spot-checking — confirm caveats about force-push, security, or migration risk survive the rewrite.
- Keep Concise on — layers stack: shorter defaults + local rewrite beats either alone for many users.
- Audit PR text manually — nothing replaces deleting AI comment slop before merge, Vomit or not.
Summary
zachahn/vomit is a local, hook-based rewriter for Claude Code output — born from HN-scale frustration with Opus 5 Claudish, not from a desire to add another agent to the stack. It does not reduce Anthropic token spend; it tries to reduce the readability tax on the prose Claude already produced. Treat it as early infrastructure alongside Concise output style, claudish-to-english, and the heavier escape hatches — downgrade to 4.6, route docs through Codex, or change harness — teams are already using when translation layers aren’t enough.
Related on explainx.ai
- The /eli5 Claude Code skill Anthropic engineers are using daily — a different flavor of the same complaint, and why explainx.ai's Melo ships an ELI5 mode natively
- Claudish-to-English: Claude Code’s jargon translator plugin
- Debuzz, aka "Claudette" — routes Claude's replies through Google's Antigravity CLI
- Claude Code Concise output style — what shipped Aug 20, 2026
- Claude Opus 5 load-bearing and other Claudisms
- Why Claude Opus 5 feels worse to work with
- Humanising LLM outputs — why display rewrites don’t reach subagents
- Steering Claude Code — CLAUDE.md, hooks, output styles
Sources: zachahn/vomit · Author blog post with before/after · Vomit editor prompt (blurb.md) · Hacker News discussion · Claude Code output styles docs
Star counts, HN points, and hook behavior reflect the repository and thread as of August 21, 2026. Verify install steps and model requirements against the README before rolling Vomit into a shared team config.
