Rust-native runtime
CLI, crates, local storage, recall, import/export, audit, consolidation, maintenance, and terminal UI.
Local-first agent memory
A framework-agnostic memory lifecycle layer for AI agents: fresh work stays detailed, older learning compresses, scars stay visible, and durable truths become heartwood.
Most agent memory either disappears between runs or grows into raw transcript sludge. Tree Ring Memory gives memory a lifecycle: capture, scope, recall, audit, consolidate, forget, and supersede.
CLI, crates, local storage, recall, import/export, audit, consolidation, maintenance, and terminal UI.
No required cloud service. Durable memory stays local by default and remains inspectable.
Results carry ring, scope, confidence, and ranking signals so memory is not magic.
Deletion, redaction, supersession, expiry, sensitive audit, and maintenance are core surfaces.
Use tree-ring evidence for evaluated outcomes that should become scars or heartwood.
DOX/Revolve sync, read-only framework discovery, and portable skill guidance for agent runtimes.
The point is not to store more. The point is to keep memory useful as it ages.
Fresh active context for the current work.
Recent summarized learning and decisions.
Older compressed project knowledge.
Durable, high-confidence truths.
Failures and regressions worth remembering.
Unresolved ideas and future hypotheses.
Tree Ring Memory is protocol-preview software. Install the Rust CLI, create a local memory root, store one concise lesson, recall it, and tell us where the workflow should go next.
# Portable installer
curl -fsSL https://raw.githubusercontent.com/TerminallyLazy/Tree-Ring-Memory/main/install.sh | sh
# macOS ARM64 Homebrew tap
brew tap TerminallyLazy/tree-ring
brew install tree-ring
tree-ring init
tree-ring remember "Use project-scoped recall before risky changes." --event-type lesson --scope project
tree-ring recall "risky changes"
tree-ring evidence "The eval passed after the fix." --outcome promoted --evidence-ref evals/run-042
tree-ring tui
The launch question is practical: what should a portable, local-first memory layer get right before deeper framework bridges land?