← Journey Phase 1B — Vault migration

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

Removed
  • 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
Added
  • 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

OldNew
Vault location~/pi-vault (SSHFS over SSH)~/vault (local)
CouchDB hostPi4 192.168.x.x:5984GMKtec 100.x.x.x:5984
Sync mechanismSSHFS mount + pipeline.pySelf-hosted LiveSync
iPhone accessTailscale → Pi4 SSHFS (fragile)Tailscale → GMKtec CouchDB
Failure modeMount drops on Mac sleepCouchDB 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.