Vault off the Pi
Photo by Getty Images on Unsplash
CouchDB is off the Pi4 and running on the GMKtec. The Obsidian vault followed it.
With GMKtec CouchDB confirmed stable past the 24-hour mark, I cut the vault over.
Before → after
- Pi4: CouchDB (docker stop couchdb)
- SSHFS mount: ~/pi-vault (launchd unloaded)
- pipeline.py (launchd unloaded)
- com.user.sshfs-pi4.plist
- com.user.claude-pipeline.plist
- GMKtec: CouchDB — database: vault
- ~/vault (local on Mac, no mount)
- Self-hosted LiveSync (Mac + iPhone)
- Setup URI cloned to iPhone
Migration steps
While SSHFS was still mounted, opened the old pi-vault in Obsidian, grabbed the LiveSync Setup URI from its settings. Created ~/vault on the Mac and opened it as a fresh Obsidian vault. Installed Self-hosted LiveSync, pasted the URI, pointed it at the GMKtec CouchDB instance, and waited for sync to settle. Note count matched across Mac and iPhone.
Then the teardown — sequence matters:
Data path — new vs old
| Old | New | |
|---|---|---|
| Vault location | ~/pi-vault (SSHFS over SSH) | ~/vault (local) |
| CouchDB host | Pi4 192.168.x.x:5984 | GMKtec 100.x.x.x:5984 |
| Sync mechanism | SSHFS mount + pipeline.py | Self-hosted LiveSync |
| iPhone access | Tailscale → Pi4 SSHFS (fragile) | Tailscale → GMKtec CouchDB |
| Failure mode | Mount drops on Mac sleep | CouchDB container restart |
The Pi4 is no longer in the data path for anything active.
What this unblocks
The vault is on infrastructure I control end-to-end. Next: Templater, Linter, Dataview, MetaBind, and Local REST API go in, along with the checked-in linter/data.json config and Templater folder mappings. Once those are configured the vault becomes the structured input layer for the agent pipeline.