The split
Architecture
Your conversations stay on your Mac.
Your iPhone gets the thin relationship layer through your own iCloud. Tend's account and support layers do not receive raw message text or your contact graph.
What moves
The companion layer.
Mac
Messages
message bodies, contacts, scan index
iCloud
Thin layer
names, timing, drift, preferences
iPhone
Nudges
who to reach out to and when
On the Mac
What stays local.
Message bodies
Tend reads
chat.db locally with Full Disk Access and never copies the text anywhere else.Attachments
Photos, links, and files inside iMessage are never opened by Tend.
Contacts
Names, numbers, and emails are read from Contacts.app on the Mac so the graph looks human instead of raw handles.
Scan index
The per-thread cadence index is written to the Mac's local store. No Tend-hosted copy.
On your iPhone
What syncs through your iCloud.
Display name
The same display name your Contacts.app already holds, synced through your private CloudKit container. Tend never sees it.
Last-talked timestamps
A handful of dates per contact. Not the messages themselves.
Tier signal
Close / connected / cooling / missing / lost touch. A small enum, not a message archive.
Preferences
Muted, pinned, or "not this one" choices so the companion layer stays in sync.
What Tend can't see
No central contact graph.
Tend's server-side account and support layers stay separate from the relationship graph. If you turn off iCloud, Tend stops syncing and the Mac keeps working.
Analytics
Narrow and opt-in.
I use PostHog for funnel shape only. Free-text is never sent. The proxy is allowlist-enforcing, and analytics is opt-in at signup and in the app.