CLI proxy that reduces LLM token consumption by 60-90% on common dev commands. Single Rust binary, zero dependencies
Claude Code hook for local output rewriting
Vomit sits between Claude Code and your terminal output, sending Claude's text through a local LLM so the result is easier to read. The hook path rewrites output inside the Claude Code UI, and the CLI also includes `init`, `scrub`, `list`, and `tail` commands for setup and side-by-side use.
Builders who use Claude Code and want to read cleaner agent output without leaving their terminal.
You can keep using Claude Code while replacing its noisy output with plain English from a local model.
What it does
Claude Code output rewriting
Hooks into Claude Code and rewrites terminal output inside the Claude Code UI.
Local LLM translation
Sends Claude's text through a local model such as Ollama, Llama.app, or Apfel.
Fully local operation
Runs without telemetry or external dependencies.
Setup command
`vomit init` stores the connection details for your local LLM.
Hook installation command
`vomit scrub -claude` prints the instructions for replacing Claude output with the hook.
Session tools
`vomit list` and `vomit tail` let you inspect or follow Claude sessions in the side-channel mode.
How to get it
- 1Run
# Install the binary to your GOPATH go install github.com/zachahn/vomit@latest # Setup connection details to your LLM vomit init # Instructions on how to replace Claude's output via hooks vomit scrub -claude
README
Vomit
Vomit converts Claude's token vomit into English by piping it through a local LLM. It's fully local (no telemetry) and has no external dependencies.
Vomit hooks into Claude Code, rewriting all its output within the Claude Code terminal UI.
Disclaimer:
- The local LLM can only see what Claude tries to communicate (no access to any actions or files), so it can hallucinate a bit
- This is totally vibe-coded, only tested on Mac
- It's pretty slow
Install
# Install the binary to your GOPATH
go install github.com/zachahn/vomit@latest
# Setup connection details to your LLM
vomit init
# Instructions on how to replace Claude's output via hooks
vomit scrub -claude
Usage
In addition, there's a non-invasive mode if you want to run Vomit on the side. (This is deprecated.)
vomit list. List Claude session identifiersvomit tail [<session_identifier>]. Translate Claude's tokens for the specified session, or follow the latest onevomit help. See for more commands
This should work with:
- Llama.app
- Ollama
- Apfel (Super convenient if you have MacOS 26+, but not very good.)
- Anything that uses the OpenAI API?
If you don't have a local LLM set up already, I think I recommend using Llama.app, and downloading GPT-OSS 20B through it. Run the init subcommand after you set this up.
Tips
- You can press
ctrl-owithin Claude Code to get Claude's original output.
License
GNU GPLv3
Files in the repo
- cmd
- internal
- .gitignore
- CLAUDE.md
- go.mod
- init.go
- LICENSE
- list.go
- main_test.go
- main.go
- printer.go
- Rakefile
- README.md
- scrub_test.go
- scrub.go
- tail.go
- version.go
Discussion (0)
Ask about usage, or say what you built with itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More hooks
Warcraft III Peon voice notifications (+ more!) for Claude Code, Codex, IDEs, and any AI agent. Stop babysitting your terminal. Employ a Peon today.
Read the Qur'an while Claude Code works. Start a session with 'claude --cwq' and a reader beside it walks forward through the Qur'an one ayah per prompt, resuming where you left off — in a terminal pane or a browser tab. Zero dependencies, fully offline.
A pre-execution guard for AI coding agents. It blocks destructive Git and file system commands, plus common attempts to access sensitive files, before a tool call runs. Supports Amp Code, Antigravity CLI, Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot CLI, Grok Build, Hermes Agent, Kimi Code, OpenClaw, OpenCode, and Pi.
Automated TDD enforcement for Claude Code
Master Claude Code Hooks