cloud-sync
thedotmack/claude-mem
Set up or check claude-mem cloud sync with cmem.ai Pro for secure memory backup.
What is cloud-sync?
Configures cloud synchronization of your claude-mem database to cmem.ai Pro via SyncHub. Use this when you want to back up memories, check sync status, or establish a cloud connection for your memory database.
- Check cloud sync status and connection health
- Configure SyncHub connection with token, user ID, and Hub URL
- Verify authenticated connection to cmem.ai Pro
- Monitor pending sync counts and last flush timestamp
- Report device ID, reachability, and any sync errors
How to install cloud-sync
npx skills add https://github.com/thedotmack/claude-mem --skill cloud-sync- cmem.ai Pro account with active subscription
- Three connection values from cmem.ai → Connect (sync token, user ID, SyncHub URL)
- claude-mem already installed and running
How to use cloud-sync
- 1.Check current sync status by querying the worker status endpoint
- 2.If not configured, ask user for the three connection values from cmem.ai → Connect
- 3.Write the connection values securely to ~/.claude-mem/settings.json with mode 0600
- 4.Restart the claude-mem worker
- 5.Poll the status endpoint to verify successful connection and reachability
- 6.Report device ID, pending counts, last flush time, and any errors
Use cases
- Setting up cloud backup for your claude-mem database
- Verifying that your memories are syncing to cmem.ai Pro
- Troubleshooting sync connection issues
- Checking pending memory uploads and last successful sync time
- Migrating or reconnecting to a cmem.ai Pro account
- claude-mem users with cmem.ai Pro accounts
- Users wanting cloud backup of their memory database
- Teams managing distributed memory across devices
cloud-sync FAQ
You need three values from cmem.ai → Connect: the sync token, your user ID, and the SyncHub URL (must be an https:// URL, not the cmem.ai application API URL).
Yes. The skill never prints, logs, or includes the token in command arguments. It only confirms the token length and stores it in ~/.claude-mem/settings.json with restricted file permissions (mode 0600).
The skill reports the connection error and asks you to verify the three values in cmem.ai → Connect. Check that the SyncHub URL is correct and that your token is still valid.
No. Cloud sync only backs up memories created or modified after the SyncHub connection is established. Pre-launch local memories are not automatically migrated.
Cloud sync uploads your observation narratives and full prompt text to your cmem.ai account for secure backup and access across devices.
Full instructions (SKILL.md)
Source of truth, from thedotmack/claude-mem.
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 or writes the three connection values issued by cmem.ai → Connect.
Security rule: never print the sync token, put it in argv, or log it.
Confirm only its length. Preserve every unrelated setting and keep
~/.claude-mem/settings.json mode 0600.
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: trueandhub.reachable: true→ the worker completed an authenticatedGET /v1/sync/statusagainst SyncHub. ReportdeviceId, pending counts,lastFlushAt,lastError, and the Hub head/checkpoint; stop unless the user asked to replace the connection.configured: trueandhub.reachable: false→ reporthub.errorand say the SyncHub connection is not verified. A zero pending count orlastError: nullis 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. Obtain the connection
Ask for all three values shown by cmem.ai → Connect:
- sync token;
- user id;
- SyncHub URL.
The Hub URL must be an absolute https:// URL. Do not substitute the cmem.ai
application API URL; the installed client talks only to SyncHub.
3. Write installed-client settings
Substitute the collected values inside this quoted stdin script. Do not echo them before or after running it:
node - <<'EOF'
const fs = require('fs'), os = require('os'), path = require('path');
const token = 'PASTE_TOKEN_HERE';
const userId = 'PASTE_USER_ID_HERE';
const hubUrl = 'PASTE_HUB_URL_HERE';
if (!token || !userId || !/^https:\/\/[^\s]+$/.test(hubUrl)) {
console.error('token, user id, and an https SyncHub URL are required');
process.exit(1);
}
const dir = path.join(os.homedir(), '.claude-mem');
const file = path.join(dir, 'settings.json');
fs.mkdirSync(dir, { recursive: true });
const settings = fs.existsSync(file) ? JSON.parse(fs.readFileSync(file, 'utf8')) : {};
const target = settings.env && typeof settings.env === 'object' ? settings.env : settings;
target.CLAUDE_MEM_CLOUD_SYNC_TOKEN = token;
target.CLAUDE_MEM_CLOUD_SYNC_USER_ID = userId;
target.CLAUDE_MEM_CLOUD_SYNC_HUB_URL = hubUrl.replace(/\/+$/, '');
fs.writeFileSync(file, JSON.stringify(settings, null, 2) + '\n', { mode: 0o600 });
fs.chmodSync(file, 0o600);
console.log(`saved cloud connection: token length ${token.length}, user id length ${userId.length}`);
EOF
These are the only required connection keys. The worker mints and persists a device id on first start and defaults the device name to the hostname.
4. Restart and verify
curl -s -X POST "http://127.0.0.1:${PORT}/api/admin/restart"
Poll the status route every five seconds for up to 30 seconds while the
successor starts. 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. Ask the user to verify the three values in cmem.ai →
Connect. Never include the token.
5. 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.
Related skills
More from thedotmack/claude-mem and the wider catalog.

design-is
Audit designs against Dieter Rams' ten principles, then auto-handoff to /make-plan for new, refine, or redesign outcomes.

do
Execute phased implementation plans by orchestrating specialized subagents for each task.

how-it-works
Auto-capture observations and inject past context into future Claude sessions without manual re-explanation.

knowledge-agent
Build and query AI-powered knowledge bases from your observation history to create focused "brains" on specific topics.

learn-codebase
Systematically read every source file to build deep codebase understanding.

make-plan
Create detailed, phased implementation plans with documentation discovery before execution.