Cloud Sync (cmem.ai Pro)

SkillDatabases & data

Cloud sync is a skill that sets up or checks cloud backup of your claude-mem memory database to your cmem.ai account. It reads the local worker's sync status and, when needed, guides you through connecting to cmem.ai Pro with the installer, which handles sign-in and stores the sync token outside the chat. It then verifies the connection and reports device id, pending counts, and any sync errors.

Then ask your AI: use the Cloud Sync (cmem.ai Pro) skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Have a local claude-mem worker installed and running.

What your AI can do with it

  • Check the local claude-mem worker's sync status route
  • Report device id, pending counts, last flush time, and sync errors
  • Guide you through connecting to cmem.ai Pro with the installer
  • Verify the SyncHub connection by polling the status route
  • Keep the sync token out of the chat and out of commands

Getting started

  1. Have a local claude-mem worker installed and running.
  2. Ask the skill to check sync status so it can query the worker's status route.
  3. If sync is not configured, run npx claude-mem install in your own terminal and choose CMEM Pro when the installer asks.
  4. Approve the device code in the browser so the installer can write the sync token and restart the worker.
  5. Ask the skill to check status again to confirm the connection and see device id and pending counts.

What this skill tells your AI

The instructions your AI receives, as published by thedotmack/claude-mem in plugin/skills/cloud-sync/SKILL.md and read by Ahel’s review.

The installed worker syncs through SyncHub. There is one client, one durable operation log, and no separate sync daemon. This skill checks status and points the user to the installer's cmem.ai sign-in, which writes the connection.

Security rule: never ask the user to paste the sync token into this chat, and never put it in a command you write, print it, put it in argv, or log it. A secret pasted into a chat lands in the transcript, which claude-mem itself can capture and sync. The installer writes the token to ~/.claude-mem/settings.json (mode 0600) without it ever passing through this conversation.

1. Check status

Resolve the worker port and query the always-registered status route:

PORT="${CLAUDE_MEM_WORKER_PORT:-$(node -e "const fs=require('fs'),p=require('path'),os=require('os');const uid=(typeof process.getuid==='function'?process.getuid():77);const fallback=String(37700+(uid%100));try{const s=JSON.parse(fs.readFileSync(p.join(os.homedir(),'.claude-mem','settings.json'),'utf-8'));process.stdout.write(String(s.CLAUDE_MEM_WORKER_PORT||fallback));}catch{process.stdout.write(fallback);}" 2>/dev/null)}"
curl -s "http://127.0.0.1:${PORT}/api/sync/status"
  • configured: true and hub.reachable: true → the worker completed an authenticated GET /v1/sync/status against SyncHub. Report deviceId, pending counts, lastFlushAt, lastError, and the Hub head/checkpoint; stop unless the user asked to replace the connection.
  • configured: true and hub.reachable: false → report hub.error and say the SyncHub connection is not verified. A zero pending count or lastError: null is not success because an empty queue performs no push.
  • configured: false → continue.
  • Connection refused, 404, or 503 immediately after restart → retry every three seconds for about 30 seconds before diagnosing the worker.

2. Connect through the installer

Ask the user to run this in their own terminal:

npx claude-mem install

and to choose CMEM Pro when the installer asks. The installer signs them in through the browser (they approve a device code), then writes the sync token, user id and SyncHub URL into ~/.claude-mem/settings.json itself and restarts the worker. Nothing secret is typed into this chat.

If the user cannot run the installer interactively (CI, a remote box), point them to the headless setup guide, https://docs.claude-mem.ai/cmem-pro-headless, and let them apply its manual recipe in their own terminal or editor. Do not collect the values yourself.

The worker mints and persists a device id on first start and defaults the device name to the hostname.

3. Verify

Once the installer finishes, poll the status route every five seconds for up to 30 seconds. If the worker was not restarted, restart it first:

curl -s -X POST "http://127.0.0.1:${PORT}/api/admin/restart"

Success means configured: true, hub.reachable: true, and lastError: null. The local route always makes an authenticated, read-only SyncHub status probe, even when every pending count is zero; it never uses a legacy cmem.ai Pro status route and never appends or advances sync state. Pending counts describe only writes made after the SyncHub launch baseline; setup does not migrate a pre-launch local corpus.

If hub.reachable is false, report hub.error. If lastError is non-null, report it too, and suggest running npx claude-mem install again to refresh the connection. Never include the token.

4. Report

Report device id, pending counts, last successful flush, Hub reachability and checkpoint, and any Hub/flush error. End with this privacy note:

Cloud sync uploads your observation narratives and full prompt text to your cmem.ai account.

Signals

GitHub stars
99k
Forks
9k
Last commit
Oct 2026

Questions

How do I set up cloud sync?
Run npx claude-mem install in your own terminal and choose CMEM Pro when the installer asks. The installer signs you in through the browser, writes the sync token to ~/.claude-mem/settings.json, and restarts the worker. Then check status to confirm.
How do I sync my memories?
Connect to cmem.ai Pro through the installer, then the worker syncs through SyncHub. Check the status route to see pending counts and whether the Hub is reachable. A zero pending count alone is not proof of success.
Advanced
Item type
skill
Key
cloud-sync-thedotmack
Source
github.com/thedotmack/claude-mem