Skip to main content

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.