{"id":51668282,"url":"https://github.com/TerminallyLazy/Tree-Ring-Memory","last_synced_at":"2026-07-15T03:00:40.821Z","repository":{"id":369486107,"uuid":"1289444149","full_name":"TerminallyLazy/Tree-Ring-Memory","owner":"TerminallyLazy","description":"Framework-agnostic tree-ring memory for AI agents: temporal, scoped, evidence-backed recall with privacy controls.","archived":false,"fork":false,"pushed_at":"2026-07-05T19:31:18.000Z","size":3526,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-05T21:32:23.768Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TerminallyLazy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-04T18:58:29.000Z","updated_at":"2026-07-05T19:14:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/TerminallyLazy/Tree-Ring-Memory","commit_stats":null,"previous_names":["terminallylazy/tree-ring-memory"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TerminallyLazy/Tree-Ring-Memory","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TerminallyLazy%2FTree-Ring-Memory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TerminallyLazy%2FTree-Ring-Memory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TerminallyLazy%2FTree-Ring-Memory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TerminallyLazy%2FTree-Ring-Memory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TerminallyLazy","download_url":"https://codeload.github.com/TerminallyLazy/Tree-Ring-Memory/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TerminallyLazy%2FTree-Ring-Memory/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35488230,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-15T02:00:06.706Z","response_time":131,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-14T22:00:29.426Z","updated_at":"2026-07-15T03:00:40.813Z","avatar_url":"https://github.com/TerminallyLazy.png","language":"Rust","funding_links":[],"categories":["Command Line Tools","Applications","Source Catalog","\u003ca name=\"tooling\"\u003e\u003c/a\u003etooling","⚙️ Agent Operations","Rust","💿 Products"],"sub_categories":["Developer Tools","🧠 Memory","Open-Source"],"readme":"# Tree Ring Memory\n\n![Tree Ring Memory retro roller-rink banner](assets/tree-ring-memory-banner.png)\n\nTree Ring Memory is a framework-agnostic, local-first memory lifecycle layer for\nAI agents. It helps agents remember useful decisions, warnings, preferences,\nand lessons without turning memory into a transcript dump. Fresh memory stays\ndetailed, older memory compresses into rings, important scars remain visible,\nand durable truths become heartwood.\n\nTree Ring Memory is inspired by the spatial project-memory patterns in\n[DOX](https://github.com/agent0ai/dox) and the evidence-driven improvement loop\nin [Revolve](https://github.com/agent0ai/revolve), with a deliberate nod to\ntheir original creator, [Jan Tomášek](https://github.com/frdel). This project is\nframework-agnostic and does not replace either protocol.\n\nTree Ring Memory is in protocol-preview status. Current launch links:\n\n- Launch page: \u003chttps://terminallylazy.github.io/Tree-Ring-Memory/\u003e\n- Launch release: \u003chttps://github.com/TerminallyLazy/Tree-Ring-Memory/releases/tag/v0.11.0\u003e\n- Launch discussion: \u003chttps://github.com/TerminallyLazy/Tree-Ring-Memory/discussions/27\u003e\n- Rust-native CLI article: \u003chttps://terminallylazy.github.io/Tree-Ring-Memory/launch/rust-native-agent-memory-cli.md\u003e\n- Feedback issue: \u003chttps://github.com/TerminallyLazy/Tree-Ring-Memory/issues/26\u003e\n- Homebrew tap: \u003chttps://github.com/TerminallyLazy/homebrew-tree-ring\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eProtocol preview history\u003c/summary\u003e\n\n- v0.1 provided the initial local reference implementation with SQLite storage and no required cloud services.\n- v0.2 moved durable behavior into a Rust core.\n- v0.3 explored host bindings during the Rust migration.\n- v0.4 added Rust-owned JSONL import/export with privacy-preserving defaults across the CLI.\n- v0.5 added Rust-owned audit checks for stale, sensitive, low-confidence, supersession, and contradiction candidates.\n- v0.6 added Rust-owned deterministic consolidation with idempotent summary records and cautious sensitive-memory handling.\n- v0.7 made the public facade Rust-native only and added Rust-owned maintenance for expiry, secret redaction, and FTS repair.\n- v0.8 removed Python-owned runtime behavior.\n- v0.9 removed tracked Python source, tests, smoke scripts, and the optional CPython extension from the canonical repo.\n- v0.10 added a one-line installer plus Rust-native terminal onboarding with animated terminal tree rings.\n- v0.11 made the repo fully Rust-native, wired TUI export/consolidation actions, added DOX/Revolve sync adapters, and added agent-framework discovery.\n\n\u003c/details\u003e\n\n## What It Gives Agents\n\n- Explicit local recall with SQLite/FTS storage and no required cloud service.\n- Source-linked memories for decisions, scars, lessons, evidence, and durable\n  project truths.\n- Rust-native import/export, audit, consolidation, maintenance, DOX/Revolve\n  adapters, harness discovery, and terminal UI.\n- Evidence artifacts for install size, recall speed, harness readiness, and\n  recall quality.\n- Privacy defaults that block secret-like memory, hide sensitive details, and\n  keep transcript capture out of scope.\n\nThe Rust workspace currently includes:\n\n- `crates/tree-ring-memory-core`: models, validation, sensitivity checks, and recall scoring.\n- `crates/tree-ring-memory-sqlite`: schema-compatible SQLite/FTS storage and recall filtering.\n- `crates/tree-ring-memory-cli`: native `tree-ring` CLI.\n\nThe public runtime is Rust-native. The Rust CLI and Rust crates own storage,\nrecall, import/export, audit, consolidation, maintenance, and terminal UI\nbehavior. There is no tracked root Python package, Python wrapper layer, pytest\nsuite, Python smoke script, PyO3 crate, or CPython extension.\n\n## Screenshots\n\nThese are captured from the actual `tree-ring tui` app running against a local\n`.tree-ring` store populated through the public CLI with 47 memories across\nall rings, plus the current certification artifacts.\n\n![Tree Ring TUI dashboard showing ring activity, ambient rings, memories, and detail panels](docs/assets/readme-tui-dashboard.png)\n\nDashboard view with populated cambium, outer, inner, heartwood, scar, and seed\nrings. Ambient layers are duller at lower relative fullness and lighter as their\nshare of stored memories grows; activity pulses are temporary.\n\n![Tree Ring TUI search mode showing ranked recall results from a populated store](docs/assets/readme-tui-search.png)\n\nSearch mode with ranked recall results and selected-memory details.\n\n![Tree Ring TUI evidence browser showing certification metrics, harness records, and recall-quality checks](docs/assets/readme-tui-evidence.png)\n\nEvidence browser with install size, recall speed, harness records, and\nrecall-quality checks loaded from `target/tree-ring-certification/`.\n\n![Tree Ring TUI integrations view showing detected agent frameworks and setup guidance](docs/assets/readme-tui-integrations.png)\n\nIntegrations view showing detected local agent framework markers and next-step\nguidance.\n\n## Quick Start\n\nGlobal user install:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/TerminallyLazy/Tree-Ring-Memory/main/install.sh | sh\n```\n\nmacOS ARM64 install with Homebrew:\n\n```bash\nbrew tap TerminallyLazy/tree-ring\nbrew install tree-ring\n```\n\nProject-local install with first-run initialization:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/TerminallyLazy/Tree-Ring-Memory/main/install.sh | sh -s -- --project --init\n```\n\nStore the first project memory:\n\n```bash\ntree-ring init\ntree-ring remember \"Use project-scoped recall before changing release behavior.\" \\\n  --event-type lesson \\\n  --scope project \\\n  --project example-service \\\n  --tag release \\\n  --tag workflow\ntree-ring recall \"release behavior\" --project example-service\n```\n\nOpen the terminal console:\n\n```bash\ntree-ring tui\n```\n\n## Install Details\n\nThe installer builds the Rust CLI with `cargo`, installs `tree-ring`, then shows\none stable terminal onboarding screen with a branded terminal ring and the next\nuseful commands. For global installs, it also adds the install bin directory to your\nshell profile when that directory is not already on `PATH`. It does not\ninitialize memory unless `--init` is passed.\n\nThe installer command streams only the installer script into `sh`. It does not\nput memory in a temporary location and it does not remove `.tree-ring`,\ninstalled binaries, Cargo caches, source checkouts, or shell profiles.\nPersistent memory lives in the configured memory root, normally `.tree-ring`\nfor project-local use or whatever path you pass with `--root`.\n\nInitialization creates the SQLite store and non-destructive agent-awareness\nfiles in the memory root:\n\n- `.tree-ring/AGENTS.md`: DOX-style Tree Ring Memory guidance and root\n  `AGENTS.md` merge notes.\n- `.tree-ring/SKILL.md`: portable skill instructions for agent runtimes.\n- `.tree-ring/CLI.md`: quick command reference for recall, remember, evidence,\n  DOX/Revolve sync, import/export, audit, maintenance, and TUI usage.\n\nExisting awareness files are left untouched. Tree Ring Memory does not modify a\nproject's root `AGENTS.md`; merge the generated guidance manually when you want\nDOX-aware agents to see it before entering `.tree-ring/`.\n\nUseful installer options:\n\n```bash\nsh install.sh --help\nsh install.sh --project --init\nsh install.sh --global --install-dir \"$HOME/.local\"\nsh install.sh --no-animation  # stable output; kept for explicit script usage\nsh install.sh --no-path-update\nsh install.sh --archive-url https://example/tree-ring-memory-0.11.0-macos-arm64.tar.gz --archive-sha256 \u003csha256\u003e\n```\n\nAfter install, rerun onboarding anytime:\n\n```bash\ntree-ring welcome\ntree-ring welcome --init\ntree-ring\n```\n\nBy default, the installer uses `cargo install` from the Git repository or a\nlocal `--source` checkout. Release builds can use `--archive-url` plus\n`--archive-sha256` to install a prebuilt `tree-ring` binary archive.\n\nOpen the terminal console after a global install:\n\n```bash\ntree-ring tui\n```\n\nIf your shell cannot find `tree-ring` after a global install, run it directly or\nadd the install bin directory to the current terminal. The installer can update\nfuture shell sessions through your shell profile, but a child installer process\ncannot rewrite the already-running parent shell environment:\n\n```bash\n$HOME/.local/bin/tree-ring tui\nexport PATH=\"$HOME/.local/bin:$PATH\"\n```\n\nOpen the terminal console after a project-local install:\n\n```bash\n.tree-ring/bin/tree-ring --root .tree-ring tui\n```\n\n## CLI Preview\n\nThe `tree-ring` command is the Rust CLI.\n\n```bash\ntree-ring init\ntree-ring remember \"Use protocol-first design.\" --event-type decision --tag architecture\ntree-ring evidence \"Snapshot invalidation fixed stale unread chat state.\" --outcome promoted --evidence-ref evals/chat-state/run-042 --score 0.91\ntree-ring recall \"protocol design\"\ntree-ring forget mem_example --mode delete --reason \"example cleanup\"\ntree-ring export --output memories.jsonl\ntree-ring import memories.jsonl --dry-run\ntree-ring import memories.jsonl\ntree-ring audit --audit-type sensitive\ntree-ring consolidate --period-type manual --dry-run\ntree-ring maintain\ntree-ring maintain --apply-expired --repair-fts\ntree-ring dox sync --source-root . --dry-run\ntree-ring revolve sync --source-root revolve --dry-run\ntree-ring integrations scan --source-root .\n```\n\nThe CLI stores memory in `.tree-ring/` by default.\n\nCommand ownership is Rust-native:\n\n- `init` creates the SQLite store plus `.tree-ring/AGENTS.md`, `.tree-ring/SKILL.md`, and `.tree-ring/CLI.md` without overwriting existing files.\n- `remember`, `recall`, and `forget` cover direct memory capture, retrieval, redaction, and deletion.\n- `evidence` is the Revolve-inspired improvement-loop entry point for evaluated outcomes.\n- `dox sync` and `revolve sync` are read-only source adapters that summarize and point back to authoritative files.\n- `integrations scan` discovers nearby agent-framework markers and suggests setup paths without changing their config.\n- `export`, `import`, `audit`, `consolidate`, and `maintain` are local maintenance surfaces over the same SQLite store.\n- `welcome` and `tui` are the terminal onboarding and operator-console surfaces.\n\n## Evidence Loop\n\nThe Revolve-inspired loop is exposed through `tree-ring evidence`. It records\nevaluated outcomes as memory with an evidence reference instead of treating\nclaims as durable truth without support.\n\n```bash\ntree-ring evidence \"Snapshot invalidation fixed stale unread chat state.\" \\\n  --outcome promoted \\\n  --evidence-ref evals/chat-state/run-042 \\\n  --project agent-ui \\\n  --score 0.91\n\ntree-ring evidence \"Aggressive caching caused stale multi-chat state.\" \\\n  --outcome rejected \\\n  --evidence-ref evals/cache-branch/run-013 \\\n  --project agent-ui\n```\n\nOutcome mapping:\n\n- `promoted` -\u003e `heartwood`, durable `evaluation_promotion`\n- `rejected` -\u003e `scar`, durable `evaluation_rejection`\n- `deferred` -\u003e `seed`, `evaluation_hypothesis`\n- `observed` -\u003e `outer`, `evaluation_result`\n\nThis is not a replacement for Revolve records. Use source refs that point back\nto real evaluations, checkpoints, PRs, issues, logs, or run artifacts.\n\n## Source Adapters\n\nTree Ring Memory includes Rust-native source adapters. They produce concise,\nsource-linked memory events and then persist through the same SQLite store as\nmanual memories.\n\n```bash\ntree-ring dox sync --source-root . --dry-run\ntree-ring dox sync --source-root . --project example-service\n\ntree-ring revolve sync --source-root revolve --dry-run\ntree-ring revolve sync --source-root revolve --project example-service\n```\n\nDOX sync discovers `AGENTS.md` files, stores summaries and source refs, and\nkeeps the source files authoritative. It can scan a project root or a single\n`AGENTS.md` file. It does not copy entire project-contract trees into memory,\ndoes not weaken child contracts, and does not let memory replace fresh DOX\ntraversal before edits.\n\nRevolve sync scans a Revolve root or an evidence file. It imports promoted\noutcomes as heartwood, rejected outcomes as scars, deferred hypotheses as\nseeds, and observed results as outer-ring evidence. It keeps source refs back\nto the Revolve/evaluation record and does not treat incomparable or\noutcome-free files as durable truth.\n\nFor both adapters, run `--dry-run` first. Imported memory is a concise recall\naid; the source `AGENTS.md`, Revolve record, evaluation artifact, PR, issue,\ntest, or run log remains authoritative.\n\nFramework discovery is read-only:\n\n```bash\ntree-ring integrations scan --source-root .\ntree-ring integrations certify --source-root .\n```\n\n- `integrations certify` writes non-mutating harness evidence under\n  `target/tree-ring-certification/harness/` and updates\n  `target/tree-ring-certification/evidence-index.json`. Pass, fail, and skip\n  states are evidence records, not broad compatibility claims.\n- `recall-quality` writes non-private recall diagnostics under\n  `target/tree-ring-certification/recall-quality/default-fixture-v1.json`\n  and merges the result into\n  `target/tree-ring-certification/evidence-index.json`. It uses deterministic\n  safe fixture memories, records returned ids, rank positions, score factors,\n  and latency, and marks each query as `pass`, `fail`, or `needs_review`.\n\n```bash\ntree-ring recall-quality --source-root .\n```\n\nIt looks for local markers for DOX, Revolve, Codex, Claude Code, Agent Zero/A0,\nGoose, OpenCode, Hermes, and Pi, then suggests next steps without editing those\ntools' configuration. JSON output records whether each marker came from the\nproject or from the user's home configuration, so harness readiness is not\noverstated when only global config exists.\n\nAgent-mediated bridge linking is the planned next step after read-only\ndiscovery. The design keeps `.tree-ring` as the canonical memory root while\nadding small project-level bridge files that tell the active agent to read\n`.tree-ring/SKILL.md` and `.tree-ring/CLI.md`. Project bridges are preferred\nbecause they travel with the repo; global bridges affect every project and must\nremain explicit opt-in. Until `tree-ring integrations link` is implemented, add\nthose references manually in the harness startup context or project instruction\nfile instead of expecting `tree-ring init` to modify Codex, Claude, Pi,\nOpenCode, or other agent configuration.\n\n`tree-ring export` writes newline-delimited JSON. The first line is a\n`tree_ring_memory_export` header with schema and plugin version metadata; each\nremaining line is a `memory_event` envelope. The command excludes sensitive and\nsuperseded memories unless `--include-sensitive` or `--include-superseded` is\nset. Import validates all events, batches writes through SQLite, skips duplicate\nids by default, and replaces existing ids only with `--replace-existing`.\n\n`tree-ring audit` is non-mutating. It reports deterministic local findings for\nstale expiry, sensitive retention, low-confidence durable memory, supersession\nintegrity, and conservative contradiction candidates.\n\n`tree-ring consolidate` creates deterministic local summary memories without an\nLLM. Dry-run mode writes nothing. Persisted consolidation is idempotent for the\nsame period and source-memory set unless `--force` is provided. Sensitive\nnon-secret memories are summarized without copying raw payload text and require\nreview; secret-like memories are excluded from consolidation.\n\n`tree-ring maintain` is safe by default. Without apply flags it is a dry-run\nreport, including on a missing root. It can apply eligible temporary-memory\nexpiry, redact secret-like memories, and rebuild SQLite FTS only when explicitly\nasked through `--apply-expired`, `--apply-secret-redactions`, or `--repair-fts`.\n\n## Terminal Console Preview\n\nThe Rust CLI includes a framework-agnostic Ratatui console for humans and agent\noperators working from a terminal:\n\n```bash\ntree-ring tui\ntree-ring --root .tree-ring tui --event-stream ./tree-ring-events.jsonl --tick-ms 150\n```\n\nFrom a source checkout without installing:\n\n```bash\ncargo run -p tree-ring-memory-cli -- --root .tree-ring welcome --init --no-animation\ncargo run -p tree-ring-memory-cli -- --root .tree-ring remember \"Try the TUI with a first memory.\" --event-type lesson --scope project\ncargo run -p tree-ring-memory-cli -- --root .tree-ring tui\n```\n\nThe console keeps an animated straight-on tree-ring face visible at all times.\nThe visual layer generates a backend-independent ring frame first, then rasterizes\nthat frame into high-resolution terminal cells for the ambient HUD. Individual\nrings carry clockwise or counter-clockwise highlights, pulse with matching memory\nactivity, and shimmer through scar marks on each tick. That keeps the always-on\nanimation cheap and portable while leaving room for richer Kitty/iTerm2\nimage-protocol rendering in welcome or expanded views later.\nStore-watch polling updates persisted counts from SQLite, while the optional\nevent stream lights rings in real time without treating stream events as durable\ntruth.\n\nUseful keys and commands:\n\n- `s` focuses search, `/` opens the slash command palette, `r` opens exploded\n  ring view, `q` quits.\n- `i` toggles sensitive-memory visibility, `u` toggles superseded-memory\n  visibility.\n- Slash commands include `/rings`, `/search \u003cquery\u003e`, `/remember \u003csummary\u003e`,\n  `/forget`, `/redact`, `/promote`, `/scar`, `/seed`, `/supersede \u003cold_id\u003e`,\n  `/consolidate`, `/export \u003cfile\u003e`, `/sync`, `/integrations`, `/stream`, and\n  `/watch`.\n\nDestructive or authority-changing operations are confirmation-gated. Sensitive\ndetails stay hidden by default, and secret-like memory is blocked before\nstorage.\n\nEvent stream lines are local JSONL objects. They are display signals only:\n\n```json\n{\"event\":\"remembered\",\"ring\":\"cambium\",\"label\":\"Stored project lesson\"}\n{\"event\":\"policy_blocked\",\"ring\":\"scar\",\"label\":\"Secret-like memory blocked\"}\n```\n\n## Development Checks\n\n```bash\ncargo test --locked\nsh install.sh --help\ncargo run -p tree-ring-memory-cli -- --help\ncargo run -p tree-ring-memory-cli -- welcome --no-animation\ncargo run -p tree-ring-memory-cli -- tui --help\ncargo run -p tree-ring-memory-cli -- export --help\ncargo run -p tree-ring-memory-cli -- import --help\ncargo run -p tree-ring-memory-cli -- audit --help\ncargo run -p tree-ring-memory-cli -- consolidate --help\ncargo run -p tree-ring-memory-cli -- maintain --help\ncargo run -p tree-ring-memory-cli -- dox sync --help\ncargo run -p tree-ring-memory-cli -- revolve sync --help\ncargo run -p tree-ring-memory-cli -- integrations scan --help\ncargo run --release -p tree-ring-memory-sqlite --example performance_smoke -- 1000\nsh scripts/certify-tree-ring.sh\nsh scripts/package-release.sh\n```\n\nThe Rust CLI writes the canonical SQLite/raw JSON shape. The performance smoke\nasserts nonempty recalls, emits a `METRICS_JSON=` line, and uses conservative\nlocal thresholds of at least 500 inserts/sec and max recall latency of 250 ms\nfor the synthetic workload.\n\n`scripts/certify-tree-ring.sh` runs the fuller local certification suite:\nformatting, tests, Clippy, release build, isolated project/global installs, CLI\nJSON smokes, DOX/Revolve adapter smokes, integration-scan origin checks,\ninstall-size, recall-speed, recall-quality diagnostics, CLI, adapter, and\nharness checks, import throughput, and 10k/30k recall timing. It writes\n`target/tree-ring-certification/summary.md`,\n`target/tree-ring-certification/metrics.json`, and\n`target/tree-ring-certification/evidence-index.json`.\n\nMost recent branch-local certification run, generated at\n`2026-07-09T15:34:52Z`:\n\n- Release binary: 6,352,528 bytes.\n- Project install with init: 6,272 KB.\n- Global install: 6,228 KB.\n- CLI import: 10,000 memories in 5 seconds, about 2,000/sec.\n- 10k recall: 3.643 ms average, 6.499 ms max.\n- 30k recall: 7.608 ms average, 13.634 ms max.\n- Harness matrix: 5 pass, 1 skip. Codex, Claude Code, OpenCode, Goose, and\n  Agent Zero/A0 passed; Pi was skipped because only a user-home marker was\n  present in the fixture.\n- Recall quality: 4 queries, 4 pass, 0 fail, 0 needs review; average latency\n  0.118 ms, max latency 0.370 ms.\n- Agent Zero plugin smoke: skipped because `TREE_RING_AGENT_ZERO_ROOT` was not\n  set.\n\nCertification also runs the default memory quality scenario pack under\n`fixtures/quality/`. Those scenarios prove recall gates, spam rejection,\nstale-truth suppression, evidence requirements, and behavior-proof outcomes.\nThe quality report is written to\n`target/tree-ring-certification/quality/quality-report.json` with a readable\nsummary at `target/tree-ring-certification/quality/quality-summary.md`.\n\n`scripts/package-release.sh` builds the Rust CLI in release mode, creates a\nplatform tarball under `dist/`, and writes a SHA-256 checksum file. Tag pushes\nrun the release artifact workflow for Linux and macOS.\n\n## Design Docs\n\n- `docs/architecture/rust-core-roadmap.md`\n- `docs/architecture/rust-core-status.md`\n- `docs/integrations/agent-skill.md`\n- `docs/protocol/memory-event.md`\n\nHistorical migration and planning documents are retained under `docs/superpowers/`\nand `docs/feature/`. Some of those records describe earlier Python prototype or\nbinding options that have since been superseded by the Rust-native runtime.\nThe current bridge-linking design is tracked in\n`docs/superpowers/specs/2026-07-06-tree-ring-agent-mediated-bridges-design.md`.\n\n## Agent Workflow Integration\n\n- `skills/tree-ring-memory/SKILL.md` gives agents portable guidance for when to recall, remember, redact, forget, or avoid memory capture.\n- `templates/dox/AGENTS.md` is a DOX-style project contract template for repos that want Tree Ring Memory rules alongside source code.\n- `docs/integrations/agent-skill.md` explains how to use both without making memory more authoritative than local project docs.\n- `tree-ring init` and `tree-ring welcome --init` copy local guidance into `.tree-ring/AGENTS.md`, `.tree-ring/SKILL.md`, and `.tree-ring/CLI.md` without overwriting existing files.\n\nFor DOX-style project awareness, merge the relevant generated `.tree-ring/AGENTS.md`\nsections into the project root `AGENTS.md`. The CLI intentionally does not\nrewrite root project contracts automatically.\n\nFor agent harnesses that support local skills or instruction packs, point them\nat `.tree-ring/SKILL.md` or the repository copy under `skills/`. For\nDOX-aware agents, make sure the project root `AGENTS.md` tells the agent to read\nTree Ring Memory guidance when memory is initialized. For CLI-driven agents,\ninclude `.tree-ring/CLI.md` in the harness prompt or startup context so the\nagent knows the exact local commands.\n\nBridge files should be short discovery pointers, not duplicate memory stores.\nRecommended project-level bridge targets are `.agents/skills/tree-ring-memory/SKILL.md`\nfor Codex/Gemini-style skill loaders, `.claude/skills/tree-ring-memory/SKILL.md`\nplus `CLAUDE.md` references for Claude Code, root `AGENTS.md` references for\nOpenCode/DOX-style agents, and `.pi/settings.json` resource references for Pi.\nGlobal bridge files under home directories are useful only when the user wants\nTree Ring visible in every project.\n\nMemory updates are agent-mediated. Bridge files tell the active agent when to\ncall `tree-ring recall`, `tree-ring remember`, `tree-ring evidence`,\n`tree-ring forget`, `tree-ring consolidate --dry-run`, or `tree-ring maintain`.\nTree Ring does not scrape transcripts, run a hidden recorder, or turn TUI\nevent-stream pulses into durable memory without an explicit write command.\n\n## Brand Assets\n\n- `assets/tree-ring-memory-logo.png`\n- `assets/tree-ring-memory-banner.png`\n\n## Principles\n\n- Local-first by default.\n- Protocol before adapters.\n- Explainable recall.\n- Sensitive data fails closed.\n- Forgetting and supersession are first-class.\n- Memory quality should be testable.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTerminallyLazy%2FTree-Ring-Memory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTerminallyLazy%2FTree-Ring-Memory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTerminallyLazy%2FTree-Ring-Memory/lists"}