JuliusBrussee/caveman

▲ 1,941 stars today★ 110,187⑂ 6,380

🪨 why use many token when few token do trick. Viral skill + proxy for coding agents that cuts 65% of tokens by talking like a caveman.

About JuliusBrussee/caveman

JuliusBrussee/caveman is an open-source project on GitHub, mainly written in Go. 🪨 why use many token when few token do trick. Viral skill + proxy for coding agents that cuts 65% of tokens by talking like a caveman. It currently holds 110,187 stars and 6,380 forks with 66 open issues, and was last pushed on 2026-10-06 (repository created 2026-04-04).

Project Overview

Git Homed tracks it on the AI Agent Skills Trending board and on the AI AI Agent Skills Trending list.

GitHub Repository Details

Repository JuliusBrussee/caveman · default branch main · size 18341 KB · watchers 251 · source: GitHub REST API and repository README

README

https://github.com/JuliusBrussee/caveman/blob/HEAD/Caveman

why many token when few do trick

Caveman make your AI agent say less and read less. Code stay exact. Brain still big.

https://github.com/JuliusBrussee/caveman/blob/HEAD/GitHub stars https://github.com/JuliusBrussee/caveman/blob/HEAD/npm downloads https://github.com/JuliusBrussee/caveman/blob/HEAD/30+ agents https://github.com/JuliusBrussee/caveman/blob/HEAD/License

33.2% fewer

input tokens through the proxy
54 Claude Code runs, 18 of 18 answers right

129.8× smaller

web pages for the agent
caveman browse vs a Playwright snapshot

1.4 to 2.4× cheaper

with caveman-style output
Adobe Research, eight models

Cited by Adobe Research · A/B tested by JetBrains · Remade for Elasticsearch on Elasticsearch Labs
#1 on Hacker News · #1 on GitHub Trending · "No way this actually works." ThePrimeagen

How it talks · Install · The numbers · The proxy · What you get · In the wild

---

Normal agent · 63 tokens https://github.com/JuliusBrussee/caveman/blob/HEAD/ Caveman agent · 20 tokens
The reason your React component is re-rendering is likely because you're creating a new object reference on each render cycle. When you pass an inline object as a prop, React's shallow comparison sees it as a different object every time, which triggers a re-render. I'd recommend using useMemo to memoize the object.

New object ref each render, so React re-renders. Wrap the prop in useMemo.

Same fix. 63 token become 20. Brain still big.

Pick your club:

| Skill | Same answer | Tokens | |---|---|---:| | /caveman | New object ref each render, so React re-renders. Wrap the prop in useMemo. | 20 | | /ultracave | Inline object prop, new ref, re-render. useMemo. | 14 | | /megacave | 新參照致重繪。useMemo。 | 13 |

Token counts: tiktoken o200k.

How caveman talks

Caveman is a voice, not broken grammar. Every reply follows the same structure:

| Rule | What it means | |---|---| | Answer first | [thing] [action] [reason]. [next step]. No greeting, no "let me", no recap, no "hope this helps" | | One idea per sentence | Built on ASD-STE100, the controlled English written for aircraft maintenance manuals: 20 words max, active voice, one term per thing | | Meaning never dropped | Articles can go. not, never, no, only never go. Numbers and units stay exact | | Payload verbatim | Code, commands, paths, and error messages untouched, character for character | | Quiet tool runs | No chatter between tool calls. One line per phase, one line with the result | | Knows when to stop | Security warnings, irreversible actions, step-by-step orders, and confused users get full sentences. Then grunt resumes | | Never performs | No "me think", no caveman prefix. If caveman phrasing isn't shorter, plain wins | | Your prompts stay yours | Never rewritten. Research say that backfire |

Every reply runs a check before it sends: opener that announces the plan, deleted; closer that recaps, deleted; every negation, path, and number still there.

Install

npx skills add JuliusBrussee/caveman -g

Works in Claude Code, Codex, Gemini CLI, Cursor, Windsurf, Cline, Copilot, and 30+ more. Type /caveman if it doesn't start on its own. Say stop caveman to go back. One rock. That it.

Other ways in: Claude Code plugin, Gemini, every agent at once, Windows, uninstall


# Claude Code plugin, auto-starts every session
claude plugin marketplace add JuliusBrussee/caveman && claude plugin install caveman@caveman

Gemini CLI

gemini extensions install https://github.com/JuliusBrussee/caveman

Every agent on your machine at once, plus the Claude Code statusline badge (Node.js 22.13+)

curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/v3.1.0/install.sh | bash

Windows, PowerShell 5.1+:

irm https://raw.githubusercontent.com/JuliusBrussee/caveman/v3.1.0/install.ps1 | iex

On npm 12 or newer, new npm block git install, so one-liners above fail until next release. Use this for now: npx --allow-git=root -y github:JuliusBrussee/caveman#v3.1.0

Changed your mind: npx -y github:JuliusBrussee/caveman -- --uninstall (on npm 12+, add --allow-git=root too)

Install broke? Open your agent in this repo and say "Read CLAUDE.md and INSTALL.md, install caveman for me." Agent fix own brain.

The numbers

Outside labs first, then ours. Nothing rounded up. Red rows stay red.

| Who | Setup | Result | |---|---|---| | Adobe Research, CAVEWOMAN paper (cites this repo) | Caveman-style output, eight models, five datasets | Cost cut 1.4 to 2.4× per model, up to 3× | | Elastic, Elasticsearch Labs | Caveman mode remade for Elasticsearch, eight live MCP scenarios | 63.6% fewer response tokens. "Zero information loss." | | JetBrains | 86 real coding tasks, paired A/B | No measurable quality loss (p = 0.82). 8.5% fewer output tokens |

Two findings shaped caveman. Adobe found that cavemanning your prompt makes answers longer and worse, so caveman never touches your prompt. JetBrains found that agent sessions are mostly code and tool calls, which the skill leaves alone. So caveman grew a second rock that shrinks what the agent reads: the proxy.

The proxy: 33.2% fewer input tokens

| File type | The file, through caveman | File saved | Whole Claude Code session, 3 runs | Session saved | |---|---:|---:|---:|---:| | CSV | 28,041 → 314 | 98.9% | 165,823 → 74,484 | 55.1% | | Logs | 22,810 → 348 | 98.5% | 148,807 → 74,068 | 50.2% | | YAML | 20,447 → 178 | 99.1% | 132,124 → 71,027 | 46.2% | | Test output | 18,806 → 203 | 98.9% | 150,377 → 108,514 | 27.8% | | JSON | 18,837 → 281 | 98.5% | 147,975 → 108,939 | 26.4% | | HTML | 21,670 → 21,670 | none yet | 140,687 → 154,641 | 9.9% worse | | All six | 130,611 → 22,994 | 82.4% | 885,793 → 591,673 | 33.2% |

18 of 18 answers right. The file is each benchmark file run through today's compressor on its own. The session is the whole agent run, which also carries the system prompt, tool definitions, conversation, and caveman's own rules, so it moves less than the file. The session run is from August 2026, on an engine that only got the JSON file down to 8,106 tokens. HTML has no compressor yet, so caveman paid its overhead and won nothing back. Each file hides one record in 61 to 72 KB of noise; your files will vary. Headroom on the same suite got 15 of 18 right and used 6.7% fewer tokens on those 15. Method

The skill: ten dev questions on claude-opus-5-5

| Instruction | Output tokens | |---|---:| | None | 6,983 | | Answer concisely. | 4,334 | | /caveman | 4,119 | | /ultracave | 2,693 |

New models already know "be concise", so that line is the real baseline. On top of it, /caveman cuts 3% more at the median and /ultracave cuts 35% more. Harness

Everything else

| What | Result | |---|---| | A web page the agent reads (caveman browse, 200-row table) | 121 tokens instead of 15,704 for a Playwright snapshot, 129.8× smaller. Tiny forms lose 2.3×. Bench | | Memory files like CLAUDE.md (/caveman-compress) | 46% smaller across five fixtures, with every heading, code block, and path intact. Bench |

The rules add about 1,000 input tokens to every call. If you pay per request instead of per token (GitHub Copilot premium requests), a shorter answer costs the same, so skip it. Every case where caveman loses: HONEST-NUMBERS.md.

Big rock: the proxy

Logs, CSV, YAML, JSON, and test output come out 98.5% to 99.1% smaller. Whole sessions use 33.2% fewer input tokens, same answers. (benchmark)

The skill shrinks what the agent says. The proxy shrinks what it reads: logs, test output, JSON, diffs, web pages. It runs on your machine, with your keys and your Claude Pro/Max login. Every original stays on your disk, and the agent can pull it back any time.

npm install -g @caveman-ai/cli && caveman setup --install
caveman claude        # or codex · gemini · aider · kilo · qwen · opencode · hermes · openclaw · pi

Then:

caveman learn                 # rank where your tokens go, from agent history already on disk
caveman learn implement       # apply the fixes one diff at a time, only on your yes
caveman trial -- claude       # A/B a real session on your own work
caveman shrink -- pnpm test   # compress noisy command output
caveman browse           # a compressed web page instead of a 15,000-token dump
caveman convert --dry-run     # pixel mode: skills the model reads as images
caveman stats                 # your token history

https://github.com/JuliusBrussee/caveman/blob/HEAD/Caveman Learn report: a summary and savings cards on the left; the biggest places tokens go, with one fix opened, and a chart of how full sessions get on the right

Building your own agent? Same shrinking, as one wrapper around the Vercel AI SDK, LangChain, OpenAI, or Anthropic call you already make:

npm install @caveman-ai/middleware @caveman-ai/sdk        # TypeScript
pip install 'caveman-middleware[langchain]' caveman-sdk   # Python 3.11+

TypeScript guide · Python guide · Every framework · One container for the whole team

What you get

| Command | What it does | |---|---| | /caveman · /ultracave · /megacave | The voice, the grunt, the 文言文. /caveman status shows the mode, /caveman off stops it | | /caveman-commit | One-line Conventional Commit | | /caveman-review | One finding per line: L42: 🔴 null deref. Guard it. | | /caveman-compress | Shrinks memory files and backs up the original | | /caveman-stats | Real token usage for this Claude Code session | | /caveman-help | Every mode and command on one screen | | cavecrew | Subagents that find, edit, and review code, then report back in caveman | | investigate-first · lean-build · surgical-patch · safe-refactor · migration · verify-and-stop | Work patterns that write less code. Your agent picks them up when a task fits | | caveman-setup · caveman-discover · caveman-learn · caveman-manage · caveman-optimize · caveman-explore · caveman-evidence-review | Drive the proxy from inside your agent |

In the wild

https://github.com/JuliusBrussee/caveman/blob/HEAD/ThePrimeagen reacts to Caveman: No way this actually works

ThePrimeagen: "No way this actually works." Watch

Adobe Research: CAVEWOMAN, arXiv, June 2026

JetBrains: "It is fun, and it costs you nothing measurable in quality." Read

Elastic: elastic-caveman on Elasticsearch Labs, April 2026

Hacker News: #1, 904 points

GitHub Trending #1 overall, July 2026 · Trendshift #1 repo of the day, April 2026 · Product Hunt #8 of the day

Started as a joke in April 2026. Now past 100,000 stars. Joke got serious. Voice did not.


Star History Chart

Privacy

The skill runs on your machine and sends nothing. The caveman CLI sends usage stats by default: commands run, token counts, a random install ID, OS, and IP. Never your prompts, code, or file paths. One person maintains this for free, and those stats show what to build next. Turn it off for good with caveman telemetry off or DO_NOT_TRACK=1. The full list, and how to delete what was sent: SECURITY.md.

License

Apache-2.0, whole repo. Read it, fork it, ship it, host it. Free like mammoth on open plain. Older releases and third-party notices: LICENSING.md. "Caveman" and the rock logo are trademarks of Julius Brussee.

Cite

@software{brussee2026caveman,
  author = {Brussee, Julius},
  title  = {Caveman: why many token when few do trick},
  year   = {2026},
  url    = {https://github.com/JuliusBrussee/caveman}
}

---

🪨 Caveman save you token. Star cost zero. Fair trade.

Docs · Install matrix · Honest numbers · Contributing · Caveman Cloud · Issues

GitHub Stars & Activity

110,187Stars
6,380Forks
66Open issues
GoLanguage

GitHub Popularity

GitHub stars110,187
Forks6,380
Open issues66
Primary languageGo
LicenseApache-2.0
Stars gained today1,941
Created2026-04-04
Last pushed2026-10-06

Trending History

Weekly boardrank #15 · ▲ 1,941 stars

Related GitHub Projects

1

infiniflow / ragflow

Go★ 91,959⑂ 0
→
2

router-for-me / CLIProxyAPI

Go★ 54,740⑂ 0
→
3

alibaba / open-code-review

Go★ 45,831⑂ 0
→
4

Wei-Shaw / sub2api

Go★ 43,649⑂ 0
→
5

gastownhall / beads

Go★ 27,783⑂ 0
→
6

vxcontrol / pentagi

Go★ 25,433⑂ 0
→
7

affaan-m / ECC

JavaScript★ 276,398⑂ 0
→
8

NousResearch / hermes-agent

Python★ 252,500⑂ 0
→

More Trending Repositories