Auth: validate email pre-insert; reject disposable domains; keep `oauth_callback`; log `organization_id` + `request_id`; omit query/secrets; test valid/malformed/duplicate; return `invalid_email`.
illustrative rewrite · not production engine output
01
Tools you run yourself. Compression and recovery stay local; model requests still go to your chosen provider.
caveman wrap claude runs supported traffic through Caveman Proxy, powered by Caveman Engine. Record mode preserves request bytes; compression mode stores original locally before replacement. No account needed. Log in only when you want cloud sync, analytics, and team features.
$ caveman claude→ local Proxy ready · powered by Caveman Engine→ recovery tool ready→ eligible context compression: ontoken reductions use local estimates (inferred)original bytes stay in local recovery storeoptional cloud analytics: caveman login
$ caveman login→ signed in as dana@example.dev→ seat 1 of 1 active (Free — 3 devices per seat)→ local compression unchanged→ this account adds: analytics, team/seats, cloud sync→ telemetry: token counts only, never your prompts$ caveman claude→ local token estimates can sync to your dashboard
illustrative status · local token reductions are estimated and labeled inferred
A base-URL swap on your machine. Record mode is pass-through. Compression changes model-visible context only when local recovery path is available. Parse failure or missing recovery returns original unchanged. Account state never controls local compression.
Tool output, logs, JSON, tables, diffs, search results and stale context can be compressed on-device. Original bytes are stored locally before lossy replacement. Token reductions stay labeled inferred.
The local profiler. It reads your own sessions and proposes the cost moves compression alone can't make — cache hints, oversized tool results, retry loops — ranked by what they could save.
Prompts and responses go direct. Caveman's cloud is not in that path.
Token counts, model names, savings numbers. There is no code path that uploads prompt or response bytes.
Nothing. Zero data retention — the endpoint refuses the upload entirely.
Prompts go from your machine straight to your provider. Caveman's cloud sees token counts, never tokens. On Enterprise, it sees nothing at all.
1 seat · account, no card
1 seat · wrap + hosted gateway
10 seats · $29 per extra
contract seats · zero data retention
3 devices per seat · dashboard-only viewers are free
Auth: validate email pre-insert; reject disposable domains; keep `oauth_callback`; log `organization_id` + `request_id`; omit query/secrets; test valid/malformed/duplicate; return `invalid_email`.
illustrative rewrite · not production engine output
tsconfig.paths. Add alias. Rebuild.const cave = new Cave({ baseURL })
await cave.compress(json)
return recoveryHandle
cave = Cave(base_url=url)
result = cave.compress(data)
print(recovery_handle)
tool caveman_compress
input JSON · logs · schemas
output inferred · CCR handle
The MIT skill: output compression for Claude Code & 30+ agents.
curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/main/install.sh | bashRecoverable local context compression for agents you already use.
TypeScript controls for what each agent run can spend and what its context costs.
Token-efficient browser automation: compressed a11y snapshots, byte-exact recovery.
claude mcp add caveman-browse -- npx -y caveman-browseThe skill is MIT and always will be — so are the extension shell and the SDKs. The engine is commercial, shipped as a binary. That's what pays for a real free tier.
No. Compression runs on your machine with no Caveman account. Wrapped agent still needs its model provider and network unless that provider also runs locally.
You lose the dashboard, team seats, and cloud sync. Account status never disables or throttles local compression; it keeps running without Caveman Cloud.
Lives in your chat box: ChatGPT, Claude, Gemini.