New to Claude Skills? Learn how to install them →

thedotmack on GitHub

Cloud Sync

Free

Seamlessly sync your memories with cmem.ai Pro.

Get this skill

Free · Opens the source repo

What Cloud Sync does

Cloud Sync is a skill designed for users of cmem.ai Pro, enabling them to set up and manage cloud synchronization of their memory database. It utilizes SyncHub to ensure that your memories are securely backed up and accessible from your cmem.ai account. This skill is particularly useful for individuals who rely on cmem.ai for memory management and want to ensure that their data is consistently synced and up-to-date.

The skill operates through a straightforward process. Users can check the sync status, obtain necessary connection values, and write these settings to a configuration file. The connection requires a sync token, user ID, and SyncHub URL, which are essential for establishing a secure link to the cloud service. Once the connection is set up, users can easily verify the sync status and ensure that their memories are being backed up as intended.

Security is a key feature of Cloud Sync. The skill is designed to handle sensitive information carefully, ensuring that sync tokens are never exposed in logs or command outputs. This focus on security helps users maintain the confidentiality of their data while utilizing cloud synchronization. Additionally, the skill provides clear feedback on the status of the sync operation, allowing users to troubleshoot any issues that may arise during the setup or operation phases.

Overall, Cloud Sync is an essential tool for cmem.ai Pro users who want to enhance their memory management experience by ensuring their data is securely backed up and synchronized with the cloud. Whether you're setting up the service for the first time or checking the status of an existing connection, this skill simplifies the process and enhances the reliability of your memory database.

When to use it

Use this skill when you want to set up or verify the synchronization of your memory database with cmem.ai Pro.

When not to use it

This skill is not suitable for users who do not utilize cmem.ai Pro or those who prefer local-only memory management solutions.

What you can build with it

Initial Setup of Cloud Sync

Use this skill to set up cloud synchronization for the first time, ensuring your memory data is backed up to cmem.ai.

Verifying Sync Status

Check the sync status to ensure that your memories are being properly backed up and that there are no connection issues.

Troubleshooting Sync Issues

If you encounter problems with syncing, use the skill to diagnose and resolve connection errors.

How to install Cloud Sync

View source

1. Install with the skills CLI

npx skills add thedotmack/claude-mem/cloud-sync --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by thedotmack

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: 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. Obtain the connection

Ask for all three values shown by cmem.ai → Connect:

  1. sync token;
  2. user id;
  3. 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.

Frequently asked questions about Cloud Sync

Similar skills