Self-hosted Obsidian vault sync for iPhone and iPad.
Your notes sync peer-to-peer over Syncthing, straight into Obsidian's iOS sandbox — no note cloud, no account, no tracking.
- Peer-to-peer & private — syncs directly between your own devices over Syncthing. No note cloud, no account, no tracking.
- Lands in Obsidian — files sync into Obsidian's iOS sandbox, where the app already looks for them.
- Pair by QR, resolve conflicts — connect your server in seconds; settle Markdown conflicts with side-by-side diffs.
- Server changes can wake your iPhone — optional Cloud Relay asks iOS to wake the app after the helper observes a server change. The activity timeline shows local sync activity, while Diagnostics keeps Relay, delivery, and local-data evidence separate.
VoiceOver and Dynamic Type throughout. Localized in English, German, Spanish, and Simplified Chinese. Independent project — not affiliated with Obsidian or Syncthing.
Syncthing runs on a machine you keep on; VaultSync joins as a peer and syncs into Obsidian. After a server change, the optional sidecar + Cloud Relay can request an iOS background wake-up; iOS decides whether and when VaultSync runs.
- Install VaultSync from the App Store.
- Pair your server — scan its Syncthing Device ID by QR (or paste it), then accept the connection in that Syncthing instance.
- Sync your vault — VaultSync detects your Obsidian vaults, connects the share, and runs the first sync. Open Obsidian; your notes are there.
- (Optional) Enable Cloud Relay for faster server→iPhone updates — see below.
Without it, VaultSync syncs server changes when you open the app. With it, Cloud Relay can request a background wake-up after your server changes — iOS still decides whether and when to run the app.
Subscribe in the app (monthly or yearly, at your local App Store price), then run this one line on the computer or NAS that runs Syncthing — the app shows it with a Copy button:
curl -fsSL https://vaultsync.eu/notify.sh | shThat's the whole setup — nothing to edit, no API key to copy.
The installer finds your Syncthing config, sets the right permissions, and starts the helper. The helper sends one startup wake-up request. Relay Diagnostics reports Relay-side request observation and wake-ups received on this iPhone as separate evidence; one does not prove the other. iOS controls delivery, and sending edits from your iPhone stays most reliable with the app open. The relay receives the routing data and StoreKit proof needed to verify access and route a wake-up — never your notes, file or folder names, or vault structure (PRIVACY.md).
🔧 Manual & advanced setup — Docker Compose, docker run, prebuilt binaries, NAS notes, --dry-run
- Skeptical of
curl | sh? Append-s -- --dry-runto preview every action without changing anything, or read the script first. - Syncthing config in a non-standard place (typical on Synology/QNAP)? Prefix the installer with the path:
curl -fsSL https://vaultsync.eu/notify.sh | SYNCTHING_CONFIG=/path/to/config.xml sh - Prefer to run things yourself? The manual & advanced guide covers Docker Compose, a paste-and-go
docker run, prebuilt binaries for Linux/macOS/Windows, every environment variable, and NAS specifics.
| Requirement | Details |
|---|---|
| iPhone / iPad | iOS / iPadOS 18 or later |
| Obsidian | Installed on iOS / iPadOS |
| Syncthing | Running on a Mac, Linux machine, NAS, or homeserver |
| Cloud Relay | Optional — monthly or yearly in-app subscription |
| vaultsync-notify | Optional Docker sidecar for server-side wake-ups |
Requires Xcode 26+, Go 1.26+, gomobile, XcodeGen, Make.
git clone https://github.com/psimaker/vaultsync.git && cd vaultsync
cd go && make patch && make xcframework && cd .. # Go xcframework (~160 MB, bundles Syncthing)
cd ios && xcodegen generate && open VaultSync.xcodeprojFull build, signing, and test steps: docs/setup.md.
| Platform | iOS / iPadOS 18+ |
| Language | Swift 6, SwiftUI |
| Sync engine | Syncthing 2.x via Go/gomobile .xcframework |
| Background | BGAppRefreshTask + BGContinuedProcessingTask (iOS 26+ when available) |
| Push | APNs silent push via Cloud Relay |
| License | MPL-2.0 |
| Doc | What it covers |
|---|---|
| docs/setup.md | Build and development setup |
| docs/troubleshooting.md | Common failures and exact fixes |
| docs/architecture.md | Codebase structure and sync strategy |
| docs/relay-spec.md | Cloud Relay protocol reference |
| docs/instant-upload.md | Instant iPhone → server uploads via a Shortcuts automation |
| notify/README.md | Notify sidecar setup and diagnostics |
| PRIVACY.md · TERMS.md | Privacy policy and license terms |
| CONTRIBUTING.md | How to contribute — setup, tests, and PR conventions |
| SECURITY.md · CODE_OF_CONDUCT.md | Vulnerability reporting and community standards |
Filing a bug? Include your iOS and VaultSync versions, your server's Syncthing version, whether Cloud Relay and vaultsync-notify are running, and relevant logs or screenshots.
MPL-2.0 — use, modify, and distribute under the Mozilla Public License 2.0.
Built on Syncthing (the file-sync engine) and gomobile (which embeds it on iOS), for Obsidian. VaultSync is independent and not affiliated with, endorsed by, or sponsored by Obsidian or Syncthing.