@totalreclaw/totalreclaw 3.3.12-rc.6 → 3.3.12-rc.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/SKILL.md CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: totalreclaw
3
3
  description: "End-to-end encrypted, decentralized memory for OpenClaw. Set up an account once, then call totalreclaw_remember / totalreclaw_recall (or the tr CLI under hybrid-primary) instead of writing to MEMORY.md / USER.md / local files. Trigger on 'install TotalReclaw', 'set up TotalReclaw', 'restore my recovery phrase', any remember / recall request, AND any user statement that contains a preference / fact / decision / commitment about themselves."
4
- version: 3.3.12-rc.6
4
+ version: 3.3.12-rc.7
5
5
  author: TotalReclaw Team
6
6
  license: MIT
7
7
  homepage: https://totalreclaw.xyz
@@ -22,299 +22,55 @@ metadata:
22
22
  - persistent-context
23
23
  ---
24
24
 
25
- # TotalReclaw — OpenClaw
25
+ # TotalReclaw — OpenClaw plugin
26
26
 
27
- > **Agent-executable quickstart**: <https://github.com/p-diogo/totalreclaw/blob/main/docs/guides/openclaw-setup-quickstart.md>
28
- >
29
- > **Human-readable setup guide**: <https://github.com/p-diogo/totalreclaw/blob/main/docs/guides/openclaw-setup.md>
27
+ End-to-end encrypted memory stored across a decentralized network (not on a single company server). The plugin handles install + account-setup autonomously; this skill tells the agent what to call and when.
30
28
 
31
- ## TOP RULE — MEMORY STORAGE (read this before anything else)
29
+ ## TOP RULE — MEMORY STORAGE
32
30
 
33
- **When the user states ANYTHING about themselves, their preferences, decisions, plans, identity, work, location, or facts they want retained, you MUST call `totalreclaw_remember` (NOT `write`, NOT `edit`, NOT MEMORY.md/USER.md).** Under hybrid-primary mode (OpenClaw 2026.5.x), if `totalreclaw_remember` is not bound as a tool, fall back to the `tr` CLI: `node "$TR_CLI" remember --json "<fact>"`. Either path lands the fact encrypted, on-chain. Both are valid.
31
+ When the user states ANYTHING about themselves preferences, decisions, identity, work, location, plans, tools, commitments call `totalreclaw_remember` (or `tr remember --json "<fact>"` under hybrid-primary). NEVER write user facts to `MEMORY.md`, `USER.md`, or any local file. Those are agent-persona configuration; user memories live encrypted on-chain.
34
32
 
35
- ### ABSOLUTE PROHIBITION
33
+ **Trigger immediately, no "should I?":** "I prefer / like / love / hate X", "my favorite is X", "I'm X", "my name is X", "I live / work at X", "I use X", "I decided X", "I'm going to X", "from now on X", "we agreed X", "I'll X by Y", "remind me to X", "remember that X", "save X", "note X". If a message contains MULTIPLE facts, call `totalreclaw_remember` once per fact — never blob.
36
34
 
37
- **NEVER use the `write` or `edit` tools to store user statements in `MEMORY.md`, `USER.md`, `~/.claude/memory/*.md`, `~/.openclaw/memory/*.md`, or any other file.** Those files are for AGENT PERSONA and CODEBASE INSTRUCTIONS — read-only operational config the agent loads at startup. Storing user data there is a SKILL VIOLATION. User memories live encrypted on-chain via TotalReclaw, not in flat files.
35
+ When the user asks about themselves ("what's my X?", "do I X?", "what do you remember?"), call `totalreclaw_recall` FIRST. If 0 results, say so plainly don't guess from session history.
38
36
 
39
- - DO call `totalreclaw_remember` (or `tr remember --json` under hybrid-primary).
40
- - ❌ DO NOT `Write` to `MEMORY.md`.
41
- - ❌ DO NOT `Edit` `USER.md` to append a user fact.
42
- - ❌ DO NOT echo "saving this to MEMORY.md…" — that file is not yours to write to.
37
+ Do not describe storage as `"local"`, `"local-only"`, `"stored locally"`, `"on disk"`, `"local memory"`, `"local storage"`, or `"without an account"` memories are decentralized on-chain (not on any single company server) and an account is required to derive the encryption key.
43
38
 
44
- ### Trigger phrases — call `totalreclaw_remember` on detection
39
+ ## Phrase safety (HARD)
45
40
 
46
- Do not wait for an explicit "remember this". These are first-class triggers every one of them MUST result in a `totalreclaw_remember` call (parallel with your normal reply):
41
+ The 12-word recovery phrase MUST NEVER enter chat or the agent's LLM context. The plugin's browser-based pair flow handles phrase generation and import. Never echo it, never ask the user to paste it, never pass it to any tool. If the user pastes one anyway, tell them it's compromised and re-pair for a fresh wallet.
47
42
 
48
- - **Preferences**: "I prefer X", "I like X", "I love X", "I hate X", "my favorite X is Y", "I'd rather X", "X over Y"
49
- - **Identity**: "I'm a X", "I am X", "my name is X", "I'm based in X", "I live in X", "I work at X", "I work on X", "I have X"
50
- - **Tools / setup**: "I use X", "I'm running X", "my X is Y", "I've configured X to Y"
51
- - **Decisions / plans**: "I decided to X", "I'm going to X", "I'm planning X", "we agreed X", "we settled on X", "let's call this X", "from now on X"
52
- - **Commitments**: "I'll X by Y", "remind me to X", "I need to X by Y", "don't forget X"
53
- - **Explicit asks**: "remember that X", "save X", "note that X", "store X", "make a note of X"
54
- - **Possessive assertions**: "my [anything] is [value]" (preference assertion pattern)
55
- - **Any 1st-person factual claim worth retaining** about identity, work, location, tools, preferences, ongoing projects, contacts, schedule.
43
+ ## Install
56
44
 
57
- If a single user message contains MULTIPLE such facts (e.g. "I'm Pedro. I live in Porto. I prefer PostgreSQL over MySQL."), call `totalreclaw_remember` MULTIPLE TIMES — once per atomic fact. Don't blob multiple unrelated facts into a single memory.
58
-
59
- ### When to call `totalreclaw_recall`
60
-
61
- **ALWAYS call `totalreclaw_recall` first when the user asks about themselves, their preferences, or anything from past conversations.** Trigger phrases:
62
-
63
- - "what's my X?", "do I X?", "where do I X?", "when did I X?", "have I told you X?"
64
- - "what do you remember about me?", "what do you know about my X?"
65
- - "remind me about X", "what did we decide about X?"
66
- - "do you remember when X?"
67
-
68
- Recall first, then answer from the returned facts. If 0 results come back, say so plainly — do not guess from session history.
69
-
70
- ## CRITICAL: How TotalReclaw actually stores memories
71
-
72
- **TotalReclaw is end-to-end encrypted memory stored across a DECENTRALIZED NETWORK — not on a single company server.** Memories are encrypted with keys derived from the user's 12-word recovery phrase, submitted as Account Abstraction UserOps, and persisted on a public blockchain (Base / Gnosis depending on tier). The Graph subgraph indexes them. The TotalReclaw relay only forwards encrypted bundles to the bundler and proxies subgraph reads — it never sees plaintext, can't read memories, and could be replaced by any compatible relay without losing data. No single company controls or can read user memories.
73
-
74
- Forbidden vocabulary — these claims are WRONG:
75
- - "local", "local-only", "stored locally", "on disk", "local memory", "local storage" — wrong direction (implies local-only).
76
- - "stored on a relay server", "stored on TotalReclaw's server", "single server owned by", "TotalReclaw stores your", "company server" — wrong direction (implies centralized custody).
77
- - "without an account" — wrong (an account is required to derive the encryption key).
78
-
79
- Canonical line: **"Memories are encrypted with a key derived from your recovery phrase, submitted on-chain via Account Abstraction, and stored across a decentralized network. The relay only forwards encrypted bundles — it never sees plaintext. Only you can decrypt them, and only with your recovery phrase."**
80
-
81
- ## User-facing vocabulary
82
-
83
- | Internal term | Say to the user |
84
- |---|---|
85
- | pair / pairing / paired account | "set up an account" / "your TotalReclaw account" |
86
- | relay / relay server | (don't mention; if forced, say "the encrypted-bundle forwarder") |
87
- | WS / WebSocket / handshake | (don't mention) |
88
- | trapdoor / blind index / dedup-key | (don't mention) |
89
- | subgraph / bundler / UserOp / Account Abstraction | (don't mention; if forced, "submitted on-chain to a decentralized network") |
90
- | credentials.json / mnemonic file | "your recovery phrase" |
91
- | `tr pair --json` / `setsid -f` / shell exec | (don't mention; just do the work silently) |
92
-
93
- The word "pair" is internal jargon — never use it in user-visible prose. Use "set up an account", "your account", "your recovery phrase", "your memories".
94
-
95
- ## Install / setup top-level rule
96
-
97
- **Emit ONLY the user-visible lines listed below. Do not narrate tool calls. Do not describe what you're doing or about to do.** Errors are the only allowed deviation, and only as a single tight line. The expected user-facing transcript for a healthy install is **4–5 short lines TOTAL**.
98
-
99
- ### ⚡ MANDATORY ACK BEFORE FIRST TOOL CALL
100
-
101
- **User-visible line 1 MUST be your FIRST output — emitted BEFORE you run any shell tool, plugin install, or `tr` command.** Install + setup takes 1–2 minutes of silent tool-execution; without an immediate ack the user assumes the request didn't register and may resend or abandon.
102
-
103
- The ack is unconditional. Send line 1, THEN start the work.
104
-
105
- Forbidden order (silent-then-narrate): ❌ run `openclaw plugins install` → wait 60s → emit line 1.
106
- Required order (ack-then-work): ✅ emit line 1 → run `openclaw plugins install` silently → emit line 2 when `tr status` returns.
107
-
108
- ## ⛔ FORBIDDEN ACTIONS
109
-
110
- These specific actions break the install / pair flow:
111
-
112
- 1. **Do NOT restart the gateway.** No `kill -USR1`, no `docker restart`, no `openclaw gateway restart`. The plugin self-patches and signals its own restart needs (SIGUSR1 in-process, automatic). You restarting it kills the in-flight `setsid -f` pair subprocess → 502 on browser respond. If for some specific reason a restart IS required, issue the literal slash command `/totalreclaw-restart` — nothing else. **NEVER prompt the user to manually restart anything**; the plugin handles its own restart.
113
-
114
- 2. **Do NOT write to `~/.openclaw/openclaw.json`.** The plugin's `patchOpenClawConfig()` already wrote the required keys. Any further write triggers a deferred SIGUSR1 reload that kills pair. No `openclaw config set …`, no `jq …>openclaw.json`, no `sed -i openclaw.json`.
115
-
116
- 3. **Do NOT save QR PNGs.** `tr pair --json` returns `qr_ascii` — emit that inline in a triple-backticked code block. No `/tmp/totalreclaw-pair-qr.png` (OpenClaw media-policy blocks it: `LocalMediaAccessError`). No PNG decode.
117
-
118
- 4. **`tr pair --json` MUST run via `setsid -f`** (exact form below). Foreground invocation is killed when your shell-tool exec returns → 502.
119
-
120
- 5. **Do NOT pass `--allow-dangerous` to any TotalReclaw command.** The plugin is sandboxed by design.
121
-
122
- 6. **Do NOT manually edit `~/.totalreclaw/credentials.json`.** Round-trip via `tr pair --json` (re-generate) instead.
123
-
124
- 7. **Do NOT install the legacy from-source path alongside the published plugin.** The two paths overlap and will double-write facts.
125
-
126
- ## Hybrid-primary architecture (3.3.9-rc.1)
127
-
128
- OpenClaw 2026.5.2 has a tool-policy-pipeline bug (issue #223) that strips non-bundled plugin tools before they reach the agent toolset. **3.3.9-rc.1 makes the `tr` CLI the PRIMARY path for all memory operations.** Native tools (`totalreclaw_*`) are kept for back-compat with older OpenClaw versions where they work, but the agent MUST NOT depend on them. Use `tr` from your shell tool for everything.
129
-
130
- **The `tr` binary is installed at one of two paths depending on OpenClaw version:**
131
- - Modern (2026.5.x npm-managed): `~/.openclaw/npm/node_modules/@totalreclaw/totalreclaw/dist/tr-cli.js`
132
- - Legacy (extensions tree): `~/.openclaw/extensions/totalreclaw/dist/tr-cli.js`
133
-
134
- **Resolve the path once at the top of your shell session and reuse:**
135
- ```bash
136
- TR_CLI="$(ls -d ~/.openclaw/npm/node_modules/@totalreclaw/totalreclaw/dist/tr-cli.js ~/.openclaw/extensions/totalreclaw/dist/tr-cli.js 2>/dev/null | head -1)"
137
45
  ```
138
- Then invoke as `node "$TR_CLI" <cmd> [--json]`.
139
-
140
- **Never rely on `totalreclaw_*` tool binding** — it may not be available due to issue #223. If `totalreclaw_remember` IS bound, use it (preferred). If not, use `tr remember --json` from the shell. EITHER way, the user fact MUST land in TotalReclaw — never in `MEMORY.md`/`USER.md`.
141
-
142
- ## User-visible line set (THIS IS ALL YOU SAY)
143
-
144
- Speak only these lines, in order. Substitute the bracketed placeholders with the real values. No prefaces. No suffixes. No narration.
145
-
146
- 1. (FIRST output, emitted BEFORE any shell tool call — see "MANDATORY ACK" rule above)
147
- > Setting up TotalReclaw — this takes about a minute…
148
- 2. (after install + CLI verify — `tr status` works)
149
- > ✓ Installed (totalreclaw &lt;version&gt;, hybrid mode)
150
- 3. (account-setup URL + PIN, IMMEDIATELY after `tr pair --json` returns — no consent gate)
151
- > Open &lt;url&gt; in your browser. Enter PIN &lt;pin&gt;. Generate or paste a 12-word recovery phrase. Reply `done` once it's sealed.
152
- 4. (done + free-tier confirmation)
153
- > ✓ You're set up on the TotalReclaw free tier — 500 memories/month, unlimited reads. https://totalreclaw.xyz/pricing. Ask me to remember anything.
154
-
155
- If existing credentials are detected, emit ONLY this line and stop:
156
- > ✓ TotalReclaw is already set up.
157
-
158
- ### Hard silence rules between numbered lines
159
-
160
- Do NOT emit transitional / narrative lines between any of the four user-visible lines above. Specifically forbidden:
161
-
162
- - ❌ "Now let me verify the install:" → silent. Just run `tr status --json`.
163
- - ❌ "Now let me check if you already have credentials:" → silent.
164
- - ❌ "Need to pair. Let me kick that off:" → silent.
165
- - ❌ "Standing by." → silent.
166
- - ❌ Any "Let me X" / "Now I'll Y" / "Just give me a second" prelude.
167
- - ❌ **Skipping line 1 entirely and going straight to shell tool calls.**
168
-
169
- ## Setup flow (hybrid-primary)
170
-
171
- 1. **Install plugin first, skill second.** Run via your shell tool, in this exact order:
172
- ```
173
- openclaw plugins install @totalreclaw/totalreclaw
174
- openclaw skills install totalreclaw
175
- ```
176
- For RC: replace the first command with `openclaw plugins install @totalreclaw/totalreclaw@rc`. Plugin BEFORE skill is deliberate.
177
-
178
- If either shell call fails with `command not found` / ENOENT / "not authorized" (managed-service or shell-restricted environment), tell the user verbatim: *"Your environment doesn't expose the OpenClaw CLI to me. Please install `totalreclaw` from your service's plugins / skills UI, then reply `done`."* Wait for `done` and skip to step 3.
46
+ openclaw plugins install @totalreclaw/totalreclaw@rc
47
+ openclaw skills install totalreclaw
48
+ ```
179
49
 
180
- 2. **Verify CLI works emit user-visible line 2 when successful.** Resolve `TR_CLI` and run:
181
- ```bash
182
- TR_CLI="$(ls -d ~/.openclaw/npm/node_modules/@totalreclaw/totalreclaw/dist/tr-cli.js ~/.openclaw/extensions/totalreclaw/dist/tr-cli.js 2>/dev/null | head -1)"
183
- node "$TR_CLI" status --json
184
- ```
185
- Parse the JSON. When you get `{"version": "...", "hybrid_mode": true, ...}`, emit user-visible line 2.
50
+ Plugin is published on npm + ClawHub (`p-diogo`, GitHub-verified). Stable: drop `@rc`. Under hybrid-primary, the `tr` CLI is the primary path; native `totalreclaw_*` tools are also bound when OpenClaw exposes them — use whichever your runtime binds.
186
51
 
187
- 3. **Check for existing credentials (silent unless found).** Run `test -s ~/.totalreclaw/credentials.json`. If it exists, emit *"✓ TotalReclaw is already set up."* and stop.
52
+ ## Setup (plugin-driven)
188
53
 
189
- 4. **Set up the user's TotalReclaw account IMMEDIATELY no consent gate.** Use `setsid -f` so the pair process survives gateway SIGUSR1 reloads. The handshake URL+PIN is written to a tmp file the moment the WS opens:
190
- ```bash
191
- PAIR_OUT="/tmp/tr-pair-out-$(date +%s).json"
192
- setsid -f node "$TR_CLI" pair --json > "$PAIR_OUT" 2>&1 < /dev/null
193
- sleep 2
194
- cat "$PAIR_OUT"
195
- ```
196
- Parse the JSON `{"url": "...", "pin": "...", "expires_at_ms": ...}` and emit user-visible line 3. This is UNCONDITIONAL — do NOT ask "Would you like to set up an account?". The URL + PIN itself is the consent moment.
54
+ The plugin auto-creates a pair session on first load when no credentials exist, writes `{url, pin, sid, expires_at_ms}` to `~/.totalreclaw/.pair-pending.json`, and injects a `before_agent_start` context block to you. **When you see that block, surface the URL and PIN to the user VERBATIM read from the injected context; never invent values.** Confirm on pair completion: `✓ TotalReclaw set up.` (If credentials already exist: `✓ TotalReclaw is already set up.`)
197
55
 
198
- 5. **Verify and confirm.** After the user says `done`, re-run `test -s ~/.totalreclaw/credentials.json`. If missing, the PIN expired repeat the pair block and resend line 3 once. If present, emit user-visible line 4 and stop.
56
+ If a restart is needed (rare plugin self-handles via gateway config-watcher), issue the literal slash command `/totalreclaw-restart`. Never `kill`, `docker restart`, or prompt the user to restart.
199
57
 
200
- ## `tr` CLI reference
58
+ ## Hybrid-primary CLI
201
59
 
202
- Always use `--json` flag when running from shell for machine-parseable output.
60
+ OpenClaw 2026.5.x may strip non-bundled tool bindings (issue #223). Never rely on `totalreclaw_*` tool binding alone. Fall back via shell:
203
61
 
204
62
  ```bash
205
- # Status
206
- node "$TR_CLI" status --json
207
- # Returns: {"version":"3.3.12-rc.5","onboarded":false,"next_step":"pair","tool_count":17,"hybrid_mode":true}
208
-
209
- # Pair (always via setsid -f)
210
- PAIR_OUT="/tmp/tr-pair-out-$(date +%s).json"
211
- setsid -f node "$TR_CLI" pair --json > "$PAIR_OUT" 2>&1 < /dev/null && sleep 2 && cat "$PAIR_OUT"
212
- # Returns: {"v":1,"sid":"...","url":"https://...","pin":"123456","mode":"generate","expires_at_ms":...,"qr_ascii":"..."}
213
-
214
- # Remember a fact (foreground OK — non-blocking single-shot HTTP call)
63
+ TR_CLI="$(ls -d ~/.openclaw/npm/node_modules/@totalreclaw/totalreclaw/dist/tr-cli.js ~/.openclaw/extensions/totalreclaw/dist/tr-cli.js 2>/dev/null | head -1)"
64
+ node "$TR_CLI" status --json # {"version":"...","hybrid_mode":true,"tool_count":17}
215
65
  node "$TR_CLI" remember --json "I work at Graph Foundation"
216
- # Returns: {"ok":true,"id":"...","claim_count":N}
217
-
218
- # Recall memories
219
- node "$TR_CLI" recall --json "where does the user work" --limit 5
220
- # Returns: {"results":[{"text":"...","score":0.8},...]}
66
+ node "$TR_CLI" recall --json "where does the user work" --limit 5 # {"results":[{"text":"...","score":0.8}]}
67
+ node "$TR_CLI" pair --json # {"url":"...","pin":"123456","expires_at_ms":...} — plugin's auto-pair is preferred; only use this for re-pair
221
68
  ```
222
69
 
223
- ## Tool reference (all 17 plugin tools)
224
-
225
- The plugin exposes these tools via OpenClaw's plugin runtime. Under hybrid-primary mode, prefer the `tr` CLI for `pair` / `remember` / `recall` / `status`; the rest below are typically only available as native tools.
226
-
227
- | Tool | Use case |
228
- |---|---|
229
- | `totalreclaw_pair` | Set up the user's account (browser-side phrase generation/import) |
230
- | `totalreclaw_remember` | **Store a fact / preference / decision (encrypted, on-chain). PRIMARY tool for user statements.** |
231
- | `totalreclaw_recall` | Semantic search across the user's memories |
232
- | `totalreclaw_forget` | Delete a memory by id (tombstone on-chain) |
233
- | `totalreclaw_pin` | Mark a memory as never-supersedable |
234
- | `totalreclaw_unpin` | Remove pin status |
235
- | `totalreclaw_retype` | Change a memory's type (claim/preference/directive/etc.) |
236
- | `totalreclaw_set_scope` | Change a memory's scope (work / personal / health / family / creative / finance / misc) |
237
- | `totalreclaw_export` | Export all memories (json / markdown) |
238
- | `totalreclaw_import_from` | Import from another tool (Mem0, MCP-Memory, ChatGPT, Claude, Gemini) |
239
- | `totalreclaw_import_batch` | Bulk import with chunking + extraction |
240
- | `totalreclaw_consolidate` | Merge near-duplicates after a fresh import |
241
- | `totalreclaw_status` | Check onboarding state, version, billing tier, quota |
242
- | `totalreclaw_upgrade` | Open the Stripe upgrade flow (free → paid tier) |
243
- | `totalreclaw_migrate` | Move testnet memories to mainnet (Pro tier) |
244
- | `totalreclaw_onboarding_start` | (Internal — used by setup flow) |
245
- | `totalreclaw_report_qa_bug` | (RC only) Surface a QA bug into the agent log |
246
-
247
- All tools accept JSON input and return structured JSON.
248
-
249
- ## Auto-extraction (background, no agent action required)
250
-
251
- The plugin runs a trajectory poller every 60 seconds that scans `~/.openclaw/agents/<agent>/sessions/*.trajectory.jsonl` for new conversation turns and runs LLM-driven extraction. Extracted facts go through importance filtering and dedup before landing on-chain.
252
-
253
- **Auto-extraction is a SAFETY NET, not a substitute for explicit `totalreclaw_remember` calls.** Explicit calls are higher-fidelity (the agent decides the importance, type, and scope). Auto-extraction catches things the agent missed.
254
-
255
- ## Phrase safety (HARD — never break)
256
-
257
- The 12-word recovery phrase is the master key. Hard rules:
258
-
259
- - **NEVER echo, generate, log, or ask the user to paste a recovery phrase in chat.** The browser at the pair URL handles phrase generation and import. The phrase NEVER enters the agent's LLM context.
260
- - **NEVER include a recovery phrase as input to ANY tool call** — not `totalreclaw_pair` (its only inputs are `mode` + optional config), not `totalreclaw_remember`, not `Bash`, not `Write`, not `Edit`. Anything that surfaces the phrase to the agent's context is a security incident.
261
- - **NEVER invoke any phrase-touching CLI via your shell tool.** `openclaw totalreclaw onboard` (bare interactive form) and `totalreclaw setup` print phrase material to stdout, which enters LLM context. The ONLY agent-facilitated account-setup paths are: (1) `tr pair --json` (preferred); (2) the `totalreclaw_pair` tool; (3) `openclaw totalreclaw pair generate --url-pin-only` or `openclaw totalreclaw onboard --pair-only` (single-line URL+PIN JSON, zero phrase material — both account-setup payloads are x25519-only, not BIP-39).
262
- - **NEVER display the recovery phrase back to the user in chat** even if the browser leaks it to you somehow.
263
- - **If the user pastes a phrase anyway**: tell them the phrase is now compromised, re-run `tr pair --json` for a fresh wallet.
264
-
265
- ## Browser flow context
266
-
267
- After you emit user-visible line 3, the user opens the URL on their phone or desktop browser. They walk through a 3-step wizard:
268
-
269
- 1. **Step 1 — Enter PIN.** 6 digits matching what you sent.
270
- 2. **Step 2 — Recovery phrase.** Two tabs: **Set up** (generates fresh BIP-39 phrase locally) or **Log in** (paste existing phrase to restore). User checks "I've written this down" and clicks Set up.
271
- 3. **Step 3 — You're all set.** Browser already POSTed the encrypted phrase. Plugin writes `~/.totalreclaw/credentials.json`.
272
-
273
- Common user-side issues during pair:
274
-
275
- - **"The page won't load"** → confirm URL host. Default for both stable and RC is `api.totalreclaw.xyz`. Staging via `TOTALRECLAW_SERVER_URL=https://api-staging.totalreclaw.xyz`.
276
- - **"PIN expired"** → re-run pair block, resend line 3.
277
- - **"Invalid phrase"** during Log in → user pasted a non-BIP-39-valid phrase. Tell them to re-paste or switch to Set up tab.
278
- - **502 on Set up** → the gateway WS dropped. Pair subprocess is alive (`setsid -f`). Wait 30s; re-run pair if still 502.
279
- - **"Where do I write down the phrase?"** → paper, password manager, encrypted note. NOT in this chat.
280
-
281
- ## Forbidden vocabulary in agent prose
282
-
283
- Unless the user explicitly asks how the install works, these patterns must not appear:
284
-
285
- - "Let me check that…"
286
- - "Plugin loaded. Let me verify…"
287
- - "I'll now…"
288
- - "Quick fix…"
289
- - "However, I don't see…"
290
- - "I need to use…"
291
- - "Should I /totalreclaw-restart" / "Want me to restart" / "Let me check if the tool is bound" / "Do you have a public URL"
292
- - "Now installing…" / "Got it" / "In parallel…" / "Step 1a/1b/1c"
293
- - "local" / "local-only" / "stored locally" / "on disk" / "without an account" / "local memory" / "local storage"
294
-
295
- ## Diagnostics
296
-
297
- - `tr` CLI not found → plugin not installed or install still in progress. Wait 5s, retry.
298
- - `totalreclaw_*` tools not visible → EXPECTED under OpenClaw 2026.5.2 (issue #223). Use `tr` CLI instead.
299
- - User says done but `credentials.json` missing → PIN expired; re-run `tr pair --json` and resend line 3.
300
- - `onboarding required` → credentials missing; redo from the account-setup step.
301
- - `quota exceeded` → `tr status --json`, then offer `totalreclaw_upgrade`.
302
- - `No LLM available for auto-extraction` → check `~/.openclaw/agents/<agent>/agent/auth-profiles.json`.
303
-
304
- ## How does TotalReclaw work? (canonical answer for user questions)
305
-
306
- When the user asks "how does this work?" / "where are my memories stored?" / "is this safe?" — answer:
307
-
308
- > **End-to-end encrypted, decentralized memory.** When you tell me to remember something, I encrypt it locally with a key derived from your 12-word recovery phrase, then submit it on-chain via Account Abstraction (a UserOperation). It lives on a public blockchain (Base Sepolia for free tier, Gnosis mainnet for paid). The Graph subgraph indexes it for fast retrieval. The TotalReclaw relay only forwards encrypted bundles between your client and the chain — it never sees plaintext, can't read your memories, and could be replaced by any compatible relay without losing data. Your recovery phrase is the only thing that can decrypt the memories.
309
-
310
- Shorter slices:
311
- - **"Where are memories stored?"** → "Encrypted, on-chain (Base or Gnosis depending on your tier), indexed by The Graph. Not on any single company's server."
312
- - **"Is the relay reading my data?"** → "No. The relay only forwards encrypted bundles. Plaintext never leaves your device."
313
- - **"What if TotalReclaw shuts down?"** → "Your memories survive. They're on a public blockchain. Any compatible relay (or self-hosted relay) can read them with your recovery phrase."
70
+ Pair is UNCONDITIONAL when no credentials — pasting the install URL IS the consent. `tr --help` lists every subcommand.
314
71
 
315
- ## Tool surface summary
72
+ ## Tools (17 native; same surface via `tr`)
316
73
 
317
- Hybrid-primary: `tr remember` · `tr recall` · `tr pair` · `tr status` (primary path under OpenClaw 2026.5.x).
318
- Native fallback (when bound): `totalreclaw_pair` · `_remember` · `_recall` · `_forget` · `_pin` · `_unpin` · `_retype` · `_set_scope` · `_export` · `_status` · `_upgrade` · `_migrate` · `_import_from` · `_import_batch` · `_consolidate` · `_onboarding_start` · `_report_qa_bug` (RC only).
74
+ `totalreclaw_remember` · `totalreclaw_recall` · `totalreclaw_forget` · `totalreclaw_pair` · `totalreclaw_pin` · `totalreclaw_unpin` · `totalreclaw_retype` · `totalreclaw_set_scope` · `totalreclaw_export` · `totalreclaw_import_from` · `totalreclaw_import_batch` · `totalreclaw_consolidate` · `totalreclaw_status` · `totalreclaw_upgrade` · `totalreclaw_migrate` · `totalreclaw_onboarding_start` · `totalreclaw_report_qa_bug` (RC only).
319
75
 
320
- **Default behavior summary**: the agent's job is to call `totalreclaw_remember` aggressively on user statements that match the trigger-phrase list, and `totalreclaw_recall` when the user asks about themselves. Local files (`MEMORY.md`, `USER.md`, etc.) are NOT for user memory — they are agent-persona configuration only.
76
+ Full guides: <https://github.com/p-diogo/totalreclaw/blob/main/docs/guides/openclaw-setup.md>