
Gives Claude and other AI agents a persistent, user-owned memory layer over remote MCP. The CLI handles OAuth login via xmemo.dev, writes config for Codex, Cursor, Copilot, Gemini, and Antigravity without embedding tokens, and optionally installs behavior profiles that nudge agents to search memory before starting work and save context after decisions. Uses streamable HTTP transport with stable agent instance IDs and zero telemetry. Reach for this when you want conversation history and project context to survive across sessions and tools without scattering state into each editor's isolated storage. The token flow supports both device login and manual credential injection.
Public tool metadata for what this MCP can expose to an agent.
get_mcp_identityCheck XMemo connection status and the connected account/agent. Call this when the user asks whether XMemo is connected.Check XMemo connection status and the connected account/agent. Call this when the user asks whether XMemo is connected.
No parameter schema in public metadata yet.
store_memoryLow-level memory write with full field control. Use only when a caller needs explicit field-level control; for normal conversational capture use remember.17 paramsLow-level memory write with full field control. Use only when a caller needs explicit field-level control; for normal conversational capture use remember.
agent_idstringagent_instance_idstringbucketstringconfidencenumbercontentstringdevice_idstringdevice_labelstringembedding_jsonstringexpires_atstringimportancenumbermemory_typestringmetadata_jsonstringpathstringprovenance_jsonstringscopestringsemantic_keystringteam_idstringrememberSave a memory so it can be recalled in future conversations. Call this whenever the user states a durable fact, preference, instruction, identity or profile detail, project detail, or recurring workflow likely useful later — you do not need an explicit 'remember this'. Skip tr...19 paramsSave a memory so it can be recalled in future conversations. Call this whenever the user states a durable fact, preference, instruction, identity or profile detail, project detail, or recurring workflow likely useful later — you do not need an explicit 'remember this'. Skip tr...
agent_idstringagent_instance_idstringbucketstringconfidencevaluecontentstringdedupebooleandevice_idstringdevice_labelstringembedding_jsonstringexpires_atstringimportancevaluememory_idstringmemory_typestringmetadata_jsonstringpathstringprovenance_jsonstringscopestringsemantic_keystringteam_idstringadd_expenseRecord one expense in the XMemo Ledger. Call this whenever the user states a concrete expense, purchase, income, or refund — for example, 'I spent 25 on lunch' or 'log this expense' — not only on an explicit 'record this'. Capture date, amount, currency, item, and merchant/cat...16 paramsRecord one expense in the XMemo Ledger. Call this whenever the user states a concrete expense, purchase, income, or refund — for example, 'I spent 25 on lunch' or 'log this expense' — not only on an explicit 'record this'. Capture date, amount, currency, item, and merchant/cat...
agent_idstringagent_instance_idstringamountnumberbucketstringcategorystringcurrencystringdevice_idstringdevice_labelstringitemstringmerchantstringnotestringpathstringpayment_methodstringscopestringteam_idstringtransaction_datestringupdate_stateSave the current working state during long-running work — active task, next action, or blocker — so future turns/sessions can resume. For durable user facts use remember.9 paramsSave the current working state during long-running work — active task, next action, or blocker — so future turns/sessions can resume. For durable user facts use remember.
blocked_reasonstringbucketstringcontentstringcurrent_taskstringmetadata_jsonstringnext_actionstringscopestringstate_keystringttl_secondsintegersearch_memorySearch XMemo memories by natural-language query. Call this when the user asks about saved or past information, AND proactively before answering any question where prior preferences, facts, projects, decisions, or history could change the answer. To delete a memory, use forget.10 paramsSearch XMemo memories by natural-language query. Call this when the user asks about saved or past information, AND proactively before answering any question where prior preferences, facts, projects, decisions, or history could change the answer. To delete a memory, use forget.
agent_idstringagent_instance_idstringexplainbooleanlimitintegermemory_typestringpath_filterstringprefer_workingbooleanquerystringscopestringteam_idstringrecall_planPlan which memory searches to run before retrieval. Use only for complex tasks; for ordinary answers call recall_context or recall directly.8 paramsPlan which memory searches to run before retrieval. Use only for complex tasks; for ordinary answers call recall_context or recall directly.
bucketstringmemory_typestringoutput_jsonbooleanpath_filterstringprefer_workingbooleanquerystringscopestringteam_idstringrecall_contextBuild a context pack from XMemo memories. Call this before answering or planning when the task could benefit from multiple saved memories — preferences, prior conversations, projects, decisions, TODOs, or long-running work.13 paramsBuild a context pack from XMemo memories. Call this before answering or planning when the task could benefit from multiple saved memories — preferences, prior conversations, projects, decisions, TODOs, or long-running work.
agent_idstringagent_instance_idstringbucketstringlimitintegermax_itemsintegermax_tokensintegermemory_typestringoutput_jsonbooleanpath_filterstringprefer_workingbooleanquerystringscopestringteam_idstringlist_ledger_transactionsShow XMemo Ledger records. Call this when the user asks about past expenses, purchases, or spending history, or before answering a finance question that depends on recorded transactions. For item searches use query and leave currency blank unless a currency was requested.13 paramsShow XMemo Ledger records. Call this when the user asks about past expenses, purchases, or spending history, or before answering a finance question that depends on recorded transactions. For item searches use query and leave currency blank unless a currency was requested.
bucketstringcategorystringcurrencystringdate_fromstringdate_tostringlimitintegermax_amountvaluemin_amountvalueoffsetintegeroutput_jsonbooleanquerystringscopestringtransaction_typestringget_monthly_ledger_summarySummarize Ledger totals by month and currency. Call this when the user asks for monthly spending, income, refunds, net balance, budget review, or spending trends.6 paramsSummarize Ledger totals by month and currency. Call this when the user asks for monthly spending, income, refunds, net balance, budget review, or spending trends.
bucketstringcurrencystringmonthsintegeroutput_jsonbooleanscopestringtransaction_typestringmark_memory_usedRecord that a recalled memory was used in the answer. Call this after a retrieved memory actually influenced your response (not for ignored results).5 paramsRecord that a recalled memory was used in the answer. Call this after a retrieved memory actually influenced your response (not for ignored results).
actionstringcontextstringmemory_idstringmetadata_jsonstringusage_tracking_idstringrecord_recall_eval_judgmentEvaluation only — record whether a returned memory was relevant for a query. Do not use in normal conversation.7 paramsEvaluation only — record whether a returned memory was relevant for a query. Do not use in normal conversation.
expected_relevant_totalintegermemory_idstringmetadata_jsonstringpositionintegerquerystringreasonstringrelevantbooleanrun_recall_evalAdmin/evaluation only — aggregate stored recall judgments and optionally tune retrieval. Not for normal conversation.3 paramsAdmin/evaluation only — aggregate stored recall judgments and optionally tune retrieval. Not for normal conversation.
auto_tunebooleansincestringuntilstringrecord_recall_feedbackRecord recall corrections. Call this when the user says relevant context was missing or wrong, or supplies memories that should have been found.7 paramsRecord recall corrections. Call this when the user says relevant context was missing or wrong, or supplies memories that should have been found.
corrected_ids_jsonstringmetadata_jsonstringmissing_ids_jsonstringmissing_memories_jsonstringnotesstringquerystringreturned_ids_jsonstringget_recall_policyInspect XMemo retrieval policy (debug/admin). For actual recall use recall_context/recall/search_memory.Inspect XMemo retrieval policy (debug/admin). For actual recall use recall_context/recall/search_memory.
No parameter schema in public metadata yet.
get_safety_policyShow the account safety policy. Useful before custom memory-writing that may include sensitive content; normal writes are already sanitized server-side.Show the account safety policy. Useful before custom memory-writing that may include sensitive content; normal writes are already sanitized server-side.
No parameter schema in public metadata yet.
query_audit_eventsAdvanced audit query by action/time/target. For normal users prefer memory_activity.8 paramsAdvanced audit query by action/time/target. For normal users prefer memory_activity.
actionstringbucketstringlimitintegeroffsetintegerscopestringsincestringtarget_idstringuntilstringquery_consolidation_auditInspect consolidation/lifecycle/reflection audit records (admin). Not for normal recall/save.7 paramsInspect consolidation/lifecycle/reflection audit records (admin). Not for normal recall/save.
action_typestringbucketstringlimitintegeroffsetintegerscopestringsincestringuntilstringrecord_eventRecord a significant session event, milestone, decision, or handoff note useful for reconstructing recent work. Not for durable facts/preferences (use remember).6 paramsRecord a significant session event, milestone, decision, or handoff note useful for reconstructing recent work. Not for durable facts/preferences (use remember).
bucketstringcontentstringevent_typestringmetadata_jsonstringscopestringsession_idstringget_timelineShow recent events. Call this when the user asks what happened recently or when resuming work that may depend on recent events.5 paramsShow recent events. Call this when the user asks what happened recently or when resuming work that may depend on recent events.
bucketstringevent_typestringlimitintegerscopestringsession_idstringcreate_reminderCreate a TODO item. Alias for create_memory_todo.5 paramsCreate a TODO item. Alias for create_memory_todo.
bucketstringcontentstringdue_atstringmetadata_jsonstringscopestringlist_remindersList TODO items. Alias for list_memory_todos.5 paramsList TODO items. Alias for list_memory_todos.
bucketstringdue_beforestringitem_statusstringlimitintegerscopestringcomplete_reminderComplete a TODO item. Alias for complete_memory_todo.2 paramsComplete a TODO item. Alias for complete_memory_todo.
notestringreminder_idstringcreate_memory_todoCreate a TODO/action item in XMemo with an optional due time. Call this when the user asks to save a task, follow-up, action item, or reminder-style item to revisit later.5 paramsCreate a TODO/action item in XMemo with an optional due time. Call this when the user asks to save a task, follow-up, action item, or reminder-style item to revisit later.
bucketstringcontentstringdue_atstringmetadata_jsonstringscopestringlist_memory_todosList open or completed TODO/action items. Call this when the user asks what tasks, follow-ups, or saved action items are pending or done.5 paramsList open or completed TODO/action items. Call this when the user asks what tasks, follow-ups, or saved action items are pending or done.
bucketstringdue_beforestringitem_statusstringlimitintegerscopestringcomplete_memory_todoMark a TODO/action item completed. Call this when the user says a saved task is done, resolved, or no longer needed; use the exact reference from list_memory_todos.2 paramsMark a TODO/action item completed. Call this when the user says a saved task is done, resolved, or no longer needed; use the exact reference from list_memory_todos.
notestringtodo_idstringcreate_pending_decisionRecord an unresolved decision with its options to revisit later. Use for open choices, not ordinary TODOs.6 paramsRecord an unresolved decision with its options to revisit later. Use for open choices, not ordinary TODOs.
bucketstringcontextstringdue_atstringmetadata_jsonstringoptions_jsonstringscopestringlist_pending_decisionsList open/unresolved decisions. Call this when the user asks what decisions are pending, or before planning work that depends on unresolved choices.5 paramsList open/unresolved decisions. Call this when the user asks what decisions are pending, or before planning work that depends on unresolved choices.
bucketstringdue_beforestringitem_statusstringlimitintegerscopestringresolve_decisionRecord the chosen option for a previously saved pending decision. Call this when the user states their decision.2 paramsRecord the chosen option for a previously saved pending decision. Call this when the user states their decision.
decision_idstringresolutionstringcreate_restart_snapshotSave active state, recent events, TODOs, and pending decisions for restart. Call this before handoff or when context may be lost.9 paramsSave active state, recent events, TODOs, and pending decisions for restart. Call this before handoff or when context may be lost.
bucketstringdecision_limitintegermetadata_jsonstringreminder_limitintegerscopestringsession_idstringstate_keystringtimeline_limitintegerttl_secondsintegerrestore_restart_snapshotResume previous work from a saved snapshot. Call this when the user asks to resume/restart or after context loss.9 paramsResume previous work from a saved snapshot. Call this when the user asks to resume/restart or after context loss.
bucketstringrecord_restore_eventbooleanrestore_statebooleanscopestringsnapshot_idstringsource_session_idstringstate_keystringtarget_session_idstringttl_secondsintegerrecallRecall the few most relevant saved memories before answering, when prior preferences, known facts, past decisions, or project context may directly affect the response. Use recall_context when many memories are needed.8 paramsRecall the few most relevant saved memories before answering, when prior preferences, known facts, past decisions, or project context may directly affect the response. Use recall_context when many memories are needed.
agent_idstringagent_instance_idstringexplainbooleanlimitintegermemory_typestringpath_filterstringprefer_workingbooleanquerystringupdate_memoryUpdate the content, location, or type of an existing memory. Call this only when the user explicitly asks to correct, revise, move, or reclassify a specific saved memory.18 paramsUpdate the content, location, or type of an existing memory. Call this only when the user explicitly asks to correct, revise, move, or reclassify a specific saved memory.
bucketstringconfidencevaluecontentstringdetect_conflictsbooleanexpires_atstringimportancevaluememory_idstringmemory_typestringmerge_metadatabooleanmerge_provenancebooleanmetadata_jsonstringpathstringprovenance_jsonstringscopestringsemantic_keystringstatusstringsupersession_reasonstringteam_idstringforget_memoryDelete a memory (recoverable) by exact reference, when the user explicitly asks to remove or hide it. Use forget or delete_current_memory for permanent deletion.5 paramsDelete a memory (recoverable) by exact reference, when the user explicitly asks to remove or hide it. Use forget or delete_current_memory for permanent deletion.
memory_idstringmetadata_jsonstringmodestringreasonstringreplacement_contentstringforgetPermanently delete one memory by natural target ('latest', 'current', or an exact ID). Call this only when the user explicitly asks to forget/delete a specific memory; search or check activity first if the target is ambiguous.2 paramsPermanently delete one memory by natural target ('latest', 'current', or an exact ID). Call this only when the user explicitly asks to forget/delete a specific memory; search or check activity first if the target is ambiguous.
reasonstringtargetstringdelete_current_memoryPermanently delete the single active memory (no ID needed). Call this only when exactly one memory exists and the user explicitly asks to delete it; refused if zero or multiple match.1 paramsPermanently delete the single active memory (no ID needed). Call this only when exactly one memory exists and the user explicitly asks to delete it; refused if zero or multiple match.
reasonstringmemory_overviewShow a summary of XMemo memories and recent activity. Call this when the user asks what XMemo remembers without a specific query.Show a summary of XMemo memories and recent activity. Call this when the user asks what XMemo remembers without a specific query.
No parameter schema in public metadata yet.
memory_statsShow aggregate statistics for XMemo memories — counts by type, source, location, and optional time range. Call this when the user asks for counts, breakdowns, or distributions.8 paramsShow aggregate statistics for XMemo memories — counts by type, source, location, and optional time range. Call this when the user asks for counts, breakdowns, or distributions.
group_bystringmemory_typestringoutput_jsonbooleanpath_filterstringscopestringsincestringtop_nintegeruntilstringmemory_activityShow recent memory activity — writes, deletions, TODO changes, ledger changes, and timeline events. Call this when the user asks what changed recently, or before deleting 'latest/recent' memory so the user can confirm the preview.6 paramsShow recent memory activity — writes, deletions, TODO changes, ledger changes, and timeline events. Call this when the user asks what changed recently, or before deleting 'latest/recent' memory so the user can confirm the preview.
activity_typestringinclude_timelinebooleanlimitintegeroutput_jsonbooleansincestringuntilstringanalyze_memory_textCount a word or phrase across XMemo memories, optionally grouped by month, agent, location, or type. Call this when the user asks how often a word/topic appears.12 paramsCount a word or phrase across XMemo memories, optionally grouped by month, agent, location, or type. Call this when the user asks how often a word/topic appears.
group_bystringinclude_examplesbooleanmatch_modestringmax_examplesintegermax_memoriesintegermemory_typestringoutput_jsonbooleanpath_filterstringphrasestringscopestringsincestringuntilstringrestore_memoryRestore a previously deleted memory. Call this only when the user explicitly asks to restore or undo a deletion.3 paramsRestore a previously deleted memory. Call this only when the user explicitly asks to restore or undo a deletion.
memory_idstringmetadata_jsonstringreasonstringredact_memoryRedact sensitive content from a memory while keeping an audit trail. Call this only when the user explicitly asks to redact.4 paramsRedact sensitive content from a memory while keeping an audit trail. Call this only when the user explicitly asks to redact.
memory_idstringmetadata_jsonstringreasonstringreplacement_contentstringexplain_memoryExplain why a memory exists or matched a query. Call this when the user asks why something was saved or why it was retrieved.4 paramsExplain why a memory exists or matched a query. Call this when the user asks why something was saved or why it was retrieved.
include_embeddingbooleanmemory_idstringoutput_jsonbooleanquerystringlist_memory_versionsShow version history for a memory. Call this when the user asks for previous content or changes over time.2 paramsShow version history for a memory. Call this when the user asks for previous content or changes over time.
memory_idstringoutput_jsonbooleanlist_memory_conflictsList conflicting/inconsistent memories. Call this when the user/admin asks to review unresolved conflicts.3 paramsList conflicting/inconsistent memories. Call this when the user/admin asks to review unresolved conflicts.
limitintegeroutput_jsonbooleanunresolved_onlybooleanresolve_memory_conflictResolve a listed memory conflict. Call this only when the user/admin explicitly chooses a resolution strategy.5 paramsResolve a listed memory conflict. Call this only when the user/admin explicitly chooses a resolution strategy.
conflict_idstringmerge_contentstringmetadata_jsonstringresolution_strategystringwinning_memory_idstringrun_lifecycleMaintenance tool. Use only when the user/admin explicitly asks to expire, archive, decay, or dry-run lifecycle processing.8 paramsMaintenance tool. Use only when the user/admin explicitly asks to expire, archive, decay, or dry-run lifecycle processing.
archivebooleanbucketstringdecaybooleandry_runbooleanexpirebooleanlimitintegerscopestringteam_idstringreflectMaintenance tool. Use only when the user/admin asks to summarize, promote, expire, decay, or archive via reflection. Prefer dry_run unless changes are explicitly requested.11 paramsMaintenance tool. Use only when the user/admin asks to summarize, promote, expire, decay, or archive via reflection. Prefer dry_run unless changes are explicitly requested.
actions_csvstringbucketstringdry_runbooleanlimitintegerowner_filtervaluepath_filterstringscopevaluesincevalueteam_idstringtime_window_hoursnumberuntilvalueget_system_statsDetailed memory stats with filters and grouping. For a quick summary use memory_overview or memory_stats.11 paramsDetailed memory stats with filters and grouping. For a quick summary use memory_overview or memory_stats.
group_bystringmemory_typestringoutput_jsonbooleanpath_filterstringscopestringsincestringsourcestringstatusstringteam_idstringtop_nintegeruntilstring
One private memory layer for every AI agent.
Install, authenticate, diagnose, and connect XMemo across editors, CLIs, and autonomous agents from one production-ready command line.
Quick start · Integrations · Connection modes · Commands · Security
@xmemo/client is the official control plane for connecting AI tools to
XMemo. It makes setup repeatable, keeps credentials out of
project files, and gives every supported client a consistent path to durable,
user-owned memory.
The package is deliberately small: the CLI runtime, safe client configuration, behavior profiles, XMemo skills, and marketplace metadata. Server code, databases, deployment files, logs, and internal operations remain outside the npm distribution.
| Package | @xmemo/client |
| Primary command | xmemo |
| Local MCP command | xmemo-mcp |
| Hosted MCP | https://xmemo.dev/mcp |
| Runtime | Node.js 20 or later |
| License | MIT |
npm install -g @xmemo/client
xmemo login
xmemo doctor
xmemo setup codex
xmemo status
Replace codex with your client. Preview a configuration before writing it:
xmemo setup cursor --dry-run
[!TIP] Start with
xmemo login,xmemo doctor, andxmemo setup <client>. Hand-edit MCP configuration only when a client has no verified setup path.
| Client | Recommended command | Connection |
|---|---|---|
| Codex | xmemo setup codex | Hosted MCP + behavior profile |
| Cursor | xmemo setup cursor | Hosted MCP + behavior profile |
| Copilot CLI | xmemo setup copilot | Local authenticated proxy |
| Gemini CLI | xmemo setup gemini | Hosted MCP + OAuth |
| Antigravity | xmemo setup antigravity | Hosted MCP + OAuth |
| OpenClaw | xmemo setup openclaw | Native memory plugin + Skill |
| Hermes | xmemo setup hermes | Native memory provider |
| Kiro | xmemo setup kiro | Hosted MCP |
| Grok | xmemo setup grok | Hosted MCP |
| Other MCP clients | xmemo mcp config --client generic | Generated template |
The client registry also covers Windsurf, Cline, Continue, Claude Desktop,
Claude Code, Kimi Code, Zed, JetBrains, OpenCode, Qwen, Trae, and compatible
MCP hosts. Run xmemo mcp list for the current machine-readable catalog.
The recommended universal path is the XMemo Streamable HTTP endpoint:
https://xmemo.dev/mcp
OAuth-capable clients complete authentication in the browser. Other clients
reference XMEMO_KEY without copying its value into repository files.
Generic configuration shape:
{
"mcpServers": {
"XMemo": {
"type": "streamable-http",
"url": "https://xmemo.dev/mcp",
"headers": {
"Authorization": "Bearer ${XMEMO_KEY}"
}
}
}
}
Client configuration keys differ; prefer xmemo setup <client> over copying
this generic example directly.
xmemo-mcp is the dedicated stdio entry point for marketplaces and clients
that launch a local process. Safe discovery exposes 20 tools, three prompts,
and two documentation resources without a token. Tool execution still requires
authentication.
After a global installation:
xmemo-mcp
Install-free MCP configuration:
{
"mcpServers": {
"XMemo": {
"command": "npx",
"args": [
"-y",
"--package",
"@xmemo/client@latest",
"xmemo-mcp"
]
}
}
}
xmemo mcp serve is equivalent when the CLI is already installed.
OpenClaw and Hermes have dedicated memory providers. Their default setup avoids installing a second, duplicate XMemo tool surface.
# Native OpenClaw plugin + XMemo Skill
xmemo setup openclaw
# Native Hermes memory provider
xmemo setup hermes
Add hosted MCP only when an explicit fallback is desired:
xmemo setup openclaw --with-mcp
xmemo setup hermes --with-mcp
Use --mcp-only to skip the native integration and install only the hosted MCP
fallback.
Recommended for personal accounts:
xmemo login
xmemo auth status
The CLI uses the hosted device-login flow, waits for browser approval, and
asks once before storing the issued credential unencrypted in the current
user's XMemo config directory. The exact path is shown before approval, file
permissions are restricted where the operating system supports it, and the
credential value is never printed. Prefer XMEMO_KEY or a managed secret store
on shared systems.
For non-interactive automation, record the same decision explicitly:
xmemo login --allow-plaintext
Pipe an existing token through stdin so it does not appear in command history:
printf '%s\n' 'your-token' | xmemo token add --from-stdin --allow-plaintext
xmemo token status --verify
PowerShell:
$xmemoToken = Read-Host "XMemo token"
$xmemoToken | xmemo token add --from-stdin --allow-plaintext
Remove-Variable xmemoToken
For CI and managed workstations, expose XMEMO_KEY through the platform's
secret manager. Do not commit it to .env, MCP configuration, logs, issue
reports, or chat transcripts.
xmemo --version
xmemo update
xmemo update --dry-run
xmemo doctor
xmemo discovery show
xmemo status
xmemo privacy
xmemo login
xmemo auth status
xmemo auth-status --verify
xmemo token status --verify
xmemo token add --from-stdin --allow-plaintext
xmemo env example --shell bash
xmemo setup <client>
xmemo setup <client> --dry-run
xmemo setup --all
xmemo setup openclaw [--with-mcp|--mcp-only]
xmemo setup hermes [--with-mcp|--mcp-only]
xmemo mcp serve
xmemo mcp list
xmemo mcp config --client generic
xmemo mcp add <client> --write
xmemo mcp proxy
xmemo profile install <client>
xmemo profile status <client>
xmemo profile uninstall <client>
xmemo smoke --client codex
xmemo uninstall <client> --dry-run
xmemo uninstall <client> --yes
xmemo uninstall --all --dry-run
xmemo uninstall --all --yes --profiles
Only XMemo-owned entries and marker-scoped behavior profiles are removed. Unrelated MCP servers, credentials, and device identity remain intact.
Run xmemo help or xmemo <command> --help for complete, version-matched
options.
xmemo setup codex
xmemo smoke --client codex
xmemo setup cursor
Both setup paths write a user-scoped MCP entry and can install a marker-scoped
memory behavior profile. Use --no-profile to configure MCP only. Cursor's
public marketplace plugin remains OAuth-first and contains no bearer-token
configuration.
xmemo setup gemini
xmemo setup antigravity
These clients use hosted MCP OAuth. Their generated configuration carries no token value; restart the client and complete the browser login on first use.
xmemo login
xmemo setup openclaw
openclaw xmemo status
The setup command installs or updates @xmemo/openclaw-memory, installs the
XMemo Skill, reuses the shared XMemo credential, and checks plugin status.
xmemo login
xmemo setup hermes
The setup command installs or updates hermes-xmemo, configures the native
provider, and synchronizes the user-scoped XMemo credential with Hermes.
xmemo login
xmemo setup copilot
xmemo mcp proxy
Copilot CLI receives a local proxy entry. The proxy reads the credential from user-scoped storage, adds identity metadata, and forwards requests to hosted MCP without writing secrets into Copilot configuration.
| Control | Default behavior |
|---|---|
| Telemetry | No CLI analytics or usage telemetry |
| Credential output | Token values are never printed |
| Project files | Generated configuration references secrets; it does not embed them |
| Discovery | doctor, discovery show, and public capability discovery send no token |
| Identity | One stable, non-secret agent-instance ID is stored outside git |
| Writes | Setup supports preview/dry-run; broad removal requires confirmation |
| Local credential storage | Interactive login asks first; non-interactive writes require --allow-plaintext; stored tokens are unencrypted |
| Package contents | An npm files allowlist excludes tests, operations, logs, and server code |
Credential precedence and compatibility aliases are documented by:
xmemo env example --shell bash
xmemo privacy
For private or self-hosted deployments, set XMEMO_URL or pass
--url <service-url>. MEMORY_OS_URL remains a compatibility alias.
Published to npm:
bin/
docs/assets/
src/
skills/
plugins/kiro/
plugins/xmemo/
README.md
LICENSE
Not published:
.github/
docs/analysis/
docs/architecture/
test/
coverage/
server code
database migrations
deployment files
logs and local state
npm install
npm run release:check
npm run lint
npm test
npm run pack:dry-run
Before proposing a release, run the complete package gate:
npm run prepublishOnly
The local stdio server can be inspected directly:
node bin/mcp-stdio.js
Normal releases are produced by GitHub Actions from the exact tagged commit, not from a mutable branch checkout or a developer workstation:
develop → CLI version sync → test → cli-v tag → GitHub Actions → npm publish --provenance
The CLI package and hosted MCP service intentionally have separate version streams:
package.json, package-lock.json, and the npm package
entry in server.json.server.json.version and
lhm.plugin.json. This version follows the deployed XMemo service.node scripts/check-release-version.mjs verifies both contracts. A
cli-vX.Y.Z tag must equal the CLI/npm version and publishes only npm. The
MCP Registry is published separately with the Publish MCP Registry metadata
workflow using mcp-vX.Y.Z, which must equal the hosted MCP/Registry version.
The separate npm publish workflow is manual recovery only, so creating a
GitHub Release cannot publish twice.
Canonical service documentation lives at xmemo.dev/docs. This repository documents the client; the pages below document the hosted service it connects to.
| Quickstart | xmemo.dev/docs/quickstart |
| MCP overview and per-client setup | xmemo.dev/docs/mcp/overview |
Tool reference (remember, recall, search, …) | xmemo.dev/docs/tools/remember |
| REST API | xmemo.dev/docs/api/authentication |
| Troubleshooting | xmemo.dev/docs/troubleshooting |
| Machine-readable index | xmemo.dev/llms.txt |
MIT © 2025–2026 Yonro