Openclaw Memory Toolkit
OpenClaw Memory Toolkit is a memory layer for AI agents. It remembers what matters across sessions: it extracts durable facts from your conversations, resolves contradictions instead of hoarding them, and lets you ask what it knew on any past date.
Rank
62
Safety
84
Downloads
1.0k
Updated
Oct 11, 2026
Version
4.0.5
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1K downloads reported by the source. Last updated 10/11/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 11, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 11, 2026
- Adoption signal
- 1K downloadsadoption · observed Oct 11, 2026
- Latest release
- 4.0.5release · observed Oct 11, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17bzyvy2hqcrtqhsbxdpbrrf18cpw5t:memory-toolkit- Install using `clawhub skill install s17bzyvy2hqcrtqhsbxdpbrrf18cpw5t:memory-toolkit` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/mistermijarvis/memory-toolkit before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-mistermijarvis-memory-toolkit/snapshot"
Run-check
$0.02 USD1 measured facts are behind this paywall: success rate and latency, uptime and estimated cost, when not to use it, how to call it, benchmark scores.
Agents pay $0.02 in USDC. A card payment is $0.50, the smallest a card allows.
Documentation
CLAWHUB
160,000 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
--- name: memory-health description: Complete memory management pipeline for OpenClaw agents — extraction, archiving, scoring, consolidation, health monitoring, hygiene, and ontology. Local by default (Ollama over local HTTP). Use for memory health checks, hybrid search, fact arbitration, cold-storage compaction, and memory pipeline maintenance. --- # Memory Pipeline Skill Complete memory management pipeline for OpenClaw agents: extraction, archiving, scoring, consolidation, health monitoring, and ontology — local by default (Ollama runs locally via HTTP). ⚠️ **One opt-in exception**: `trace_extractor.py` can send memory/session excerpts to **Ollama cloud** (`https://ollama.com`) when `OLLAMA_API_KEY` is configured. With no key it stays local; `TRACE_LLM_LOCAL_ONLY=1` refuses every cloud call. The destination is printed before each send. See the Security Notes below. > **⛔ MUST — releasing this skill.** Every change to this skill goes through > `scripts/release.sh`, without exception. A change is **not done** until > `scripts/release.sh check` passes green. Then, and only then, sync to the > installed skill and tag via `scripts/release.sh release vX.Y.Z "msg"`. > Never edit the installed skill directly. Never tag or publish on a red gate — > fix the drift or the invariant, never bypass the gate. > Pipeline: **local repo → installed skill → GitHub → ClawHub (manual).** ## Pipeline Overview ``` Nightly Cron (23h) │ ├─ 1. trace_extractor.py # Extract decisions/errors/facts from sessions ├─ 2. auto_archive.py # Archive daily notes >21 days ├─ 3. scoring.py # Score all memories with temporal decay ├─ 4. consolidate_advisor.py # Suggest consolidations (agent reviews) ├─ 5. conflict_resolver.py # Arbitrate contradictory facts (NLI lifecycle) ├─ 6. memory_health.py # Periodic health check (weekly) └─ 7. hybrid_search.py # Hybrid search: FTS5 + sqlite-vec + RRF ``` All scripts are standalone and composable. Run individually or as a pipeline. ## Fact lifecycle (introduced in v3.0.0) — current release v4.0.5 The search DB no longer just accumulates facts: every fact carries a lifecycle (`active` / `superseded` / `disputed`) and only `active` facts are ever retrieved. `conflict_resolver.py` runs the four-step consistency pipeline: atomic extraction → targeted retrieval of concurrent active facts → NLI classification (`CONTRADICTION` / `REDUNDANT` / `COMPATIBLE`) → traceable state update. A weak contradiction is escalated to `disputed` rather than silently destroying an established fact; `pending` surfaces the queue and `resolve --confirm|--reject` lifts the ambiguity. `compact.py` moves terminal facts into a cold archive (`memories_archive` + JSONL audit) so the hot FTS5/vector indexes stay lean without losing traceability. ## Scripts ### 1. `trace_extractor.py` — Session extraction Extracts decisions, errors, facts, and patterns from OpenClaw session transcripts and daily notes. Updates daily note
README.md
# 🧠 OpenClaw Memory Pipeline **Complete memory management pipeline for OpenClaw agents: extraction, archiving, scoring, consolidation, health monitoring, and hybrid search — local by default.** Seven standalone Python scripts that form a complete memory lifecycle pipeline for [OpenClaw](https://github.com/openclaw/openclaw) agents. Everything runs on this machine out of the box: Ollama over local HTTP, no cloud account, no paid dependency — works with any local LLM (Ollama, LM Studio, etc.) or fully without LLM in fallback mode. > **One exception, and it is opt-in:** `trace_extractor.py` can use **Ollama cloud** > (`https://ollama.com`) when an API key is configured, because that content leaves > the machine. With **no key configured it stays local**, and > **`TRACE_LLM_LOCAL_ONLY=1` refuses every cloud call outright**. Every run prints its > destination first (`[Security] ⚠️ CLOUD TRANSMISSION: …`). See > [Security Notes](#security-notes). Built for local-first OpenClaw setups (Ollama/GLM, nomic-embed-text). ## Pipeline ``` Nightly Cron (23h) │ ├─ 1. trace_extractor.py # Extract decisions/errors/facts from sessions ├─ 2. auto_archive.py # Archive daily notes >21 days ├─ 3. scoring.py # Score all memories with temporal decay ├─ 4. consolidate_advisor.py # Suggest consolidations (agent reviews) ├─ 5. conflict_resolver.py # Arbitrate contradictory facts (NLI lifecycle) ├─ 6. memory_health.py # Periodic health check (weekly) └─ 7. ontology_compact.py # GC the ontology op-log (weekly) ``` All scripts are standalone and composable. Run individually or as a pipeline. ## Contributing This README is written for **users**. If you are **maintaining this repository** (working on the release pipeline, the gate, or the repo↔skill sync), read [CONTRIBUTING.md](CONTRIBUTING.md) instead — it documents the full repo → skill → GitHub → ClawHub flow and the invariants the release gate enforces. > **MUST — every memory-skill change goes through `scripts/release.sh`.** > A change to `skills/memory-health/**` is not "done" until > `scripts/release.sh check` passes green. Never edit the installed skill > directly; never let the repo and the skill drift. Full detail in > [CONTRIBUTING.md](CONTRIBUTING.md). ## Scripts ### 1. `trace_extractor.py` — Session extraction Extracts decisions, errors, facts, and patterns from OpenClaw session transcripts and daily notes. Updates daily notes, appends entities to the ontology graph. ```bash # Nightly (pattern-based, fast ~5s) python3 scripts/trace_extractor.py --days 1 # Deep extraction (LLM-powered, ~60-180s) python3 scripts/trace_extractor.py --days 3 --llm # With a specific session transcript file (opt-in, explicit) python3 scripts/trace_extractor.py --days 1 --llm --session-file /path/to/session.jsonl # Preview only python3 scripts/trace_extractor.py --days 1 --llm --dry-run ``` **Categories:** 🟢 DECISIONS, 🔴 ERRORS, 🔵 FACTS, ⬆️ PROMOTIONS ### 2. `auto_ar
_meta.json
{
"ownerId": "kn7d3dpn3e5ys39cpa1y06kvq18cp3rk",
"slug": "memory-toolkit",
"version": "4.0.5",
"publishedAt": 1791716344723
}CHANGELOG.md
# Changelog — OpenClaw Memory Toolkit
All notable changes to the OpenClaw Memory Toolkit skill.
## v4.0.5 — Dates are validated before they reach the graph (2026-10-11)
### Real fix
**The extraction pipeline trusted the LLM's date and folded it into ids.**
`stable_id('tl', what, today)` concatenated the string blindly, and the
decision write took `dec.get('date')` verbatim. A model asked for `YYYY-MM-DD`
still returns `2026-05-31-0913` (date + time), `2026-05-26-roadmap-updates`
(date + free text) or `2026-04` (month only).
Blind concatenation produced the unmatchable nodes `day_202605310913` /
`day_20260526roadmapupdates` / `day_202604` — targets no edge can ever match.
That is the **dangling-target** defect the 10/10 backfill had to repair by hand
(158 edge targets pointing at nodes that did not exist). It is now fixed at
the source, so it cannot recur.
### Change
`normalize_date()` is the single gate every date passes before it is written
or folded into an id:
- **Parse first, build second.** A real calendar date is required —
`datetime()` rejects `2026-13-01` and `2026-02-30`; a regex alone would not.
- A leading `YYYY-MM-DD` in a longer string is kept
(`2026-05-31-0913` → `2026-05-31`), the trailing noise is dropped.
- Anything else falls back — the honest answer for "undated decision" is today,
not a fabricated date.
It gates both the id builder (`stable_id`) and the decision-date write. 12 unit
cases cover the boundary.
### Note on the source of truth
`trace_extractor.py` is the one skill file whose **live copy leads**: the fix
was written against the running skill then ported live → repo. `release.sh`
section 2 asserts the two copies are identical.
## v4.0.4 — No decision enters the ontology as an orphan (2026-10-10)
### Real fix
**M6: every extracted decision now carries an edge.** The ontology held
**889 orphan entities out of 928, with only 34 relations** — a list of
disconnected blocks, not a graph. Root cause: `trace_extractor` created
Decision / TimelineEvent nodes with no relation at all.
Two changes, both at the source:
- The extraction prompt now REQUIRES a `related_to` on every item — the id of an
existing entity it attaches to, grounded in the note text, never invented.
When nothing fits, the item anchors to the catch-all root `daily_notes`.
- `write_ontology_entities()` appends a `relate` fact for every decision it
writes, resolving the root via `_norm_related_to()` (grounded anchors only)
then `_root_id_for()`. An invented anchor is refused, not wired.
Nothing is deleted: the graph stays append-only, and every auto-link is
reversible.
### New guard
`hybrid-search/test_orphan_link.py`, wired into `scripts/release.sh`. It asserts
both directions: a grounded anchor links, an ungrounded decision still links to
`daily_notes`, and an INVENTED anchor is refused. A gate that accepted invented
roots would silently wire the graph wrong.
## v4.0.3 — MEMORY.md can no longer grow unbounded (2026-10-10)
#CONTRIBUTING.md
# Contributing — OpenClaw Memory Toolkit This file is for **maintainers of this repository**. It documents how a change travels from the repo to the published artifact, and the invariants the release gate enforces. If you only want to *use* the skill, read the [README](README.md) instead. ## Release Pipeline (repo → skill → GitHub → ClawHub) > **MUST — every memory-skill change goes through `scripts/release.sh`.** > No exception. A change to `skills/memory-health/**` is not "done" until > `scripts/release.sh check` passes green. Do not tag, do not push a release, > do not hand anything to ClawHub before that. If the gate fails, fix the drift > or the invariant — never bypass the gate. One artifact, one direction, four stages. **Never edit the installed skill directly; never let the repo and the skill drift.** ``` local repo installed skill GitHub ClawHub .work/mh-v213 ──▶ skills/memory-health/ ──▶ push main + tag ──▶ manual (Stéphane) ``` 1. **Edit in the repo** (`.work/mh-v213`). Commit there. 2. **Sync repo → skill.** The installed skill is what the agent and the nightly cron actually load, so it must be updated from the repo, never the reverse. `SKILL.md` is the one exception: the skill copy carries a YAML frontmatter (`name:` / `description:`) that the repo omits, so its **body** is synced while the frontmatter is preserved. 3. **Run the gate:** `scripts/release.sh check`. It refuses to pass until repo↔skill files are byte-identical (SKILL body), `trace_extractor` is a single source, version markers and OLLAMA_* loopback invariants hold, every script parses, the loopback test passes and the tree is clean. 4. **Tag + push:** `scripts/release.sh release vX.Y.Z "message"`, then create the GitHub release. > **MUST — a git tag is NOT a release. Create the GitHub Release too.** The > operator had to point this out on 2026-10-05: v3.2.1 had its tag pushed but > appeared nowhere in the repo's Releases tab. The tag is a bare pointer; the > Release is the readable, dated entry a human actually sees. After pushing the > tag, always run: > ```bash > gh release create vX.Y.Z \ > --title "vX.Y.Z — <title>" \ > --notes "<same content as the CHANGELOG entry>" > ``` > Verify with `gh release list` — the new version must appear as `Latest`. A > release is not "done" until it is in that list. 5. **ClawHub** is published by the operator, from the repo. > **MUST — every release updates the CHANGELOG *and* the README.** The operator > asked for this explicitly (2026-10-05): a release is not just a tag. Before > tagging, always: > - **CHANGELOG.md** — add a new entry at the top: `## vX.Y.Z — <title> (<date>)` > with `### Added` / `### Changed` / `### Fixed` sections as applicable. Cite > the cause, not just the change (what broke, why, how it was found). Never > rewrite history: correct an older entry only to fix a factual error. > - **README.md** — update anything the release makes
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/mistermijarvis/skills/memory-toolkit",
"sourceUrl": "https://clawhub.ai/mistermijarvis/skills/memory-toolkit",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-11T16:14:28.850Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-mistermijarvis-memory-toolkit/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-mistermijarvis-memory-toolkit/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-11T16:14:28.850Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1K downloads",
"href": "https://clawhub.ai/mistermijarvis/memory-toolkit",
"sourceUrl": "https://clawhub.ai/mistermijarvis/memory-toolkit",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-11T16:14:28.850Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "4.0.5",
"href": "https://clawhub.ai/mistermijarvis/memory-toolkit",
"sourceUrl": "https://clawhub.ai/mistermijarvis/memory-toolkit",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-11T10:59:04.723Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-mistermijarvis-memory-toolkit/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-mistermijarvis-memory-toolkit/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 4.0.5",
"description": "- Added three new ontology maintenance scripts: `ontology_backfill_llm.py`, `ontology_backfill_orphans.py`, and `ontology_fix_day_nodes.py`. - Removed the obsolete `skill-card.md` file. - No user-facing pipeline or interface changes; core skill logic remains unchanged. - Documentation and version updated to reflect v4.0.5.",
"href": "https://clawhub.ai/mistermijarvis/memory-toolkit",
"sourceUrl": "https://clawhub.ai/mistermijarvis/memory-toolkit",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-11T10:59:04.723Z",
"isPublic": true
}
]
}Record generated Oct 11, 2026.
