For developers on Claude Code

Memory that accumulates.
Your agent picks up exactly where it left off.

Snowpack gives coding agents long-term memory — local-first, one SQLite file on your machine, yours. Built for Claude Code first.

$ pip install snowpack && snowpack setup

Free, local CLI. No daemon, no account — your agent's memory stays on your machine.

The snowpack is the season's memory — every storm recorded as a layer.

The problem

Your agent forgets everything between sessions.

Sessions end, context dies

Every conversation starts from zero. Decisions, conventions, and dead ends get re-explained — by you, again.

Compaction wipes the middle

Long sessions get summarized to fit the context window. The details you'll need next are exactly what gets dropped.

Knowledge buried in transcripts

What your agent figured out last week is sitting in a session log nobody searches. Solved problems get solved again.

SNODAY · AGENT MEMORYsnowpack

Local-first memory
for coding agents.

Snowpack sits next to your agent and remembers for it. Everything it learns lands in a single local file — accumulated, searchable, and entirely under your control.

Yours

One SQLite file on your machine. Inspect it, back it up, delete it — and secrets are redacted before anything is stored. Your agent's memory belongs to you, not a vendor's cloud.

Four kinds of memory

Episodic — what happened, when. Semantic — what's true, distilled from it. Working — mid-task state that survives compaction. Procedural — corrections sintered into durable rules.

Retrieval that explains itself

Hybrid search — vector, keyword, graph, and recency — with provenance from every fact back to the conversation it came from, and telemetry on what actually helped.

Works with Claude Code today

One setup command wires the hooks and permissions. No daemon, no account — and no API key or local model required unless you want them. MCP server is on the roadmap.

How it works

Observe. Consolidate.
Retrieve.

The vocabulary comes from snow science — history accumulates in layers, and you read it by digging in. Each term is a real CLI verb; snowpack setup wires the hooks in one command.

01

obs sessions become memory, automatically

Hooks ingest every Claude Code session as it happens — episodic memory, timestamped and kept. No agent discipline required.

02

extract distill episodes into facts

Like snow grains fusing into a layer, episodes are distilled into durable facts — with spend disclosed up front and every paid run bounded.

03

probe search your agent's memory

Hybrid retrieval — vector, keyword, graph, and recency — with provenance from every fact back to its source conversation.

Plus stash — a working-memory checkpoint that survives compaction — and thaw, which replays the exact exchanges compaction dropped, full text and in order.

claude — ~/project
fix the flaky retry test in lib/queue.ts
Bash(snowpack probe "queue retry flaky test")
⎿ 3 memories · top hit:
"retry test flaked from fake timers —
fix by advancing the clock, not sleeping"
provenance: session 2026-05-28T14:02
We've hit this before — applying the fake-timer fix.
Bash(snowpack feedback 1182 --used)
⎿ recorded · ranking learns from real usage
Bash(snowpack stash "queue.ts mid-refactor: retry now
clock-driven; backoff test still todo")
⎿ checkpoint saved · survives compaction
· context compacted — hooks re-inject the stash ·
Bash(snowpack thaw "backoff test")
⎿ 2 pre-compaction exchanges, replayed in full
· session ends — hooks ingest it as episodes ·
$ snowpack obs extract
⎿ 12 episodes → 5 durable facts
$

Observability

Dig a pit.
See the layers.

snowpack pit opens a read-only graph and stats UI on localhost: what your agent's memory holds, where each fact came from, which ones are going stale — and which were never worth keeping.

snotel retrieval telemetry

Every probe is logged — what was asked, what surfaced, what got used. Channel win-rates show whether vector, keyword, graph, or recency is earning its keep, and an eval harness scores ranking changes against your own labeled queries. Not vibes.

weak layers the failure mode, made visible

A persistent weak layer is a fact retrieval keeps confidently surfacing that never gets used. The pit flags it before it causes a slide.

prune forgetting, with evidence

Telemetry nominates what to forget — dead facts, weak layers — and you judge each one. Archival is soft, audited, and reversible.

the pit
GraphStats
freshstale (60d)dead — never retrievednode size = usage · edge width = retrievals
weak layer — retrieved 9×, never used

What's coming

Local tool first.

Local-first is the foundation, not a phase — nothing about the architecture forecloses where it goes.

Now

Local dev tool

  • ·One-command setup for Claude Code
  • ·probe · stash · thaw · sinter · prune
  • ·The pit — graph + stats UI
  • ·Secret redaction & spend controls
  • ·Runs with or without Ollama

Next

Local-first + sync

  • ·Encrypted sync across machines
  • ·MCP server
  • ·Language-agnostic API
  • ·Gated on measured retrieval quality

Later

Hosted platform

  • ·Team memory
  • ·Bring your own agent

Get started

Give your agent a memory.

Two commands. setup wires the Claude Code hooks once — every session after that accumulates.

$ pip install snowpack
$ snowpack setup

Python 3.11+. Prefer uv? uv tool install snowpack.