tend
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.

The split

Where the data lives.

Message bodies
Mac only
Contacts
Your devices
Relationship layer
Own iCloud
Tend graph server
None

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.