Turo: Install Once and All Your Coding Agents Send 70% Fewer Tokens
There’s a silent tax on every session with an agent: words. A system prompt runs anywhere from 50k to 200k tokens, and most of those words carry grammar, not meaning—articles, prepositions, hedges, pleasantries—. You pay for every one, every turn, forever. Turo, which showed up this week on Hacker News as “an aggressive token-saving proxy for CLI AI agents”, has a direct answer: target the words that matter and drop the rest.
The pitch is two words—Point more. Token less.—and the README’s star example makes it concrete. A pull-request review instruction of 138 tokens becomes 54 tokens with meaning intact (−61%), or 41 tokens with --level ultra (−70%), where inflections collapse to their dictionary base form. The detail worth getting straight from the start: those counts are turo’s own estimate, cl100k-style, not a real tokenizer—the README says it plainly, “treat them as a trend, not a bill”.
What turo does concretely is run your text through four stages, all on by default: deletes filler (please, I think, of course), swaps words for lower-token synonyms (utilize → use), swaps words for the shortest word in their definition (approach → come), and then strips remaining stopwords and keeps only content words—nouns and verbs in ultra mode—, deduplicated and in reading order. Repeats until the output stops shrinking. The result isn’t prose. It’s a keyword stream, and that’s the deliberate trade-off: turo is built for text that only a model will read.
That’s also the cleanest way to position it against caveman, the sister tool it explicitly compares itself to. Caveman strips filler with regex and keeps prose readable; turo runs that same filler pass and then keeps going—classifying by POS, lemmatizing, glossing—, trading legibility for a much smaller count. The rule the README itself gives: use caveman when a human reads the result, use turo when only a model does.
The part that makes it worth the install is scope. npx turo installs the binary and registers turo’s skill and the /turo command with every coding agent it finds on your machine—Claude Code, Codex, Gemini CLI, opencode, Cursor, Windsurf, Cline, Copilot, and 20+ more—. You install it once; every agent gets the same reducer. Prefer just the binary? brew install kdeps/tap/turo, go install, or the curl script. And for agents turo can’t touch from inside, there’s a proxy: turo run claude spins up a local proxy, points the agent’s base-URL variable at it, and reduces every request before it hits the real endpoint—the response streams back without being touched.
Two guardrails keep it clean. Code blocks, file paths, URLs, version numbers, API names, and error strings pass through verbatim—turo only touches prose—. And it never emits output bigger than the input: if a stage doesn’t save tokens, the original passes unchanged. There’s also a small observability layer: turo gain totals what you saved (by project), turo discover scans your Claude Code history to estimate how much you would have saved, and turo doctor checks that everything is wired up right.
One curiosity for the road: a wenyan level swaps each surviving word for a single classical Chinese character (water → 水). It only gains on tokenizers optimized for CJK like Qwen or DeepSeek—on OpenAI models the characters cost more, so it’s a niche dial, not the default—. But it tells you how far you can push the idea of “the fewest tokens possible”.
If you’ve been following the token-efficiency angle, this rhymes with Headroom, though the mechanism is different: Headroom plays with caching and doesn’t touch the content; turo straight-up rewrites your prompt to pure words with semantic load.
Would you trust a lossy reducer with your system prompt, or is there context you’d never cut? Where do you draw the line between saving tokens and losing nuance?