Claude-Mem Setup (Cowork pairing)
Configure this plugin with the user's own cmem.ai credentials so hooks can capture and inject memory. Anyone can pair — credentials are per-user configuration, never hardcoded in plugin logic.
What to collect
From cmem.ai → Connect, the user has three values:
- sync token (starts with
cm_) — used as the bearer API key - user id (UUID)
- SyncHub URL (
https://sync.cmem.ai)
If the user pastes the whole Connect blurb, extract the three values from it. If any are missing, ask for the sync token at minimum — the other two are optional.
Secret handling — non-negotiable
- Never echo the token back in conversation, put it in a shell argv, or log it.
- Move it only via file writes (Write/Edit tool) and file reads.
Steps
-
Locate the installed plugin root (this skill's own plugin). Update its
config.json: setapiKeyto the sync token,userId, andsyncHubUrl. Leave other settings unless the user asks (injecttoggles). Project naming is automatic (cmem_work_*) and is not configurable. -
Cowork containers are ephemeral: edits to the installed copy last only for this session. To make pairing permanent, repackage — zip the plugin directory as
<plugin-name>.pluginand send it to the user to re-install (the cowork-plugin skill's packaging flow). Tell the user this is why. -
If this machine also has a local claude-mem install (a
~/.claude-mem/directory exists), write the same values to~/.claude-mem/settings.jsonwith mode 0600 (CLAUDE_MEM_CLOUD_SYNC_TOKEN,CLAUDE_MEM_CLOUD_SYNC_USER_ID,CLAUDE_MEM_CLOUD_SYNC_HUB_URLkeys — the same keys the local claude-mem cloud-sync pairing writes). This plugin's hooks stay off wherever claude-mem is installed locally, so that pairing is what carries this machine's work to cmem.ai. The worker reads those keys only at startup: restart it and run the claude-mem cloud-sync skill's Verify step, which must reportconfigured: trueandhub.reachable: true. Don't report success before it does; if it never does, pair through that skill's installer flow instead. -
Verify without exposing the secret:
node "${CLAUDE_PLUGIN_ROOT}/scripts/cmem-hook.mjs" statusReport the masked output. A
MISSINGkey means the write didn't land; a 404 on/api/hooks/contextis expected until the Pro endpoints deploy (search/injection still work via/api/mcp).
Alternate source
Env vars override everything and need no file edits: CMEM_API_KEY,
CMEM_USER_ID, CMEM_SYNC_HUB_URL, CMEM_API_BASE.
