Build Obsidian Sync
YESreplaces $5/mosaves $60/yrback to the verdict
Sync for your Obsidian vault using git: a watcher commits and pushes after you stop typing, pulls with rebase on a timer, never loses either side of a conflict, refuses to push a suspicious mass deletion, and a status command tells you where things stand. Your phone uses a git client against the same repository.
Before step 1
Everything below is assumed from the first step. Tick each one when you actually have it, not when you plan to.
- installfree
Why Every step below is a command you type or a file you edit.
Get it VS Code (code.visualstudio.com), Cursor or Zed. Open a folder for the project and use the editor's built-in terminal. open ↗
Verify
You can open a folder and run a command in its terminal - installfree
Why History for your code, and the way most hosts deploy.
Get it Install from git-scm.com or with your package manager, then run git init in the project folder once it exists. open ↗
Verify
git --version prints a version - have readyfree
Why You are about to automate commits in it. Take a plain copy before Phase 1 so nothing is at risk while you learn.
Get it Copy the vault folder to an external drive or a zip.
- accountfree
Why The remote is the sync point. Private, because these are your notes.
Get it Create an empty private repository. For pushing without passwords, add an SSH key: ssh-keygen -t ed25519, then add the public key in the host's SSH keys settings. open ↗
Verify
ssh -T git@github.com greets you - have readyfree
Why Every phase is tested across two devices; one machine cannot test sync.
Get it Another computer, or a phone with a git client.
- installfree to about $20 one-time
Why Phase 6: the phone reads and writes the same repository.
Get it Working Copy on iOS (one-time purchase for push), MGit or GitJournal on Android. open ↗
Environment variables
These go in a .env file the app reads at startup. The pack's .env.example is this table as a file · copy it, never commit the filled-in version.
| Variable | Needed | Example | Where the value comes from |
|---|---|---|---|
VAULT_PATH | required | /Users/you/Notes | Absolute path to the vault. |
REMOTE | required | origin | Git remote name. |
DEBOUNCE_SECONDS | optional | 30 | Wait this long after the last change before committing. |
PULL_INTERVAL_MINUTES | optional | 5 | How often to pull with rebase. |
MAX_CHANGED_FILES | optional | 100 | Refuse to auto-commit a change touching more files than this. |
The build, in order
Repository hygiene
A vault that does not produce a diff just from being opened.
.obsidian/workspace*, .obsidian/cache, .trash/, .DS_Store. Keep the rest of .obsidian if you want settings to travel.
Files
.gitignoreterminalcd $VAULT_PATH && git init && git remote add origin git@github.com:you/notes.git
done when · tick each as it passesManual round trip
Do the loop by hand before automating it.
- terminal
git add -A && git commit -m 'notes' && git push -u origin main
- terminal
git pull --rebase
done when · tick each as it passesThe watcher
Debounced commits, timed pulls, one git operation at a time.
Debounce DEBOUNCE_SECONDS after the last change, git add -A, commit with the changed-file count, push. Pull --rebase on start and every PULL_INTERVAL_MINUTES. Take a lock file so a commit never races a rebase.
Files
vaultsync.sh- terminal
systemctl --user enable --now vaultsync.timer
done when · tick each as it passesConflicts, without data loss
Both versions survive, the vault is never left mid-rebase, the daemon keeps running.
done when · tick each as it passeswatch out- Test this before trusting the sync with anything you care about.
Status and safety
Mobile and second machine
Documentation only: a phone and another computer set up from the README.
Files
README.mdWorking Copy on iOS, MGit or GitJournal on Android.
done when · tick each as it passesOperate itproduct builder
Only for the careful path: know when sync stops, keep an off-git backup, encrypt if the remote should not read your notes.
A cron job that checks and posts to ntfy or a webhook.
Decide this consciously; do not half-build encryption.
done when · tick each as it passes
That is the whole plan for Obsidian Sync. What it deliberately does not cover is below · check the gaps before you call it a replacement.
- An encrypted-vault workflow by default; it is a different design with mobile costs.
- A version-history UI; git log is the history.
- Mobile beyond configuring an existing client.
- official mobile sync polish
- conflict handling
- version history UI
- encrypted vault workflow
- Obsidian support
- A small web viewer of the repository for read-only access anywhere
- Scheduled snapshots tagged by week
Need the files? The project pack on the verdict page hands your agent the whole brief · more notes & knowledge.