docs/plugins/memory-wiki.md
memory-wiki is a bundled plugin that turns durable memory into a compiled
knowledge vault.
It does not replace the active memory plugin. The active memory plugin still
owns recall, promotion, indexing, and dreaming. memory-wiki sits beside it
and compiles durable knowledge into a navigable wiki with deterministic pages,
structured claims, provenance, dashboards, and machine-readable digests.
Use it when you want memory to behave more like a maintained knowledge layer and less like a pile of Markdown files.
Think of the split like this:
| Layer | Owns |
|---|---|
Active memory plugin (memory-core, QMD, Honcho, etc.) | Recall, semantic search, promotion, dreaming, memory runtime |
memory-wiki | Compiled wiki pages, provenance-rich syntheses, dashboards, wiki-specific search/get/apply |
If the active memory plugin exposes shared recall artifacts, OpenClaw can search
both layers in one pass with memory_search corpus=all.
When you need wiki-specific ranking, provenance, or direct page access, use the wiki-native tools instead.
A strong default for local-first setups is:
memory-wiki in bridge mode for durable synthesized knowledge pagesThat split works well because each layer stays focused:
memory-wiki compiles stable entities, claims, dashboards, and source pagesPractical rule:
memory_search when you want one broad recall pass across memorywiki_search and wiki_get when you want provenance-aware wiki resultsmemory_search corpus=all when you want shared search to span both layersIf bridge mode reports zero exported artifacts, the active memory plugin is not
currently exposing public bridge inputs yet. Run openclaw wiki doctor first,
then confirm the active memory plugin supports public artifacts.
When bridge mode is active and bridge.readMemoryArtifacts is enabled,
openclaw wiki status, openclaw wiki doctor, and openclaw wiki bridge import read through the running Gateway. That keeps CLI bridge checks aligned
with the runtime memory plugin context. If bridge is disabled or artifact reads
are turned off, those commands keep their local/offline behavior.
memory-wiki supports three vault modes:
isolatedOwn vault, own sources, no dependency on memory-core.
Use this when you want the wiki to be its own curated knowledge store.
bridgeReads public memory artifacts and memory events from the active memory plugin through public plugin SDK seams.
Use this when you want the wiki to compile and organize the memory plugin's exported artifacts without reaching into private plugin internals.
Bridge mode can index:
unsafe-localExplicit same-machine escape hatch for local private paths.
This mode is intentionally experimental and non-portable. Use it only when you understand the trust boundary and specifically need local filesystem access that bridge mode cannot provide.
The plugin initializes a vault like this:
<vault>/
AGENTS.md
WIKI.md
index.md
inbox.md
entities/
concepts/
syntheses/
sources/
reports/
_attachments/
_views/
.openclaw-wiki/
Managed content stays inside generated blocks. Human note blocks are preserved.
The main page groups are:
sources/ for imported raw material and bridge-backed pagesentities/ for durable things, people, systems, projects, and objectsconcepts/ for ideas, abstractions, patterns, and policiessyntheses/ for compiled summaries and maintained rollupsreports/ for generated dashboardsPages can carry structured claims frontmatter, not just freeform text.
Each claim can include:
idtextstatusconfidenceevidence[]updatedAtEvidence entries can include:
kindsourceIdpathlinesweightconfidenceprivacyTiernoteupdatedAtThis is what makes the wiki act more like a belief layer than a passive note dump. Claims can be tracked, scored, contested, and resolved back to sources.
Entity pages can also carry routing metadata for agent use. This is generic frontmatter, so it works for people, teams, systems, projects, or any other entity type.
Common fields include:
entityType: for example person, team, system, or projectcanonicalId: stable identity key used across aliases and importsaliases: names, handles, or labels that should resolve to the same pageprivacyTier: public, local-private, sensitive, or confirm-before-usebestUsedFor / notEnoughFor: compact routing hintslastRefreshedAt: source-refresh timestamp separate from page edit timepersonCard: optional person-specific routing card with handles, socials,
emails, timezone, lane, ask-for, avoid-asking-for, confidence, and privacyrelationships: typed edges to related pages with target, kind, weight,
confidence, evidence kind, privacy tier, and noteFor a people wiki, the agent should usually start with
reports/person-agent-directory.md, then open the person page with wiki_get
before using contact details or inferred facts.
Example:
pageType: entity
entityType: person
id: entity.brad-groux
canonicalId: maintainer.brad-groux
aliases:
- Brad
- bgroux
privacyTier: local-private
bestUsedFor:
- Microsoft Teams and Azure routing
notEnoughFor:
- legal approval
lastRefreshedAt: "2026-04-29T00:00:00.000Z"
personCard:
handles:
- "@bgroux"
socials:
- "https://x.example/bgroux"
emails:
- [email protected]
timezone: America/Chicago
lane: Microsoft ecosystem
askFor:
- Teams rollout questions
avoidAskingFor:
- unrelated billing decisions
confidence: 0.8
privacyTier: confirm-before-use
relationships:
- targetId: entity.alice
targetTitle: Alice
kind: collaborates-with
confidence: 0.7
evidenceKind: discrawl-stat
claims:
- id: claim.brad.teams
text: Brad is useful for Microsoft Teams routing.
status: supported
confidence: 0.9
evidence:
- kind: maintainer-whois
sourceId: source.maintainers
privacyTier: local-private
The compile step reads wiki pages, normalizes summaries, and emits stable machine-facing artifacts under:
.openclaw-wiki/cache/agent-digest.json.openclaw-wiki/cache/claims.jsonlThese digests exist so agents and runtime code do not have to scrape Markdown pages.
Compiled output also powers:
When render.createDashboards is enabled, compile maintains dashboards under
reports/.
Built-in reports include:
reports/open-questions.mdreports/contradictions.mdreports/low-confidence.mdreports/claim-health.mdreports/stale-pages.mdreports/person-agent-directory.mdreports/relationship-graph.mdreports/provenance-coverage.mdreports/privacy-review.mdThese reports track things like:
memory-wiki supports two search backends:
shared: use the shared memory search flow when availablelocal: search the wiki locallyIt also supports three corpora:
wikimemoryallImportant behavior:
wiki_search and wiki_get use compiled digests as a first pass when possiblePractical rule:
memory_search corpus=all for one broad recall passwiki_search + wiki_get when you care about wiki-specific ranking,
provenance, or page-level belief structureSearch modes:
auto: balanced defaultfind-person: boost person-like entities, aliases, handles, socials, and
canonical IDsroute-question: boost agent cards, ask-for hints, best-used-for hints, and
relationship contextsource-evidence: boost source pages and structured evidence metadataraw-claim: boost matching structured claims and return claim/evidence
metadata in resultsWhen a result matches a structured claim, wiki_search can return
matchedClaimId, matchedClaimStatus, matchedClaimConfidence,
evidenceKinds, and evidenceSourceIds in its details payload. Text output
also includes compact Claim: and Evidence: lines when available.
The plugin registers these tools:
wiki_statuswiki_searchwiki_getwiki_applywiki_lintWhat they do:
wiki_status: current vault mode, health, Obsidian CLI availabilitywiki_search: search wiki pages and, when configured, shared memory corpora;
accepts mode for person lookup, question routing, source evidence, or raw
claim drilldownwiki_get: read a wiki page by id/path or fall back to shared memory corpuswiki_apply: narrow synthesis/metadata mutations without freeform page surgerywiki_lint: structural checks, provenance gaps, contradictions, open questionsThe plugin also registers a non-exclusive memory corpus supplement, so shared
memory_search and memory_get can reach the wiki when the active memory
plugin supports corpus selection.
When context.includeCompiledDigestPrompt is enabled, memory prompt sections
append a compact compiled snapshot from agent-digest.json.
That snapshot is intentionally small and high-signal:
This is opt-in because it changes prompt shape and is mainly useful for context engines or legacy prompt assembly that explicitly consume memory supplements.
Put config under plugins.entries.memory-wiki.config:
{
plugins: {
entries: {
"memory-wiki": {
enabled: true,
config: {
vaultMode: "isolated",
vault: {
path: "~/.openclaw/wiki/main",
renderMode: "obsidian",
},
obsidian: {
enabled: true,
useOfficialCli: true,
vaultName: "OpenClaw Wiki",
openAfterWrites: false,
},
bridge: {
enabled: false,
readMemoryArtifacts: true,
indexDreamReports: true,
indexDailyNotes: true,
indexMemoryRoot: true,
followMemoryEvents: true,
},
ingest: {
autoCompile: true,
maxConcurrentJobs: 1,
allowUrlIngest: true,
},
search: {
backend: "shared",
corpus: "wiki",
},
context: {
includeCompiledDigestPrompt: false,
},
render: {
preserveHumanBlocks: true,
createBacklinks: true,
createDashboards: true,
},
},
},
},
},
}
Key toggles:
vaultMode: isolated, bridge, unsafe-localvault.renderMode: native or obsidianbridge.readMemoryArtifacts: import active memory plugin public artifactsbridge.followMemoryEvents: include event logs in bridge modesearch.backend: shared or localsearch.corpus: wiki, memory, or allcontext.includeCompiledDigestPrompt: append compact digest snapshot to memory prompt sectionsrender.createBacklinks: generate deterministic related blocksrender.createDashboards: generate dashboard pagesUse this when you want QMD for recall and memory-wiki for a maintained
knowledge layer:
{
memory: {
backend: "qmd",
},
plugins: {
entries: {
"memory-wiki": {
enabled: true,
config: {
vaultMode: "bridge",
bridge: {
enabled: true,
readMemoryArtifacts: true,
indexDreamReports: true,
indexDailyNotes: true,
indexMemoryRoot: true,
followMemoryEvents: true,
},
search: {
backend: "shared",
corpus: "all",
},
context: {
includeCompiledDigestPrompt: false,
},
},
},
},
},
}
This keeps:
memory-wiki focused on compiled pages and dashboardsmemory-wiki also exposes a top-level CLI surface:
openclaw wiki status
openclaw wiki doctor
openclaw wiki init
openclaw wiki ingest ./notes/alpha.md
openclaw wiki compile
openclaw wiki lint
openclaw wiki search "alpha"
openclaw wiki get entity.alpha
openclaw wiki apply synthesis "Alpha Summary" --body "..." --source-id source.alpha
openclaw wiki bridge import
openclaw wiki obsidian status
See CLI: wiki for the full command reference.
When vault.renderMode is obsidian, the plugin writes Obsidian-friendly
Markdown and can optionally use the official obsidian CLI.
Supported workflows include:
This is optional. The wiki still works in native mode without Obsidian.
memory-wiki.isolated mode unless you explicitly want bridge mode.wiki_search / wiki_get when provenance matters.wiki_apply for narrow syntheses or metadata updates.wiki_lint after meaningful changes.