JuliusBrussee/caveman
tldr.page
Local Tools

Local tools

Caveman ships local tools for recovery, memory, browser context, and large command output. They work without a Caveman account.

MCP server

Register recovery server with detected agents:

caveman tools mcp install

Run caveman tools mcp uninstall to remove registration. Direct server binary, caveman-mcp, communicates over standard input and output.

It exposes five tool classes:

ToolPurpose
CompressReduce eligible context and return recovery reference
RetrieveFetch exact source for a recovery handle
StatsRead local compression statistics
TOON encodeEncode supported structured input
TOON decodeDecode and validate TOON input

MCP transport is local process I/O, and host agent decides when tools can be called. Configure its tool permissions as narrowly as possible.

Cavemem

Cavemem stores durable project facts in SQLite and retrieves them with local BM25 text ranking.

Main operations:

caveman tools mem remember "fact"
caveman tools mem recall "query"
caveman tools mem supersede <id> "replacement"
caveman tools mem history <id>
caveman tools mem forget <id>

Recall returns current facts by default and has a default inferred-token budget of 2,000. Superseded history remains available for inspection. Recalled compact records can include recovery references to exact stored source.

Memory is local persistence, not model training. A remembered statement can be wrong or stale; source and supersession metadata help callers judge it.

Build standalone binary:

go build -o cavemem ./mem/cmd/cavemem

Browser bridge

Browser bridge attaches to Chrome through Chrome DevTools Protocol. It captures an accessibility-tree representation, filters it by query, compresses it, and returns actionable element references.

caveman tools browse https://example.com "pricing"
caveman tools browse act '<reference>' click
caveman tools browse eval 'document.title'
caveman tools browse recover '<handle>'
caveman tools browse close

Snapshots avoid screenshots when semantic structure is enough. Recovery keeps exact captured source available. Browser actions and JavaScript evaluation can change page or account state; host permission policy should distinguish read and write operations.

Build bridge:

go build ./browse/cmd/caveman-browse

Output shrinker

Output shrinker parses large command and tool results, keeps high-signal structure, and stores full source in CCR. It is useful for compiler logs, test output, diffs, search results, and terminal transcripts.

some-command | caveman tools shrink
caveman tools shrink -- go test ./...

Structural shrink input is capped at 32 MiB. CLI command capture uses a separate bounded limit, 8 MiB by default. Oversized input is rejected or handled by caller policy; it is not silently treated as complete.

Shrinker must preserve error class, exit status, relevant paths, and recovery handle. A short summary without those fields is not a safe replacement for debugging output.

Tool-catalog shrinker

caveman-shrink specializes in MCP and OpenAI-style tool catalogs. It keeps tool names, parameters, enums, required fields, defaults, constants, and $ref targets while removing annotations and shortening long descriptions. Description reduction remains lossy and can change tool selection.

cat tools.json | caveman-shrink > tools.min.json
caveman-shrink lint tools.json
caveman-shrink recover <handle> > tools.original.json

Input cap is 32 MiB. Malformed or non-winning input passes through. Exact source must be committed to CCR before compact catalog and handle are emitted.

Local storage

Local proxy and tools commonly use:

~/.caveman/caveman.db
~/.caveman/ccr.db
~/.caveman/mem/mem.db
~/.caveman/mem/ccr.db
~/.caveman/caveman.yaml
~/.caveman-cloud/config.json

Project overlays use ./.caveman/config.json. Back up or delete these files only with awareness that recovery handles and learned observations may stop resolving, along with local memory.