{"id":48996369,"url":"https://github.com/hmennen90/claude-device-sync","last_synced_at":"2026-04-21T20:00:56.824Z","repository":{"id":351525598,"uuid":"1211368447","full_name":"hmennen90/claude-device-sync","owner":"hmennen90","description":"Claude Code Plugin: cross-device session sync, shared memory \u0026 reminders via encrypted Git","archived":false,"fork":false,"pushed_at":"2026-04-19T08:05:20.000Z","size":129,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-20T19:03:32.966Z","etag":null,"topics":["claude-code","claude-code-plugin","claude-plugin","cli","end-to-end-encryption","git","reminders","sync","typescript"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/claude-device-sync","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hmennen90.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-15T10:21:23.000Z","updated_at":"2026-04-19T08:05:24.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hmennen90/claude-device-sync","commit_stats":null,"previous_names":["hmennen90/claude-sync"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/hmennen90/claude-device-sync","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmennen90%2Fclaude-device-sync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmennen90%2Fclaude-device-sync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmennen90%2Fclaude-device-sync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmennen90%2Fclaude-device-sync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hmennen90","download_url":"https://codeload.github.com/hmennen90/claude-device-sync/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hmennen90%2Fclaude-device-sync/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32108187,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-21T11:25:29.218Z","status":"ssl_error","status_checked_at":"2026-04-21T11:25:28.499Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","claude-code-plugin","claude-plugin","cli","end-to-end-encryption","git","reminders","sync","typescript"],"created_at":"2026-04-18T17:04:54.375Z","updated_at":"2026-04-21T20:00:56.798Z","avatar_url":"https://github.com/hmennen90.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# claude-device-sync\n\n\u003e The first **Claude Code Plugin** with encrypted cross-device session sync, shared memory, native reminders, and team mode. Installs as a plugin, includes 5 skills, works standalone as a CLI.\n\n[![npm](https://img.shields.io/npm/v/claude-device-sync)](https://www.npmjs.com/package/claude-device-sync)\n[![license](https://img.shields.io/npm/l/claude-device-sync)](LICENSE)\n\n![demo](docs/demo.svg)\n\n## What You Get\n\n- **Native Claude Code Plugin** — 5 skills (`/remind`, `/resume`, `/setup`, `/status`, `/sync`) + auto-sync session hook\n- **Git-backed session sync** — use any private repo (GitHub / GitLab / Gitea / self-hosted)\n- **Shared memory** — sync `~/.claude/` memory files across devices\n- **Reminders with DE/EN time parser** — `\"morgen 9:00\"`, `30m`, `2h`, `1d`, optional webhooks\n- **Team mode** — per-user namespace, resume teammates' sessions\n- **End-to-end encrypted** — Argon2id key derivation + ChaCha20-Poly1305\n\n## Install\n\n```bash\nnpm install -g claude-device-sync\n```\n\n**Requirements:** Node.js 20+, Git, a private Git repository (GitHub, GitLab, etc.)\n\n## Quick Start\n\n```bash\n# 1. Initialize with your private repo\ndevice-sync init git@github.com:you/your-sync-repo.git\n\n# 2. Install auto-sync hooks into Claude Code\ndevice-sync hooks install\n\n# 3. Done! Sessions and memory sync automatically.\n```\n\n## Skills\n\nWhen installed as a Claude Code plugin, the following skills become available as slash commands:\n\n### `/setup` — Initialize device-sync\n\nGuides you through connecting a private Git repo, choosing personal or team mode, setting a passphrase, and installing hooks.\n\n### `/sync` — Push \u0026 pull sessions\n\nPush or pull sessions, memory, and reminders. Supports `--memory-only` and `--session-only` flags.\n\n### `/resume` — Continue from another device\n\nPulls the latest sync state, finds the most recent session, decrypts it and loads the context so you can pick up where you left off.\n\n### `/remind` — Cross-device reminders\n\nSet reminders with natural language time parsing (DE/EN). Supports relative (`30m`, `2h`) and absolute (`\"morgen 9:00\"`, `\"tomorrow 14:30\"`) times. Optional `--webhook` for Slack/Teams notifications.\n\n### `/status` — Configuration \u0026 hooks\n\nShows sync config, registered devices, hook status, and team members. Manage hooks and team settings from here.\n\n## CLI Reference\n\n### Session Sync\n\n```bash\n# Push current session + memory\ndevice-sync push\n\n# Pull latest from remote\ndevice-sync pull\n\n# Resume the latest session (from any device)\ndevice-sync resume\n\n# List all synced sessions\ndevice-sync sessions\n\n# Resume a specific user's session (team mode)\ndevice-sync resume --user colleague\n```\n\n### Reminders\n\n```bash\n# Set a reminder\ndevice-sync remind 30m \"Check deploy status\"\ndevice-sync remind 2h \"Review PR\"\ndevice-sync remind \"morgen 9:00\" \"Standup prep\"\ndevice-sync remind 1d \"Release notes\" --webhook https://hooks.slack.com/...\n\n# View reminders\ndevice-sync reminders\ndevice-sync reminders --due\ndevice-sync reminders --dismiss\n```\n\n### Team Mode\n\n```bash\n# Initialize in team mode\ndevice-sync init git@github.com:team/shared-sync.git --mode team --username alice\n\n# On another device / team member\ndevice-sync init git@github.com:team/shared-sync.git --mode team --username bob\n\n# Add a team member\ndevice-sync team add charlie\n\n# All sessions and memory are visible to all team members\ndevice-sync sessions --user bob\ndevice-sync resume --user alice\n```\n\n### Hooks (Auto-Sync)\n\n```bash\n# Install hooks into Claude Code settings\ndevice-sync hooks install\n\n# Check hook status\ndevice-sync hooks status\n\n# Remove hooks\ndevice-sync hooks uninstall\n```\n\nInstalled hooks:\n| Event | Trigger | Action |\n|-------|---------|--------|\n| SessionStart | Always | `device-sync pull` |\n| SessionEnd | Always | `device-sync push` |\n| PostToolUse | Write/Edit | `device-sync push --memory-only` |\n| PreToolUse | Always | `device-sync pull --memory-only` |\n\n### Reminder Daemon\n\n```bash\n# Install background checker (fires webhooks for due reminders)\ndevice-sync daemon start\n\n# Check status\ndevice-sync daemon status\n\n# View logs\ndevice-sync daemon log\n\n# Stop daemon\ndevice-sync daemon stop\n```\n\n### Maintenance\n\n```bash\n# View sync status\ndevice-sync status\n\n# Purge old sessions (default: \u003e30 days)\ndevice-sync purge\ndevice-sync purge --days 14\ndevice-sync purge --dry-run\n\n# Purge old reminders\ndevice-sync reminders --dismiss\n```\n\n## Encryption\n\nAll data is encrypted before being committed to Git. No plaintext ever touches the repo.\n\n| Parameter | Value |\n|-----------|-------|\n| **Cipher** | ChaCha20-Poly1305 |\n| **KDF** | Argon2id (64 MB memory, 3 iterations) |\n| **Key storage** | OS keychain (macOS Keychain, Linux libsecret, Windows Credential Vault) |\n| **Fingerprint** | Truncated SHA-256 stored in repo for password verification on new devices |\n\n**What's encrypted:** session data, memory files, reminders — all stored as `.enc` blobs.\n**What's not encrypted:** `config.json` (sync mode, device list, team member names), Git metadata.\n\n```\nYour Password\n    → Argon2id + salt (stored in repo)\n256-bit Key (stored in OS keychain)\n    → ChaCha20-Poly1305\nEncrypted .enc files → committed to private Git repo\n```\n\nRepo structure:\n```\ndevice-sync-repo/\n├── config.json              # Sync config (mode, devices, team members)\n├── sessions/\n│   ├── latest.enc           # Pointer to most recent session\n│   └── {user}/{device}/     # Encrypted session files\n├── memory/\n│   ├── {user}/{project}/    # Personal memory files\n│   └── shared/{project}/    # Team-shared memory (team mode)\n└── reminders/\n    └── pending.enc          # Encrypted reminder list\n```\n\n## Platform Support\n\n| Platform | Status | Notes |\n|----------|--------|-------|\n| macOS | Full support | Keychain + launchd daemon |\n| Linux | Full support | libsecret + crontab daemon |\n| Windows | Full support | Credential Vault + Task Scheduler daemon |\n\n## Troubleshooting\n\n### `GitConstructError: Cannot use simple-git on a directory that does not exist`\n\nFixed in 0.2.1. Upgrade with `npm install -g claude-device-sync@latest`.\n\n### `No memory directory found` on Windows\n\nFixed in 0.2.2. The project-directory lookup did not strip the drive-letter colon. Upgrade to 0.2.2+.\n\n## Marketplace\n\nThis plugin will be submitted to the Claude Code Plugin Marketplace once the marketplace is publicly available. In the meantime, install it globally via npm and the plugin is automatically discovered by Claude Code.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhmennen90%2Fclaude-device-sync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhmennen90%2Fclaude-device-sync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhmennen90%2Fclaude-device-sync/lists"}