goosedump
goosedump browses, searches, converts, and compacts saved coding-agent
conversations. It supports Claude Code, Codex, Crush, Gemini CLI, Goose,
OpenCode, and Pi.
It builds on ideas from lllyasviel/VCC.
Install
Prebuilt binaries are available for Linux x64 and arm64, macOS arm64, and Windows x64:
To build from source:
Source builds require a C compiler for the bundled SQLite library.
Quick start
Every command that operates on a saved session takes an explicit
provider:session-id target. Use goosedump --help or the
manual page
for complete usage.
Commands
The command tree mirrors the things it manages:
session list [--query QUERY] [--json]
session show PROVIDER:ID [--entry ID] [--all] [--from ID] [--before ID] [--as PROVIDER]
session find PROVIDER:ID GLOB [range options] [--as PROVIDER]
session search PROVIDER:ID QUERY [range options] [--page NUMBER] [--as PROVIDER]
session compact PROVIDER:ID [range options] [--previous-summary SUMMARY] [--summary-max-tokens NUMBER] [--plain] [--as PROVIDER]
session copy PROVIDER:ID --to PROVIDER [--yes]
session remove PROVIDER:ID [--yes]
memory remember PROVIDER:ID [--all] [--json]
memory recall QUERY [--project PATH | --all-projects] [--type TYPE] [--limit NUMBER] [--max-tokens NUMBER] [--history] [--json]
memory list [--project PATH | --all-projects] [--type TYPE] [--limit NUMBER] [--history] [--json]
memory show MEM_ID [--json]
memory forget MEM_ID|PROVIDER:ID [--yes] [--json]
memory status [--json]
model pull [all|embedding|text]
session copy, session remove, and memory forget print their plan by default.
Pass --yes to carry out the change.
Persistent memory
session compact only creates a bounded summary; it never changes durable memory.
Use memory remember PROVIDER:ID to retain unseen source events and extract atomic
facts, decisions, preferences, procedures, and lessons with exact provenance.
Remembering the same unchanged session is idempotent. When a new statement is close
to an existing active memory of the same type, the older memory is marked superseded
and linked to the successor. Human and JSON reports list each added statement
(with mem_ IDs) and any memories it superseded.
memory recall searches the current project by default and fills an estimated token
budget with ranked active memories. It first preserves exact lexical and entity-anchor
matches (paths, crates, symbols, commands, concepts), expands through shared anchors,
then fills remaining slots with BGE semantic matches. Existing databases are embedded
in bounded batches; memory status reports indexed and pending counts. Pass --history
to include superseded statements. Use memory list to browse, memory show to inspect
provenance revision hashes, entities, and supersession links, and memory forget to preview
deletion. Forgetting a memory ID removes the
derived statement; forgetting provider:session-id removes that session's retained
source events. Applied forgetting leaves content-free tombstones so deleted memory is
not learned again accidentally.
Summary output is bounded to an estimated 4096 tokens by default. Set
--summary-max-tokens NUMBER to choose another budget, or use 0 for no limit.
The bound is best-effort when preserved goals, blockers, decisions, and preferences
alone exceed it.
Session-index caches are versioned clean-break formats and are rebuilt when incompatible. Durable memory migrations preserve existing sources, statements, and evidence links; an unsupported schema version is rejected and must be reinitialized explicitly.
Inference performance
The custom GPT-OSS-20B CPU engine uses every logical CPU available to the process by default. Override the compute thread count:
GOOSEDUMP_INFERENCE_THREADS=6 \
Compaction directive selection and durable-memory extraction use goosedump's custom
GPT-OSS-20B CPU engine. Semantic recall uses the pinned 36.7 MB BGE-small-en-v1.5
Q8_0 encoder. Download both ahead of time with goosedump model pull, or select one
with goosedump model pull text or goosedump model pull embedding. Recall falls back
to lexical and entity matching when the embedding model is not cached.
The bench feature builds a standalone harness that shells out to
goosedump session compact with GOOSEDUMP_PROFILE_COMPACT=1 and reports
end-to-end and per-stage timings:
# Edit benches/bench.txt to point at a real context, then:
Each case emits JSON with per-run timing (including model loading), median and p95 latency, and per-stage medians and p95s. Keep the machine, context range, and model cache unchanged when comparing configurations.
Pi extension
The bundled pi-goosedump extension adds session-history search, entry expansion, durable-memory recall, CWD-scoped session management, memory forget/status maintenance, and turn-driven goosedump compaction to Pi:
Development
The published Linux x64 and arm64 binaries are static glibc PIEs.
Licensing
pi-goosedump: Apache 2.0goosedump: LGPL 2.1+
Third Party Attribution
- GPT-OSS-20B: Apache 2.0
- Downloaded on first use at run-time. The model is not distributed together with goosedump.