# goosedump
`goosedump` browses, searches, converts, and compacts saved coding-agent
sessions, with project-scoped durable memory. It supports Claude Code, Codex,
Crush, Gemini CLI, Goose, OpenCode, and Pi.
Inspired by [`lllyasviel/VCC`](https://github.com/lllyasviel/VCC).
## Install
Prebuilt binaries support Linux x64/arm64, macOS arm64, and Windows x64:
```sh
npm install --global @jarkkojs/goosedump
```
Build from source (Rust 1.95+, C compiler, Node.js 18+):
```sh
cargo build --release
```
## Quick start
Session targets use `provider:session-id`. Bare IDs are not accepted.
```sh
goosedump session list --query '.provider == "pi"'
goosedump session show pi:context-id
goosedump session find pi:context-id '*database*'
goosedump session search pi:context-id 'database failure'
goosedump session compact pi:context-id
goosedump memory learn pi:context-id
goosedump memory recall 'database failure'
```
Full options: `goosedump --help` and the [manual page](man/man1/goosedump.1).
## Commands
| `session` | `list`, `show`, `find`, `search`, `compact`, `copy`, `remove` |
| `memory` | `learn`, `recall`, `list`, `show`, `forget`, `status` |
`session compact` does not write durable memory. `memory learn` creates durable
claims; recall searches the current project by default. Memory types are
`decision`, `fact`, `preference`, `procedure`, and `lesson`.
## Pi extension
The [pi-goosedump](packages/pi-goosedump/README.md) extension adds session
search, memory, session management, and compaction to Pi:
```sh
pi install npm:pi-goosedump
```
## Local models
| [gpt-oss-20b](docs/models/gpt-oss-20b.md) | Claim extraction; compact candidate filter |
| [bge-small-en-v1.5](docs/models/bge-small-en-v1.5.md) | Semantic claim retrieval |
[Text-model benchmarks](docs/models/gpt-oss-20b-benchmarks.md).
## Development
### Check
```sh
make ci
CI_MSRV=1 make ci # optional MSRV check
```
### Package
All targets use [`cross`](https://github.com/cross-rs/cross) and Docker.
Linux x64/arm64 and Windows x64 use official cross images.
On Apple Silicon with Dory, x86_64 images run under FEX; packaging reaps the
container if FEX leaves it stuck after cargo finishes.
```sh
make package
make package PLATFORMS='linux-x64 win32-x64'
PACKAGE_STRICT=1 make package
```
`darwin-arm64` is skipped unless the local image
`ghcr.io/cross-rs/aarch64-apple-darwin-cross:local` is present.
### Release
After `scripts/release.sh <version>` and pushing the tag:
```sh
make ci
PACKAGE_STRICT=1 make package
make publish
```
`make publish` publishes crates.io and npm packages, then uploads GitLab release
tarballs when `glab` is available.
## License
| goosedump | LGPL-2.1-or-later |
| pi-goosedump | Apache-2.0 |
| GPT-OSS-20B | Apache-2.0 |
| bge-small-en-v1.5 | MIT |
Models download at run time and are not distributed with goosedump.