Sync your AI stuff and keep it away from your main codebase.

Keep AI files, folders, and any custom patterns out of the repository without losing them. Dotlore syncs them across your machines through your own cloud — iCloud, Google Drive, Dropbox, OneDrive, MEGA, or any folder your cloud app syncs.

macOS is the current priority. Windows & Linux are coming soon.

What it does

  • Files stay put: not moved, not symlinked, not added to the project's git history.
  • A project is a folder with a synced include-list. .claude/, CLAUDE.md, .agents/, docs/, and ~/.claude are entries inside it.
  • Sync through any local folder your cloud app keeps in sync — a folder path, not a cloud API.
  • Each Mac publishes an immutable git bundle. Nothing in the cloud folder is rewritten or deleted.
  • Conflicts: the newer commit wins on every device; the loser's bytes stay beside it as a sibling file.
  • Desktop app, menu bar status item, and a CLI (add, sync, status, daemon).

How it works

Both Macs share one folder that a cloud app (iCloud, Google Drive, Dropbox, OneDrive, …) already syncs. Each writes its own history there and reads the other's.

  1. A change becomes a commit

    • Chosen entries go into a private git repo at ~/Library/Application Support/dotlore/.
    • A save becomes a commit. File watch, or a poll every 30 seconds.
  2. That commit is the next bundle

    <cloud>/dotlore/<project>/
      manifest.json
      devices/
        <this Mac>/
          000001.bundle
          000002.bundle
        <other Mac>/
          000001.bundle
    • One new file, in this Mac's devices/<id>/. Left as written.
    • Inside: commits of the include-list — file contents, plus the path list.
    • 000001.bundle is the full snapshot. Later files hold only the commits since.
  3. The other Mac reads it back

    • The cloud folder copies the new file across.
    • The other Mac fetches bundles it has not applied, in order, and writes the merge back with system git.
    • The first link on the second Mac reads every bundle already there.
    • Same file on both Macs: the newer commit wins. The other copy stays as CLAUDE.conflict-<device>-<hash>.md.