cloud-sync — Claude Code skill: memory backup to cmem.ai Pro
Syncs your claude-mem database with cmem.ai Pro cloud storage. Checks sync status, manages the connection, and uploads observation narratives to the server.
npx skills add thedotmack/claude-mem --skill cloud-sync -a claude-codeWhat cloud-sync does
The skill queries the local claude-mem worker via port 127.0.0.1, checks /api/sync/status, and guides you through cloud setup. It uses Bash, Read, and AskUserQuestion to interact with your terminal.
To enable sync, run npx claude-mem install in your own terminal, select CMEM Pro, and authenticate through your browser using a device code. The skill never asks you to paste tokens into this chat. The token is written to ~/.claude-mem/settings.json with mode 0600 without passing through the conversation. Once connected, the skill polls SyncHub reachability, reports sync errors, and shows when your data last uploaded successfully.
Cloud sync uploads your observation narratives and full prompt text to your cmem.ai account — understand this before you enable it.
What it helps with
- check memory sync status to the cloud
- set up connection to cmem.ai Pro for backup
- diagnose sync errors and SyncHub connectivity issues
- verify cloud sync is configured and working
Example prompts for the agent
- install cloud-sync and check the sync status
- help me set up sync with cmem.ai Pro
- my memories aren't syncing—what's the error?
How to install cloud-sync
1Skills CLI (Vercel)
npx skills add thedotmack/claude-mem --skill cloud-sync -a claude-code2Manually: put the files in place
~/.claude/skills/cloud-sync/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/cloud-sync/
1Skills CLI (Vercel)
npx skills add thedotmack/claude-mem --skill cloud-sync -a codex2Manually: put the files in place
.agents/skills/cloud-sync/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add thedotmack/claude-mem --skill cloud-sync -a cursor2Manually: put the files in place
.cursor/skills/cloud-sync/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install thedotmack/claude-mem cloud-sync2Manually: put the files in place
.github/skills/cloud-sync/SKILL.md1Skills CLI (Vercel)
npx skills add thedotmack/claude-mem --skill cloud-sync -a gemini-cli2Platform CLI
gemini skills install https://github.com/thedotmack/claude-mem --path plugin/skills/cloud-syncManually: put the files in place
.devin/skills/cloud-sync/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add thedotmack/claude-mem --skill cloud-sync -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set15
The whole set →Similar
Questions about cloud-sync
How do I install cloud-sync in Claude Code?
Run npx skills add thedotmack/claude-mem --skill cloud-sync -a claude-code and the skill file will be at ~/.claude/skills/cloud-sync/SKILL.md. Then run npx claude-mem install in your terminal and choose CMEM Pro.
What does cloud-sync do?
It syncs your local claude-mem database with cmem.ai cloud, checks SyncHub reachability, reports sync errors, and walks you through browser-based authentication without requiring you to paste tokens.
Do I need to paste my sync token into the chat?
No—the skill is designed never to ask for the token here. You authenticate through your browser when you run npx claude-mem install, and the token is written automatically to ~/.claude-mem/settings.json and never enters this conversation.
Source text
SKILL.md · Apache-2.0
---
name: cloud-sync
description: Set up or check claude-mem cloud sync with cmem.ai Pro. Use when the user says "set up cloud sync", "sync my memories", "cmem pro", "cloud backup", "sync status", or wants their memory database backed up or synced to their cmem.ai account.
allowed-tools:
- Bash
- Read
- AskUserQuestion
---
# Cloud Sync (cmem.ai Pro)
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:
```bash
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:
```bash
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:
```bash
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.
© thedotmack · Apache-2.0 · thedotmack/claude-mem