Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ members = [
resolver = "2"

[workspace.package]
version = "0.15.0"
version = "0.15.1"
edition = "2021"
license = "MIT"
authors = ["TerminallyLazy"]
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ framework-agnostic and does not replace either protocol.
Tree Ring Memory is in protocol-preview status. Current launch links:

- Launch page: <https://terminallylazy.github.io/Tree-Ring-Memory/>
- Launch release: <https://github.com/TerminallyLazy/Tree-Ring-Memory/releases/tag/v0.15.0>
- Launch release: <https://github.com/TerminallyLazy/Tree-Ring-Memory/releases/tag/v0.15.1>
- Launch discussion: <https://github.com/TerminallyLazy/Tree-Ring-Memory/discussions/27>
- Rust-native CLI article: <https://terminallylazy.github.io/Tree-Ring-Memory/launch/rust-native-agent-memory-cli.md>
- Feedback issue: <https://github.com/TerminallyLazy/Tree-Ring-Memory/issues/26>
Expand Down Expand Up @@ -259,8 +259,8 @@ sh install.sh --project --init --release latest
sh install.sh --global --install-dir "$HOME/.local"
sh install.sh --no-animation # stable output; kept for explicit script usage
sh install.sh --no-path-update
sh install.sh --release 0.15.0
sh install.sh --archive-url https://example/tree-ring-memory-0.15.0-darwin-arm64.tar.gz --archive-sha256 <sha256>
sh install.sh --release 0.15.1
sh install.sh --archive-url https://example/tree-ring-memory-0.15.1-darwin-arm64.tar.gz --archive-sha256 <sha256>
```

After install, rerun onboarding anytime:
Expand Down
4 changes: 2 additions & 2 deletions crates/tree-ring-memory-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ semver.workspace = true
sha2.workspace = true
tempfile.workspace = true
uuid.workspace = true
tree-ring-memory-core = { path = "../tree-ring-memory-core", version = "0.15.0" }
tree-ring-memory-sqlite = { path = "../tree-ring-memory-sqlite", version = "0.15.0" }
tree-ring-memory-core = { path = "../tree-ring-memory-core", version = "0.15.1" }
tree-ring-memory-sqlite = { path = "../tree-ring-memory-sqlite", version = "0.15.1" }

[dev-dependencies]
rusqlite.workspace = true
17 changes: 13 additions & 4 deletions crates/tree-ring-memory-cli/src/agent_awareness.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ Runtime bootstrap and updates:

- Resolve the real project root before initialization. Never initialize a plugin cache, package directory, home directory, or incidental working directory.
- Prefer `<project-root>/.tree-ring/bin/tree-ring` when present; otherwise use the active `tree-ring` on `PATH`.
- With existing user authorization for setup, install the verified project-local release from the project root with `curl -fsSL https://raw.githubusercontent.com/TerminallyLazy/Tree-Ring-Memory/main/install.sh | sh -s -- --project --init --release latest --no-animation`. Otherwise obtain permission before downloading or installing software.
- With existing user authorization for setup, download the official version-pinned `v0.15.0/install.sh` installer to a temporary file, verify its SHA-256 is `ef0d5eb8f09cbe2e4c3abe80ee9a98a56759c89ad4ddd103d6c68314cd653ade`, inspect it, and run `sh <verified-installer-path> --project --init --release latest --no-animation` from the project root. Never pipe a network response directly to a shell. Otherwise obtain permission before downloading or installing software.
- Use `tree-ring --root .tree-ring init` for a global CLI or `.tree-ring/bin/tree-ring --root .tree-ring init` for a project-local CLI. Verify that `memory.sqlite`, `AGENTS.md`, `SKILL.md`, and `CLI.md` are under the intended project.
- `tree-ring update --check` is read-only. Run `tree-ring update` only with update authorization; it preserves the active installation scope and verifies official release assets. Re-run project initialization afterward to backfill managed guidance.
- A pre-0.15 CLI must be upgraded with its existing package manager or install prefix. Check `command -v tree-ring` and `which -a tree-ring` so an old binary does not shadow the update.
Expand Down Expand Up @@ -400,13 +400,18 @@ working directory. Prefer `{root}/bin/tree-ring` when it exists; otherwise use
the active `tree-ring` on `PATH`.

If the CLI is absent and the user's request already authorizes Tree Ring setup,
install the official verified project-local release from the real project root:
download the official version-pinned `v0.15.0/install.sh` installer to a
temporary file, verify its SHA-256 is
`ef0d5eb8f09cbe2e4c3abe80ee9a98a56759c89ad4ddd103d6c68314cd653ade`, inspect
it, and run it from the real project root:

```bash
curl -fsSL https://raw.githubusercontent.com/TerminallyLazy/Tree-Ring-Memory/main/install.sh | sh -s -- --project --init --release latest --no-animation
sh <verified-installer-path> --project --init --release latest --no-animation
```

Otherwise obtain permission before downloading or installing software. Run
Never pipe a network response directly to a shell. The installer verifies the
selected release archive against its published SHA-256. Otherwise obtain
permission before downloading or installing software. Run
`tree-ring --root {root} init` for a global CLI or `{root}/bin/tree-ring --root
{root} init` for a project-local CLI. Verify all generated files remain under
the intended root, then inspect `integrations status` with the same executable.
Expand Down Expand Up @@ -711,6 +716,10 @@ mod tests {
|| content.contains("Runtime bootstrap and updates:")
);
assert!(content.contains("--project --init --release latest --no-animation"));
assert!(content
.contains("ef0d5eb8f09cbe2e4c3abe80ee9a98a56759c89ad4ddd103d6c68314cd653ade"));
assert!(content.contains("pipe a network response directly to a shell"));
assert!(!content.contains("main/install.sh | sh"));
assert!(content.contains("tree-ring update --check"));
assert!(content.contains("project root"));
assert!(content.contains("shadow"));
Expand Down
2 changes: 1 addition & 1 deletion crates/tree-ring-memory-sqlite/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ rusqlite.workspace = true
serde.workspace = true
serde_json.workspace = true
sha2.workspace = true
tree-ring-memory-core = { path = "../tree-ring-memory-core", version = "0.15.0" }
tree-ring-memory-core = { path = "../tree-ring-memory-core", version = "0.15.1" }
uuid.workspace = true

[dev-dependencies]
Expand Down
14 changes: 9 additions & 5 deletions docs/integrations/agent-skill.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,15 +54,19 @@ agents to encounter Tree Ring Memory instructions before entering `.tree-ring/`.
## Runtime Bootstrap And Updates

Agents must resolve the real project root before setup. If the user has already
authorized Tree Ring installation, the safe default is the verified
project-local release installer, run from that root:
authorized Tree Ring installation, download the official version-pinned
`v0.15.0/install.sh` installer to a temporary file, verify its SHA-256 is
`ef0d5eb8f09cbe2e4c3abe80ee9a98a56759c89ad4ddd103d6c68314cd653ade`, inspect
it, and only then run it from that root:

```bash
curl -fsSL https://raw.githubusercontent.com/TerminallyLazy/Tree-Ring-Memory/main/install.sh | sh -s -- --project --init --release latest --no-animation
sh <verified-installer-path> --project --init --release latest --no-animation
```

Without existing setup authorization, the agent should explain that exact
operation and ask before downloading or installing software. It must not
Agents must not pipe a network response directly to a shell; the installer
verifies the selected release archive against its published SHA-256. Without
existing setup authorization, the agent should explain that exact operation
and ask before downloading or installing software. It must not
initialize a plugin cache, package directory, home directory, or unrelated
working directory. Existing project-local installs should use
`.tree-ring/bin/tree-ring --root .tree-ring init`; global installs should use
Expand Down
4 changes: 2 additions & 2 deletions docs/press-kit.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ DOX/Revolve adapters, framework discovery, and a terminal TUI.
- Category: AI agents, developer tools, local-first software, Rust CLI
- License: MIT
- Status: protocol-preview
- Current version: 0.15.0
- Current version: 0.15.1
- Website: <https://terminallylazy.github.io/Tree-Ring-Memory/>
- Repository: <https://github.com/TerminallyLazy/Tree-Ring-Memory>
- Launch release: <https://github.com/TerminallyLazy/Tree-Ring-Memory/releases/tag/v0.15.0>
- Launch release: <https://github.com/TerminallyLazy/Tree-Ring-Memory/releases/tag/v0.15.1>
- Launch discussion: <https://github.com/TerminallyLazy/Tree-Ring-Memory/discussions/27>
- Homebrew tap: <https://github.com/TerminallyLazy/homebrew-tree-ring>
- Feedback: <https://github.com/TerminallyLazy/Tree-Ring-Memory/issues/26>
Expand Down
2 changes: 1 addition & 1 deletion marketing/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ python3 marketing/scripts/build-campaign-cards.py

- Repository: `https://github.com/TerminallyLazy/Tree-Ring-Memory`
- Launch page: `https://terminallylazy.github.io/Tree-Ring-Memory/`
- Launch release: `https://github.com/TerminallyLazy/Tree-Ring-Memory/releases/tag/v0.15.0`
- Launch release: `https://github.com/TerminallyLazy/Tree-Ring-Memory/releases/tag/v0.15.1`
- Launch discussion: `https://github.com/TerminallyLazy/Tree-Ring-Memory/discussions/27`
- Homebrew tap: `https://github.com/TerminallyLazy/homebrew-tree-ring`
- Agent-Skills.md main repo listing:
Expand Down
9 changes: 8 additions & 1 deletion plugins/tree-ring-memory/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,18 @@ privacy-safe memory action is warranted.
The safe default is a verified project-local install. From the actual project
root, after the user has authorized Tree Ring setup:

Download the official version-pinned `v0.15.0/install.sh` to a temporary file,
verify its SHA-256 is
`ef0d5eb8f09cbe2e4c3abe80ee9a98a56759c89ad4ddd103d6c68314cd653ade`, inspect
it, then run these commands from the project root:

```bash
curl -fsSL https://raw.githubusercontent.com/TerminallyLazy/Tree-Ring-Memory/main/install.sh | sh -s -- --project --init --release latest --no-animation
sh <verified-installer-path> --project --init --release latest --no-animation
.tree-ring/bin/tree-ring --root .tree-ring integrations status --verbose
```

Do not pipe a network response directly to a shell.

The installer downloads the official platform release and verifies its SHA-256
asset. A global Homebrew install remains available on macOS ARM64 through
`brew install tree-ring`. Agents may proceed when the user's request already
Expand Down
14 changes: 11 additions & 3 deletions plugins/tree-ring-memory/skills/tree-ring-memory/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: tree-ring-memory
description: Guides AI agents in using Tree Ring Memory for durable recall, project decisions, user preferences, warnings, future seeds, privacy-safe memory capture, and lifecycle-aware forgetting.
license: MIT
metadata:
version: "0.15.0"
version: "0.15.1"
tags: "memory, agents, recall, privacy, projects, dox, revolve, skills, cli"
triggers: "remember this; recall what we decided; what did we learn; tree ring memory; consolidate memory; forget this; project memory; sync DOX; sync Revolve; evidence loop; multi-agent memory"
---
Expand Down Expand Up @@ -35,13 +35,21 @@ working directory by accident.
CLI is available and the user's request already authorizes Tree Ring setup,
install the verified current release project-locally from the project root.
Otherwise explain the exact operation and obtain permission before the
network download or software installation:
network download or software installation. Download the official,
version-pinned `v0.15.0/install.sh` installer to a temporary file, verify its
SHA-256 is
`ef0d5eb8f09cbe2e4c3abe80ee9a98a56759c89ad4ddd103d6c68314cd653ade`,
inspect it, and only then run:

```bash
cd <project-root>
curl -fsSL https://raw.githubusercontent.com/TerminallyLazy/Tree-Ring-Memory/main/install.sh | sh -s -- --project --init --release latest --no-animation
sh <verified-installer-path> --project --init --release latest --no-animation
```

Do not pipe a network response directly to a shell. The installer verifies
the selected release archive against its published SHA-256 before placing
the binary at `<project-root>/.tree-ring/bin/tree-ring`.

4. For an existing global CLI, initialize from the project root with
`tree-ring --root .tree-ring init`. For a project-local CLI, use
`.tree-ring/bin/tree-ring --root .tree-ring init`. This must place
Expand Down
14 changes: 11 additions & 3 deletions skills/tree-ring-memory/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: tree-ring-memory
description: Guides AI agents in using Tree Ring Memory for durable recall, project decisions, user preferences, warnings, future seeds, privacy-safe memory capture, and lifecycle-aware forgetting.
license: MIT
metadata:
version: "0.15.0"
version: "0.15.1"
tags: "memory, agents, recall, privacy, projects, dox, revolve, skills, cli"
triggers: "remember this; recall what we decided; what did we learn; tree ring memory; consolidate memory; forget this; project memory; sync DOX; sync Revolve; evidence loop; multi-agent memory"
---
Expand Down Expand Up @@ -34,13 +34,21 @@ working directory by accident.
3. If no CLI is available and the user's request already authorizes Tree Ring
setup, install the verified current release project-locally from the project
root. Otherwise explain the exact operation and obtain permission before the
network download or software installation:
network download or software installation. Download the official,
version-pinned `v0.15.0/install.sh` installer to a temporary file, verify its
SHA-256 is
`ef0d5eb8f09cbe2e4c3abe80ee9a98a56759c89ad4ddd103d6c68314cd653ade`,
inspect it, and only then run:

```bash
cd <project-root>
curl -fsSL https://raw.githubusercontent.com/TerminallyLazy/Tree-Ring-Memory/main/install.sh | sh -s -- --project --init --release latest --no-animation
sh <verified-installer-path> --project --init --release latest --no-animation
```

Do not pipe a network response directly to a shell. The installer verifies
the selected release archive against its published SHA-256 before placing
the binary at `<project-root>/.tree-ring/bin/tree-ring`.

4. For an existing global CLI, initialize from the project root with
`tree-ring --root .tree-ring init`. For a project-local CLI, use
`.tree-ring/bin/tree-ring --root .tree-ring init`. This must place
Expand Down
21 changes: 13 additions & 8 deletions templates/dox/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,23 @@ plugin cache, package directory, home directory, or incidental working
directory. Prefer `<project-root>/.tree-ring/bin/tree-ring` when it exists;
otherwise use the active `tree-ring` on `PATH`.

When no CLI exists and the user's request already authorizes setup, run the
official verified-release installer from the project root:
When no CLI exists and the user's request already authorizes setup, download
the official version-pinned `v0.15.0/install.sh` installer to a temporary file,
verify its SHA-256 is
`ef0d5eb8f09cbe2e4c3abe80ee9a98a56759c89ad4ddd103d6c68314cd653ade`,
inspect it, and only then run it from the project root:

```bash
curl -fsSL https://raw.githubusercontent.com/TerminallyLazy/Tree-Ring-Memory/main/install.sh | sh -s -- --project --init --release latest --no-animation
sh <verified-installer-path> --project --init --release latest --no-animation
```

Otherwise obtain permission before downloading or installing software. A
global CLI initializes with `tree-ring --root .tree-ring init`; a project-local
CLI initializes with `.tree-ring/bin/tree-ring --root .tree-ring init`. Verify
that the generated files and `memory.sqlite` are under the intended project's
`.tree-ring/`, then run `integrations status` with the same binary and root.
Do not pipe a network response directly to a shell. The installer verifies the
selected release archive against its published SHA-256. Otherwise obtain
permission before downloading or installing software. A global CLI initializes
with `tree-ring --root .tree-ring init`; a project-local CLI initializes with
`.tree-ring/bin/tree-ring --root .tree-ring init`. Verify that the generated
files and `memory.sqlite` are under the intended project's `.tree-ring/`, then
run `integrations status` with the same binary and root.

Use `tree-ring update --check` for a read-only release check and, only after
update authorization, `tree-ring update`. Preserve the current manager and
Expand Down