AI News HubLIVE
In-site rewrite3 min read

Show HN: AiSyncing – Back up your AI coding assistant memories to GitHub

Notifications You must be signed in to change notification settings Fork 0 Star 0 BranchesTags Open more actions menu Latest commit History 17 Commits 17 Commits Folders and files NameName Last commit message Last commi…

SourceHacker News AIAuthor: mastermindxs

Notifications You must be signed in to change notification settings Fork 0 Star 0 BranchesTags Open more actions menu Latest commit History 17 Commits 17 Commits Folders and files NameName Last commit message Last commit date .github/workflows .github/workflows scripts scripts tests tests .gitignore .gitignore LICENSE LICENSE README.md README.md banner.svg banner.svg config.example.json config.example.json notifier.swift notifier.swift setup.sh setup.sh sync.sh sync.sh uninstall.sh uninstall.sh Repository files navigation 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 detects installed AI tools, creates a private GitHub backup repo, and configures everything Configurable allow list: per-source include patterns in config.json control 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 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 What it backs up AI 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. Default include lists per tool: Tool Source directory Files backed up Claude Code ~/.claude CLAUDE.md, settings.json, config.json, projects/*/memory/, agents/, commands/, hooks/, skills/ OpenAI Codex ~/.codex AGENTS.md, AGENTS.override.md, config.toml, *.config.toml, memories/ Gemini CLI ~/.gemini GEMINI.md, settings.json, commands/, extensions/ Cursor ~/.cursor rules/ (.mdc files), mcp.json, permissions.json Setup auto-detects which tools are installed and enables them. All include lists are fully configurable. Requirements macOS (for notifications and scheduled sync via LaunchAgent) GitHub CLI (brew install gh), authenticated git, python3, rsync (pre-installed on macOS) Quick start git clone https://github.com/DiegoSalazar/AiSyncing.git ~/AiSyncing cd ~/AiSyncing bash setup.sh Setup will walk you through: Backup repo: picks a name, auto-creates a private GitHub repo via gh 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 The AiSyncing template repo is saved as the upstream remote so you can pull updates later. Manual sync bash ~/AiSyncing/sync.sh How it works For each enabled source, sync.sh reads the include list from config.json Generates rsync filter rules at runtime (auto-includes parent directories for nested patterns) Rsyncs each source directory into data// Commits with a message showing which sources changed: sync(claude,gemini): 2026-08-24 15:00:00 Pushes to your private backup repo Sends a macOS notification (click to open commit history) Sources with missing directories are skipped with a warning, not fatal. If no sources sync, you get a notification about it. Configuration Everything is in config.json (created by setup.sh). See config.example.json for the full schema. Changing what gets backed up Each source has an include array of glob patterns. Edit it to add or remove files: { "sources": { "claude": { "enabled": true, "source_dir": "~/.claude", "include": [ "CLAUDE.md", "projects/*/memory/", "agents/", "my-custom-dir/" ] } } } Patterns follow rsync include syntax. Parent directories are auto-included for nested paths. Anything not matched is excluded. Adding a custom AI tool Add a new entry to sources with any name, its config directory, and the files you want backed up. For example, to add Windsurf (Codeium): { "sources": { "windsurf": { "enabled": true, "source_dir": "~/.codeium/windsurf", "include": [ ".windsurfrules", "memories/", "config.json", "settings.json", "prompts/" ] } } } The sync script handles any number of sources. Each gets its own data// subdirectory in the backup. Changing the schedule Edit schedule_hour in config.json, then re-run bash setup.sh to update the LaunchAgent. Notifications On macOS, each sync sends a banner notification showing the result. Click it to open your backup's commit history on GitHub. The notification helper is a minimal Swift app (notifier.swift) compiled into AiSyncing.app during setup. It runs as a background process (no dock icon) and uses macOS UserNotifications for proper banner support with click actions. On first notification, macOS will ask to allow notifications from "AI Syncing". Click Allow. Falls back to osascript if the app isn't built (no click-to-open in fallback mode). Logs: ~/Library/Logs/ai-syncing.log Restore Clone your backup repo on a new machine and copy the data back: git clone [email protected]:you/ai-backup.git ~/AiSyncing rsync -av ~/AiSyncing/data/claude/ ~/.claude/ rsync -av ~/AiSyncing/data/codex/ ~/.codex/ rsync -av ~/AiSyncing/data/gemini/ ~/.gemini/ rsync -av ~/AiSyncing/data/cursor/ ~/.cursor/ # Re-enable scheduled sync: bash ~/AiSyncing/setup.sh Uninstall bash ~/AiSyncing/uninstall.sh Stops the LaunchAgent and removes the compiled notification app. Your backup data and config are left in place. Staying current A weekly GitHub Action (Research AI Tools) 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. Updating the template Setup saves the AiSyncing template as the upstream remote: cd ~/AiSyncing git fetch upstream git merge upstream/main License MIT MIT license Activity Stars 0 stars Watchers 0 watching Forks 0 forks Report repository