Appearance
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)
| Agent | Reason |
|---|---|
health-export | Apple Health data only accessible on Mac |
health-normaliser | Processes health exports locally before push |
fit-sync | Apple Fitness integration |
screen-time-extract | macOS Screen Time API |
screen-time-poller | Same |
zoro-watcher | Watches local fitness CSV exports |
vault-sync-z2 | Pushes vault from Mac → Z2 (source is Mac) |
studio-dev | Local dev server for browser UI |
cloudflared-tunnel | Exposes local Mac services externally |
Already migrated
| Service | Date | Notes |
|---|---|---|
poll-monzo | 2026-06-07 | systemd timer on Z2 (pending credential seed) |
collector-bulma | 2026-06-07 | systemd service on Z2 (:8090) |
bulma-api | 2026-06-08 | systemd service on Z2 (:8081). Mac plist disabled. |
weather-api | 2026-06-08 | systemd service on Z2 (:8082). Mac plist disabled. |
email-intelligence-api | 2026-06-08 | systemd service on Z2 (hinata-email-api). Mac plist disabled. |
token-burn-continuous | 2026-06-08 | systemd 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)
| Agent | Reason |
|---|---|
refresh-tasks | Mac-local vault reads, BSD stat/md5, local Studio build + Cloudflare Pages deploy |
calendar-nudge | Apple EventKit (macOS-only). Script acknowledges Mac-bound dependency. |
connection-restore | Flushes Mac-only /tmp/hinata-pending/ retry queue. Z2 Telegram bot has native retry. |
Evaluate / Retire
| Agent | Decision needed |
|---|---|
call-slot-planner | One-shot at boot? May be obsolete |
eod-calendar-sync | Could run on Z2 — depends on Google OAuth token location |
inbox-redactor | Depends on iCloud inbox access (Mac-only path) |
pr-progression-trigger | GitHub webhook — could be Z2 if webhook infra exists |
Migration protocol
- For each agent in "Migrate" list: create equivalent systemd service/timer on Z2
- Test Z2 version alongside Mac version for 48 hours
- Disable Mac LaunchAgent (rename
.disabled) - After 7-day stability: delete Mac plist