python 3.11+ inject <200ms local-only fail-open MIT

Claude Code that learns you

Silent semantic memory injection. Every prompt gets the right context from your past — in under 200ms, local-only, no prompt engineering required.

ONNX bge-small embeddings cosine + quality re-ranking exp-decay citation feedback PII redaction before disk write fail-open on any error
Inject flow
Raw prompt (what you type)
What Claude sees (after inject)
How it works
Hook What shed does Latency
UserPromptSubmit Embed prompt → cosine search over memory index → quality re-rank → prepend <shed-context> <200ms
PostToolUse Track tool approvals; when a pattern repeats N×, generate permit proposal <10ms
Stop Scan response for citation evidence → update quality scores. Detect user corrections → write proposal. Auto-write stats row. <50ms
SessionStart Render brief of pending proposals (lessons + permits) <5ms
Benchmarks
Operation Cold Warm p95
embed query (hash)7.3ms0.1ms0.4ms
top-k retrieval (50 memories)0.1ms0.1ms13.1ms
top-k retrieval (200 memories)0.1ms0.2ms4.3ms
top-k retrieval (500 memories)0.2ms0.4ms4.8ms
full inject round-trip (200 memories)0.1ms0.2ms0.4ms

Measured with hash embedder (no model). ONNX (bge-small): ~150ms cold, ~8ms warm. Run python scripts/bench.py to reproduce.

Install
$ pip install shed-memory # or: uv add shed-memory
$ shed install # wires UserPromptSubmit + Stop hooks into ~/.claude/settings.json
$ shed doctor # verify hooks are wired, memory roots found