2026-07-03 Obsidian MCP Cutover to Athena

What I set out to do

Execute the cutover runbook from Old MacBook Home Server Setup: move the public Obsidian MCP connector (obsidian-mcp.achhina.com) off the OCI box onto athena, which serves its iCloud vault copy directly and kills the 30s+30s git-polling latency.

What I actually did

  • Preflight from atlas: OCI box reachable, tunnel token present in ~/.config/secrets/.secrets. athena needed ssh-copy-id first (done manually), plus accepting its new host key.
  • Stopped the OCI tunnel connector. Deviation: systemctl disable fails on NixOS (units in the read-only store), so persistent-off = systemctl stop + renaming /etc/obsidian-mcp/tunnel.envtunnel.env.disabled (unit can’t start without its EnvironmentFile; secret preserved). gitsync.timer left running for GitHub backups.
  • Piped the CF_OBSIDIAN_TUNNEL_TOKEN line over SSH to athena; the dormant tunnel agent self-started via launchd PathState after a kickstart — 3 QUIC connections registered.
  • Verified end-to-end via the claude.ai connector: Anthropic-IP requests (160.79.106.x) in athena’s bridge log, and a connector-written test note propagated athena → atlas iCloud in seconds.

What was striking

  • First e2e test was a false positive: the Claude Code session’s obsidian MCP server is the local bridge on atlas, so the write never touched the tunnel — caught it because athena’s bridge log mtime hadn’t moved. The UUID-named claude.ai connector server is the one that exercises the real path.
  • NixOS’s read-only unit store made the runbook’s disable --now impossible; the EnvironmentFile rename is a tidy persistent-off that doubles as secret preservation.

Follow-ups (same session)

  • OCI box end-state decided: keep idling as a $0 fallback (tunnel disabled, gitsync backup running; secrets in /etc/obsidian-mcp/ are non-reproducible, so idling preserves them).
  • atlas’s obsidian-git intervals dropped from 30s back to 15m (obsidian.nix, applied via hm switch) — git is backup-only now that athena serves the iCloud copy directly. Obsidian needs a restart to pick it up.

Top 3 tomorrow

  1. Update dotfiles: hosts/obsidian-mcp/ and atlas’s runTunnel=false comment describe a retired topology.
  2. athena health checks (vault mtime advancing, external uptime monitoring) — last open checklist item.
  3. Commit the obsidian.nix interval change.

Old MacBook Home Server Setup · Remote Obsidian MCP Cloud Host · 2026-06-24 Remote MCP Migration Complete