TotalReclaw
End-to-end encrypted, decentralized memory for OpenClaw. A native kind:memory provider — recall is automatic via memory_search/memory_get, and facts are captured in the background.…
Pedro Diogo
@p-diogo
What This Skill Does
End-to-end encrypted, decentralized memory provider for OpenClaw agents. Automatically captures user facts in the background and enables recall through native memory_search/memory_get tools, with explicit save via CLI on user request. Requires one-time browser-based account setup to derive encryption keys.
Replaces storing user memories in local files or centralized servers by keeping all facts encrypted on a decentralized network with automatic background capture.
When to Use It
- Install TotalReclaw as the native memory provider for a new OpenClaw agent
- Recall user-specific information like preferences, details, or past facts
- Explicitly save a fact when the user says 'remember X' or 'save X'
- Restore access to encrypted memories using a recovery phrase
- Re-enable the plugin after reinstalling to bind the memory slot
Install
$ openclaw skills install @p-diogo/totalreclawTotalReclaw — OpenClaw native memory provider
End-to-end encrypted memory stored across a decentralized network (not on a single company server). TotalReclaw is OpenClaw's native kind:"memory" provider: recall runs through the conventional memory_search / memory_get tools (the same surface active-memory uses), and facts are captured automatically in the background — you do not call a tool to remember each fact. This skill tells you the install + account-setup flow and when to drive recall explicitly.
How memory works here (read first)
- Recall is native.
memory_searchandmemory_getare the memory tools. OpenClaw'sactive-memorysub-agent routes recall through them and the plugin injects guidance telling you when to search. When the user asks about themselves ("what's my X?", "do I X?", "what do you remember?"), callmemory_search. If 0 results, say so plainly — don't guess from session history. - Capture is automatic. The plugin extracts facts from the conversation in the background (trajectory poller). You do not call a tool on every preference/fact the user states — that happens for you. Never write user facts to
MEMORY.md,USER.md, or any local file; those are agent-persona config, user memories live encrypted on-chain. - Explicit remember only on request, via the
memory_savetool. If the user explicitly says "remember X" / "save X" / "note X" / "don't forget X", call thememory_savetool with the fact astext— one call per distinct atomic fact. Read the returnedok/storedand report it truthfully: say "Saved" only whenstored >= 1;stored: 0means it was a near-duplicate of an existing memory (say so, do NOT say "Saved");ok: falsemeans the store failed (surface the error to the user). Use thememory_savetool for this — never a shell command (see the next rule). - NEVER shell out to
tror any CLI to store a memory. A baretr remember "X"runs GNU coreutilstr— a character-translator that exits silently with no output, NOT a TotalReclaw command — so reporting "Saved" after it is silent data loss (the exact bug this rule exists to prevent). Explicit "remember X" goes through thememory_savetool ONLY. Ifmemory_saveis unavailable (not registered, or it returneddisabled/ok: false), do NOT fall back to a shell command or to writingMEMORY.md/USER.md/any local file — tell the user plainly that you cannot store the memory right now and surface the tool's error. There is no second write path.
Do not describe storage as "local", "local-only", "stored locally", "on disk", 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.
Phrase safety (HARD)
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.
HARD guardrail — install/reinstall/upgrade flows: During install, reinstall, upgrade, or any verification steps, the agent MUST NOT read, list, cat, show, display, or inspect credentials.json, ~/.totalreclaw/credentials.json, ~/.totalreclaw*/credentials.json, ~/.openclaw/plugins/totalreclaw/credentials.json, or ANY credentials/phrase/key/secrets file — for ANY reason, including "verifying the install." These files contain encryption key material and Smart Account addresses that MUST NOT enter the LLM context. Never run ls, find, cat, show, or similar commands against plugin directories to "check files."
Install
openclaw plugins install @totalreclaw/totalreclaw
openclaw skills install totalreclaw
openclaw plugins enable totalreclaw
Published on npm + ClawHub (p-diogo, GitHub-verified). For a release candidate, pin with @rc; stable resolves from latest. Run openclaw plugins enable totalreclaw right after install, always — it binds the memory slot. On a clean install that's a no-op; on a reinstall over a previous version it's what stops the plugin from landing Status: disabled with the slot stuck at memory-core (a disabled plugin never registers its memory tools or pair routes, so pairing later fails with a 502). The plugin self-applies the rest of the gateway config it needs on load and auto-reloads (see Restart below) — no manual gateway restart.
Reinstall recovery. If install reports already exists / delete it first, do not add --force (it writes a broken version=None record). Clean the leftover package dir and reinstall — this never touches your credentials, which live under ~/.totalreclaw/:
openclaw plugins uninstall totalreclaw
rm -rf ~/.openclaw/npm/projects/*totalreclaw-totalreclaw*
openclaw plugins install @totalreclaw/totalreclaw
openclaw plugins enable totalreclaw
Setup (pair — user-initiated QR)
Pairing is a deliberate, user-initiated flow (the plugin does not auto-pair on load). When credentials don't exist:
-
Mint a pair session via the plugin's in-process HTTP route — the gateway process owns the relay pair WebSocket, so it survives until the user completes:
curl -s http://localhost:18789/plugin/totalreclaw/pair/init→ returns
{"url":"https://…/pair/p/<id>#pk=…","pin":"123456","expires_at_ms":…}.Do NOT use
tr pair --jsonfor this. The CLI holds the pair WebSocket in a subprocess that OpenClaw's ~30s shell-tool timeout kills — the WS then drops, and when the user submits their phrase the relay returns a 502 (gateway_disconnected). The in-process route above avoids that entirely. Only fall back to the CLI if the route is unreachable (nocurl, or a pre-3.3.12 plugin), and then it MUST be detached so the WS outlives the shell exec:setsid -f node "$TR_CLI" pair --json < /dev/null— never runtr pairin the foreground. -
Surface the url and pin to the user verbatim (read from the JSON; never invent values): "Open
<url>in your browser, enter PIN<pin>, and generate or paste your 12-word recovery phrase. This link expires in 10 minutes (at<HH:MM UTC from expires_at_ms>). Reply done once it's sealed." Emit the URL as plain text on its own line — the#pk=fragment breaks if wrapped in backticks/markdown. -
The user completes in the browser (phrase is generated/imported browser-side, encrypted, uploaded to the relay — never touches this chat). On completion
~/.totalreclaw/credentials.jsonis written. -
Confirm:
✓ TotalReclaw set up.(If credentials already exist when first asked:✓ TotalReclaw is already set up.)
Pair is UNCONDITIONAL when no credentials — the user installing/requesting setup IS the consent; do not add a second consent gate. tr --help lists every subcommand.
TR_CLI="$(ls -d ~/.openclaw/npm/node_modules/@totalreclaw/totalreclaw/dist/cli/tr-cli.js ~/.openclaw/extensions/totalreclaw/dist/cli/tr-cli.js 2>/dev/null | head -1)"
node "$TR_CLI" status --json # {"version":"…","paired":true,…}
Restart (agent-driven, never user-manual)
The plugin self-reloads: after install it writes the gateway config it needs and signals SIGUSR1 to its own PID so the gateway picks it up without a manual restart. If memory_search/memory_get are not bound (tools didn't take effect on first load), issue the literal slash command /totalreclaw-restart autonomously — announce it in one line, never ask the user to authorize it, never stall, never kill / docker restart / prompt the user to restart. This mirrors the autonomous-restart pattern other runtimes use; the user should never perform a manual restart.
Tools + CLI surface
Agent-facing (native memory contract): memory_search (recall), memory_get (read one memory by citation), memory_save (explicit write — use for "remember X" / "save X" / "note X").
Curation + status CLI (tr, i.e. node "$TR_CLI" …): tr pin / tr unpin · tr retype · tr set_scope · tr status · tr export · tr pair. The tr remember --json "X" CLI is the underlying store path the memory_save tool wraps — prefer the tool (it cannot be confused with GNU coreutils tr). Import + plan upgrade run via the gateway subcommand: openclaw totalreclaw import from <source> --file <path> [--json], openclaw totalreclaw upgrade [--json], openclaw totalreclaw import status|abort.
The legacy totalreclaw_* agent tools and the tr recall CLI are retired — recall is memory_search, explicit capture is the memory_save tool (not a shell-out to tr). If a stale guide references them, follow this SKILL instead.
Full guide: https://github.com/p-diogo/totalreclaw/blob/main/docs/guides/openclaw-setup.md
Top skills in this category
Apple Notes
@steipeteManage Apple Notes via the `memo` CLI on macOS (create, view, edit, delete, search, move, and export notes). Use when a user asks Clawdbot to add a note, list notes, search notes, or manage note folders.
Prompt Guard
@seojoonkim650+ pattern AI agent security defense covering prompt injection, supply chain injection, memory poisoning, action gate bypass, unicode steganography, cascad...
OpenClaw Token Optimizer
@asif2bdOpenClaw Token Optimizer v3.2.0 — practical cost-control toolkit for OpenClaw agents. Lazy context loading, Sonnet/Opus-aware routing, heartbeat scheduling,...
Calendly
@byungkyuCalendly API integration with managed OAuth. Access event types, scheduled events, invitees, availability, and manage webhooks. Use this skill when users want to view scheduling data, check availability, book meetings, or integrate with Calendly workflows. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Calls run through the `maton` CLI with OAuth login; default to read and list calls, and confirm every write or new connection with the user.
Google Docs
@hith3shGoogle Docs API integration with managed OAuth. Search, read, create, and update Google Docs documents. Use this skill when users want to read document text,...