Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Rock Sync

Tim KovalevTim Kovalev47 downloads

Sync your vault through your own server, with full git history, conflict-aware merges and optional MCP access for AI agents.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates11

Self-hosted, single-user sync for Obsidian: a plugin on every device and one server that keeps your vaults in git.

  • Every file type, every version. Each change is a commit, so nothing you synced is lost.
  • Real merges. The server merges edits to the same note, and you only resolve what truly conflicts, in a view of its own.
  • Nothing is deleted behind your back. A deletion from another device waits for your confirmation.
  • Several vaults, a token per device and vault, connected with a one-time code, revocable at any time.
  • Claude can read and write the folders you choose, through MCP, if you turn it on.
 Obsidian + plugin ──┐
 Obsidian + plugin ──┼── sync API ──┐
 Obsidian + plugin ──┘              ├── server ── vaults (files + git history)
                                    │          └─ database (vaults, tokens)
 Claude (MCP connector) ── /mcp ────┘
 You (browser) ─────────── /admin ──┘

Quick start

1. The server. Save this as compose.yml:

services:
  rock-sync:
    image: ghcr.io/kovalevtech/obsidian-rock-sync:latest  # better: a version
    environment:
      INIT_VAULT_NAME: notes
      INIT_VAULT_CODE: ${INIT_VAULT_CODE:?pick 6 digits and put them in .env}
    volumes:
      - vaults:/vaults
      - db:/db
    ports:
      - 127.0.0.1:9292:9292
    read_only: true                       # it writes only to the two volumes
    cap_drop: [ALL]
    security_opt: [no-new-privileges:true]
volumes:
  vaults:
  db:
echo "INIT_VAULT_CODE=$(LC_ALL=C tr -dc 0-9 < /dev/urandom | head -c 6)" > .env
docker compose up -d

This creates the vault notes and a connection code for its first device. The server now answers on this machine only; to reach it from your other devices, see Deployment. It serves the sync API alone: the admin panel and MCP are opt-in through ENABLED_APPS, the admin panel best in a container of its own (Processes).

2. The plugin. Install Rock Sync from Community plugins and enable it (not listed yet?).

3. Connect. In the plugin's settings, enter the server's URL and the code from .env, Connect, check the summary and Save. The code works for that first device only; for the next ones, use the admin panel.

Network use

The plugin needs a Rock Sync server, which you run yourself. It sends your vault's files to that server, and only that server, because that's how they reach your other devices. There's no account, no telemetry and, by default, no third-party service.

If you turn on MCP on your server, Claude (Anthropic) can read and write the folders you grant there; the plugin itself is not involved.

Documentation

Page What it covers
Deployment How it makes sense to run it: network, proxy, storage, backups, updates
Exposing the server Behind a public proxy: what to allow, a Cloudflare example, checks from outside
Container The Docker image: every setting, volumes, users, why it won't start
Plugin Using the plugin: conflicts, deletions, first sync, limits
Admin panel Managing vaults and tokens in the browser
MCP Giving Claude access to chosen folders
Security Tokens, what's stored where, what isn't protected
Storage How vaults and history are kept on disk
API The sync API, for writing another client
Development Running from source, tests, releases
Releases What changed, and what to do when updating

License

PolyForm Noncommercial 1.0.0: free for personal and other noncommercial use. Any commercial use, including use inside a company, requires a separate license: .

Contributing

Issues are welcome. Pull requests are not accepted.

HealthExcellent
ReviewSatisfactory
About
Sync your Obsidian vaults to a self-hosted, Git-backed server that records every change as a commit and preserves full file history. Keep edits merged across devices with real merges and a conflict view, prevent silent deletions by requiring confirmation, control access with revocable device tokens, and optionally grant Claude folder access via MCP.
SyncingGitBackup
Details
Current version
1.2.0
Last updated
5 days ago
Created
2 weeks ago
Updates
11 releases
Downloads
47
Compatible with
Obsidian 1.8.7+
Platforms
Desktop, Mobile
License
OTHER
Report bugRequest featureReport plugin
Sponsor
GitHub Sponsors
Author
Tim KovalevTim Kovalevkovalevtech
GitHubkovalevtech
  1. Community
  2. Plugins
  3. Syncing
  4. Rock Sync

Related plugins

GitHub

GitHub Sync

Sync vault to personal GitHub.

Git

Integrate Git version control with automatic backup and other advanced features.

YAOS

Simple real-time sync powered by your own Cloudflare Worker.

GitHub

Git Sync

Sync your vault across all devices using your own GitHub account. Free forever.

Differential ZIP Backup

Back our vault up with lesser storage.

GitHub

GitHub Gitless Sync

Sync a GitHub repository with vaults on different platforms without requiring git installation

Yandex Disk Sync

Synchronize your vault with Yandex Disk. Supports bidirectional sync, conflict resolution, and works on mobile.

Settings profiles

Create various global settings profiles, that sync between vaults.

Baidu Netdisk Sync

Cross-platform bi-directional synchronization with Baidu Netdisk for your vaults.

Git File Sync

Both mobile and desktop. Selectively sync the notes you choose—not your whole vault—with GitHub, GitLab, or Gitea. No local Git repository required.