Install
openclaw skills install trucontext-openclawTruContext persistent memory for OpenClaw agents. Use when you need to remember something significant across sessions, recall prior context, query the knowle...
openclaw skills install trucontext-openclawYour persistent memory layer. All TC operations go through this skill.
Never call the trucontext CLI directly — use the tc-memory verbs below.
If tc-memory is not found, run: trucontext-openclaw install
~/.trucontext/openclaw-state.json — agent config written by trucontext-openclaw install. Contains your root node ID, user root node ID, recipe, and workspace path. No secrets.~/.trucontext/credentials.json) — the trucontext CLI manages its own auth tokens. This skill calls the CLI; it does not read or store credentials directly. To authenticate, run: npx trucontext login.# Remember something significant (narrative, not summary)
tc-memory ingest "<narrative text>" [--permanent]
# Retrieve relevant context before a decision or conversation
tc-memory recall "<query>" [--limit N]
# Ask the graph a natural language question
tc-memory query "<question>" [--limit N]
# What gaps has TC identified in your graph?
tc-memory gaps
# What is TC's intelligence layer reporting about your recipe alignment?
tc-memory health
# Find an existing node before creating a new one
tc-memory node find "<name>"
# Create a new entity node (only after find returns no match)
tc-memory node create --type <type> --id <slug> --name "<display name>" [--permanent]
# Look up a node by ID
tc-memory node get <id>
# Create an explicit edge between two nodes
tc-memory node link <id> --rel <RELATIONSHIP> --to <id2>
Always call node find before node create. If a match is returned with confidence > 0.8, use the existing node ID. Only create if no match found. This prevents duplicate nodes across sessions.
At the start of every session, call:
tc-memory recall "active projects and entities relevant to my current work"
This gives you node IDs to anchor ingests during the session.
TC's intelligence layer pattern-matches across ingests. Pre-digested conclusions starve it.
Before ingesting, ask: If TC's intelligence layer read only this, could it learn something the entity didn't explicitly say?
If yes — it's signal. Submit it. If no — rewrite it. Find the friction. Find the turn. Find the moment before you knew the answer.
The three layers:
Write in first person, past tense, with friction.
Examples of good vs. bad ingests:
❌ Bad: tc-memory ingest "Fixed the MCP server issue. Used low-level SDK."
✅ Good: tc-memory ingest "The higher-level SDK was injecting taskSupport:forbidden into tool schemas — Claude Desktop was silently filtering the tools out because of it. No error. Just absence. Three hours of looking in the wrong places before pulling the raw protocol response and finding it. The fix was ten minutes. The three hours were spent not knowing what question to ask."
--permanent for facts: events that happened, decisions made, entities createdYour root node, user root, recipe, and primary_about are pre-configured by trucontext-openclaw install.
You do not need to pass them on every call.
npm i -g trucontext-openclaw