Config Sync

by xooooooooox
5
4
3
2
1
Score: 37/100

Description

Selective, on-demand sync of Obsidian settings — hotkeys, snippets, plugin configs — across devices and vaults. Rides your note sync, or git/vault remotes.

Reviews

No reviews yet.

Stats

5
stars
880
downloads
0
forks
19
days
1
days
1
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
2
total issues
2
open issues
0
closed issues
851
commits

Latest Version

a day ago

Changelog

Update every device before you sync

Your settings move to a new format again. A device still on 2.21.0 or 2.22.0 will meet the new format, decline politely and tell you to update — nothing is damaged. A device on 2.20.0 or earlier will reset its setup to defaults, and that cannot be undone. So update everywhere before letting any device capture or push. The store itself is untouched — only the plugin's own settings migrate, the first time this version opens them.

One behaviour change deserves its own paragraph. A plugin you never wrote a rule for now follows the shared on/off list, once that list itself is synced. The first sync after upgrading therefore converges whatever switch differences had silently accumulated between your devices — some plugins may turn on or off. If you kept a plugin deliberately off on one device only, say so before you sync — its card's Enabled on row is where that choice lives. The long form lives in Updating from 2.21.0 and earlier.

Why

Whether a plugin is on, and which devices a rule covers, used to be one tangled choice. This release finishes the split that 2.22.0 started: the shared rules travel with your store, and this device's own exceptions stay on this device. Every device reads the same rules and then applies its own exceptions — no more guessing which device's list wins.

Changed

  • On/off has two clean layers. Shared rules (everywhere, per device class, or per item) live in the store; a "just here" exception never leaves the device that made it. The precedence is fixed and small: your exception on this device, then a rule for the item, then the device class, then the shared list.
  • One word each: an item is synced, a plugin is enabled. Cards, filters and search all follow.
  • The settings drawer speaks the Sync Center's language. The same rows, the same pickers, the same lock — no second dialect to learn. Card headers show compact badges with counts instead of word-tags.
  • Per-key rules are edited like everything else. Each pattern is a row with the sharing picker and the lock; the File preview underneath lets you click any key to add a rule for it. The old four-option dropdown — which could not even express every combination — is gone. Editing a rule no longer makes the panel flash.
  • A rule that encrypts a whole file keeps its encryption when you later change its sharing from the Sync Center. Before, that edit silently downgraded the file to plain text on the next capture.
  • Destructive switches ask first. Leaving Per-key rules (that deletes the key rules), changing a rule from file to folder, and deleting leftover store files all confirm, with the consequence spelled out.
  • Validation errors are readable. A problem pins a boxed message under the thing that caused it and says what to fix — no more bare warning line at the bottom of the page.
  • Discovered files hold still. The list keeps one stable order; turning a file on changes that row only. The drawer now names the file it belongs to, and its type can no longer be flipped to something the file isn't.
  • Leftover store files got a real face. Grouped by section, named by what they belonged to, collapsed by default, with an amber filter pill while any exist and a confirm before deleting.
  • The remote form is shorter. No Username field — a linked token is enough, self-hosted included. Browse sits inside the path box; the token's explanation lives in a tooltip instead of a paragraph.
  • The sidebar is quieter. The remotes group lost its header and its own refresh button — the panel's one refresh re-checks the remotes too.
  • Search reaches further. section: now also finds folders and custom rules; a remote whose store carries no lock is refused with a message that says so, instead of failing later.

Screenshots and the guide were redone for the new look. Node suite at 1636 tests.

README file from

Github

Config Sync

release downloads Static Badge Static Badge

Selective, on-demand sync of Obsidian settings — hotkeys, CSS snippets, themes, plugin configs — across devices and vaults. The data rides your existing note sync (remotely-save, Obsidian Sync, iCloud…) by default, or config-sync's own git / vault remotes. Nothing ever lands on a device without an explicit Apply from the Sync Center.

[!IMPORTANT] Update every device before any of them captures or pulls again. This release moves the settings to a new format, and the move is one way. A device still on 2.21.0 or 2.22.0 meets the new format, refuses it with a plain message and changes nothing. A device on 2.20.0 or earlier resets its Config Sync settings to defaults — that one cannot be fixed afterwards. Update Config Sync everywhere first, then carry on as usual. A plugin nobody ever set a rule for now follows the shared on/off list, once that list itself is synced — so the first sync after upgrading may turn some plugins on or off, converging whatever differences had silently built up between your devices. See Updating from 2.21.0 and earlier.

Sync Center

Features

  • One card per item — every synced thing (an Obsidian option group, a core or community plugin, a snippet) is one row with an expandable drawer holding its rules; a plugin's on/off state lives on its own card. (details)
  • Orthogonal field rules — every key answers two independent questions, who shares it (All devices / Desktop only / Mobile only / This device) and whether it travels encrypted; list-shaped keys can rule each element separately. (details)
  • Credential-safeThis device keys never leave the machine, and a per-device passphrase encrypts what should travel.
  • Explicit Apply — nothing changes a device until you tick items and press Apply; every run stays visible in the pinned result strip and a browsable History.
  • A Sync Center that knows the state — every row spells out its own fate in plain language (turns on · installs · applies settings), normalized JSON diffs, a this device status chip and totals for every pending action. (tour)
  • Install engine — plugins that are outdated, disabled or missing on this device can be updated, enabled or installed during Apply, pinned to the captured version. (rules)
  • Remotes (desktop) — pull/push the store against a git repo or another vault, with per-file diff previews. (details)
  • Safe to update one device at a time — anything written by a newer Config Sync is refused with a plain message, never reset or overwritten (protection starts at 2.21.0 — see the notice above for older devices). (details)
  • Search everywhere — both search boxes accept key:value qualifiers with autocomplete, combined freely with plain text: the Sync Center takes section: · type: · action: · mode: · device:, the settings search section: · type:.
  • Status bar — ↑ capture / ↓ apply plus per-remote ⇡ push / ⇣ pull counts at a glance; click opens the Sync Center.
  • Mobile-friendly — capture, apply and the Sync Center work on phones; the store is plain vault content, so any note sync carries it.

Install

From Obsidian: Settings → Community plugins → Browse, search Config Sync, install and enable.

Beta builds: via BRAT, add xooooooooox/obsidian-config-sync.

Quick start

  1. Settings → Config Sync — tick what you want to sync (Obsidian / Core plugins / Community plugins / Beta tabs).
  2. Open Sync Center from the ribbon menu (or the Open Sync Center command), tick what to capture, and press Capture N items.
  3. On another device, once your note sync has delivered the data folder: open Sync Center, tick what to apply, and press Apply N items.

Settings picker

How it works

Two planes, kept separate.

  • Local planeCapture copies every enabled item's settings files and companion folders into the store, applying each field's sharing and encryption rule; Apply lands the items you tick into this device's config dir. Direction (↑ capture, ↓ apply) comes from a per-device sync baseline, not file times, so the Sync Center can tell which side actually moved.
  • Transport plane — by default the store is plain vault content and rides your note sync; a fresh device discovers an arriving store on its own and offers an Adopt guide. Optionally (desktop), Pull/Push move the store against a git repo or another vault from the Sync Center's Remotes block.

The full tour — Sync Center anatomy, field rules, encryption, the install engine, remotes, walkthroughs — lives in the user guide.

Security & privacy

Everything the plugin does by default stays inside your vault: Capture/Apply copy files between your config folder and the data folder, and your own note sync moves them between devices. Three optional, desktop-only remote behaviors go further and are disclosed here:

  • Network use (git remotes only). If you add a git remote under Settings → Remotes, Pull/Push run the git binary against the URL you configured — that is the only network access the plugin ever performs. No telemetry, no other endpoints.
  • Files outside the vault (vault remotes and git temp clones). If you add a remote of type "Another vault", Pull/Push read/write the absolute store path you configured (typically another vault's data folder). Git pushes additionally use a temporary clone directory that is removed afterwards.
  • Access tokens (git remotes only). A token you link to a git remote is held in Obsidian's own keychain on that device and handed to git through the environment, never through the command line. Only the secret's name is written to the plugin's settings — the token itself never enters data.json, the store, or any error message. Config Sync never sends the remotes list anywhere either (it is a locked this-device field), so the name reaches another device only if your own vault sync copies the plugin's data.json; each device links its own token, or none at all.

All three are inert until you configure a remote, and never run without an explicit Pull or Push from the Sync Center.

Documentation

  • User guide — every behavior in one place: the Sync Center, field rules, sensitive settings, transport, walkthroughs.
  • Architecture — code map and invariants, for contributors.
  • Design system — the UI's tokens, icon vocabulary and component rules.
  • schema/ — JSON Schemas documenting every persisted shape (data.json, the store lock, local storage, run history).

Development

See CONTRIBUTING.md for setup, commands, the dev-vault smoke workflow and the release process. Develop against a dedicated test vault, never a real one.

License

MIT