{"slug": "show-hn-aisyncing-back-up-your-ai-coding-assistant-memories-to-github", "title": "Show HN: AiSyncing – Back up your AI coding assistant memories to GitHub", "summary": "AiSyncing, a new open-source tool by DiegoSalazar, automatically backs up AI coding assistant memories, configs, and instruction files to a private GitHub repository daily. It supports Claude Code, OpenAI Codex, Gemini CLI, Cursor, and custom tools, with features like auto-setup, configurable include lists, scheduled sync via macOS LaunchAgent, and native notifications. The tool addresses the risk of losing persistent local data from AI assistants by syncing to a private repo for easy restore.", "body_md": "Automatic daily backups of your AI coding assistant memories, configs, and instruction files to a private GitHub repo.\n\nSupports **Claude Code**, **OpenAI Codex**, **Gemini CLI**, **Cursor**, and any custom AI tool you add.\n\n**Multi-tool**: backs up multiple AI harnesses simultaneously (Claude, Codex, Gemini, Cursor, Windsurf, or anything with a local config directory)**Auto-setup**: interactive`setup.sh`\n\ndetects installed AI tools, creates a private GitHub backup repo, and configures everything**Configurable allow list**: per-source`include`\n\npatterns in`config.json`\n\ncontrol exactly which files get backed up. Sane defaults for the top AI tools out of the box.**Daily scheduled sync**: macOS LaunchAgent runs at your chosen hour. Each commit shows which sources changed:`sync(claude,codex): 2026-08-24 15:00:00`\n\n**Native macOS notifications**: a compiled Swift helper app shows banner notifications on each sync. Click to open your backup's commit history on GitHub.**Restore anywhere**: clone your backup repo on a new machine and rsync the data back\n\nAI coding assistants store persistent memories, custom agents, instruction files, and config locally. This tool syncs them to a private GitHub repo so you never lose them.\n\n**Default include lists per tool:**\n\n| Tool | Source directory | Files backed up |\n|---|---|---|\n| Claude Code | `~/.claude` |\n`CLAUDE.md` , `settings.json` , `config.json` , `projects/*/memory/**` , `agents/**` , `commands/**` , `hooks/**` , `skills/**` |\n| OpenAI Codex | `~/.codex` |\n`AGENTS.md` , `AGENTS.override.md` , `config.toml` , `*.config.toml` , `memories/**` |\n| Gemini CLI | `~/.gemini` |\n`GEMINI.md` , `settings.json` , `commands/**` , `extensions/**` |\n| Cursor | `~/.cursor` |\n`rules/**` (`.mdc` files), `mcp.json` , `permissions.json` |\n\nSetup auto-detects which tools are installed and enables them. All include lists are fully configurable.\n\n- macOS (for notifications and scheduled sync via LaunchAgent)\n[GitHub CLI](https://cli.github.com/)(`brew install gh`\n\n), authenticated`git`\n\n,`python3`\n\n,`rsync`\n\n(pre-installed on macOS)\n\n```\ngit clone https://github.com/DiegoSalazar/AiSyncing.git ~/AiSyncing\ncd ~/AiSyncing\nbash setup.sh\n```\n\nSetup will walk you through:\n\n**Backup repo**: picks a name, auto-creates a private GitHub repo via`gh`\n\n**Git identity**: name and email for backup commits (defaults to your global git config)** AI tools**: auto-detects installed tools by checking for their config directories** Schedule**: which hour to run the daily sync (default: 3 PM)** Build and install**: compiles the notification helper, installs the LaunchAgent, pushes the initial backup\n\nThe AiSyncing template repo is saved as the `upstream`\n\nremote so you can pull updates later.\n\n```\nbash ~/AiSyncing/sync.sh\n```\n\n- For each enabled source,\n`sync.sh`\n\nreads the`include`\n\nlist from`config.json`\n\n- Generates rsync filter rules at runtime (auto-includes parent directories for nested patterns)\n- Rsyncs each source directory into\n`data/<source>/`\n\n- Commits with a message showing which sources changed:\n`sync(claude,gemini): 2026-08-24 15:00:00`\n\n- Pushes to your private backup repo\n- Sends a macOS notification (click to open commit history)\n\nSources with missing directories are skipped with a warning, not fatal. If no sources sync, you get a notification about it.\n\nEverything is in `config.json`\n\n(created by `setup.sh`\n\n). See `config.example.json`\n\nfor the full schema.\n\nEach source has an `include`\n\narray of glob patterns. Edit it to add or remove files:\n\n```\n{\n  \"sources\": {\n    \"claude\": {\n      \"enabled\": true,\n      \"source_dir\": \"~/.claude\",\n      \"include\": [\n        \"CLAUDE.md\",\n        \"projects/*/memory/**\",\n        \"agents/**\",\n        \"my-custom-dir/**\"\n      ]\n    }\n  }\n}\n```\n\nPatterns follow rsync include syntax. Parent directories are auto-included for nested paths. Anything not matched is excluded.\n\nAdd a new entry to `sources`\n\nwith any name, its config directory, and the files you want backed up. For example, to add Windsurf (Codeium):\n\n```\n{\n  \"sources\": {\n    \"windsurf\": {\n      \"enabled\": true,\n      \"source_dir\": \"~/.codeium/windsurf\",\n      \"include\": [\n        \".windsurfrules\",\n        \"memories/**\",\n        \"config.json\",\n        \"settings.json\",\n        \"prompts/**\"\n      ]\n    }\n  }\n}\n```\n\nThe sync script handles any number of sources. Each gets its own `data/<name>/`\n\nsubdirectory in the backup.\n\nEdit `schedule_hour`\n\nin `config.json`\n\n, then re-run `bash setup.sh`\n\nto update the LaunchAgent.\n\nOn macOS, each sync sends a banner notification showing the result. Click it to open your backup's commit history on GitHub.\n\nThe notification helper is a minimal Swift app (`notifier.swift`\n\n) compiled into `AiSyncing.app`\n\nduring setup. It runs as a background process (no dock icon) and uses macOS UserNotifications for proper banner support with click actions.\n\nOn first notification, macOS will ask to allow notifications from \"AI Syncing\". Click Allow.\n\nFalls back to `osascript`\n\nif the app isn't built (no click-to-open in fallback mode).\n\nLogs: `~/Library/Logs/ai-syncing.log`\n\nClone your backup repo on a new machine and copy the data back:\n\n```\ngit clone git@github.com:you/ai-backup.git ~/AiSyncing\nrsync -av ~/AiSyncing/data/claude/ ~/.claude/\nrsync -av ~/AiSyncing/data/codex/ ~/.codex/\nrsync -av ~/AiSyncing/data/gemini/ ~/.gemini/\nrsync -av ~/AiSyncing/data/cursor/ ~/.cursor/\n# Re-enable scheduled sync:\nbash ~/AiSyncing/setup.sh\nbash ~/AiSyncing/uninstall.sh\n```\n\nStops the LaunchAgent and removes the compiled notification app. Your backup data and config are left in place.\n\nA weekly GitHub Action (`Research AI Tools`\n\n) monitors official documentation for all supported tools. It fetches doc pages from each tool's repo, hashes the content, and compares against stored baselines. If any docs change or become unreachable, it opens a GitHub issue for review. Can also be triggered manually from the Actions tab.\n\nSetup saves the AiSyncing template as the `upstream`\n\nremote:\n\n```\ncd ~/AiSyncing\ngit fetch upstream\ngit merge upstream/main\n```\n\nMIT", "url": "https://wpnews.pro/news/show-hn-aisyncing-back-up-your-ai-coding-assistant-memories-to-github", "canonical_source": "https://github.com/DiegoSalazar/AiSyncing", "published_at": "2026-08-24 22:52:08+00:00", "updated_at": "2026-08-24 23:12:53.158757+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools"], "entities": ["AiSyncing", "DiegoSalazar", "GitHub", "Claude Code", "OpenAI Codex", "Gemini CLI", "Cursor"], "alternates": {"html": "https://wpnews.pro/news/show-hn-aisyncing-back-up-your-ai-coding-assistant-memories-to-github", "markdown": "https://wpnews.pro/news/show-hn-aisyncing-back-up-your-ai-coding-assistant-memories-to-github.md", "text": "https://wpnews.pro/news/show-hn-aisyncing-back-up-your-ai-coding-assistant-memories-to-github.txt", "jsonld": "https://wpnews.pro/news/show-hn-aisyncing-back-up-your-ai-coding-assistant-memories-to-github.jsonld"}}