Skip to content

LaunchAgent → Z2 Migration Plan

Per supreme-court/runtime/hinata-architecture: Z2 is the data plane/runtime. Mac is the workstation, not a runtime dependency. Long-running services and scheduled data tasks should live on Z2.

Stay on Mac (hardware-dependent)

AgentReason
health-exportApple Health data only accessible on Mac
health-normaliserProcesses health exports locally before push
fit-syncApple Fitness integration
screen-time-extractmacOS Screen Time API
screen-time-pollerSame
zoro-watcherWatches local fitness CSV exports
vault-sync-z2Pushes vault from Mac → Z2 (source is Mac)
studio-devLocal dev server for browser UI
cloudflared-tunnelExposes local Mac services externally

Already migrated

ServiceDateNotes
poll-monzo2026-06-07systemd timer on Z2 (pending credential seed)
collector-bulma2026-06-07systemd service on Z2 (:8090)
bulma-api2026-06-08systemd service on Z2 (:8081). Mac plist disabled.
weather-api2026-06-08systemd service on Z2 (:8082). Mac plist disabled.
email-intelligence-api2026-06-08systemd service on Z2 (hinata-email-api). Mac plist disabled.
token-burn-continuous2026-06-08systemd timer on Z2 (fixed — was SSHing to Mac, now runs natively). Mac plist still active for stability window.

Reclassified: stays on Mac (investigated 2026-06-08)

AgentReason
refresh-tasksMac-local vault reads, BSD stat/md5, local Studio build + Cloudflare Pages deploy
calendar-nudgeApple EventKit (macOS-only). Script acknowledges Mac-bound dependency.
connection-restoreFlushes Mac-only /tmp/hinata-pending/ retry queue. Z2 Telegram bot has native retry.

Evaluate / Retire

AgentDecision needed
call-slot-plannerOne-shot at boot? May be obsolete
eod-calendar-syncCould run on Z2 — depends on Google OAuth token location
inbox-redactorDepends on iCloud inbox access (Mac-only path)
pr-progression-triggerGitHub webhook — could be Z2 if webhook infra exists

Migration protocol

  1. For each agent in "Migrate" list: create equivalent systemd service/timer on Z2
  2. Test Z2 version alongside Mac version for 48 hours
  3. Disable Mac LaunchAgent (rename .disabled)
  4. After 7-day stability: delete Mac plist