NAOMS for developers

← Back to overview

Building block

Contacts & friendships

A contact list built on real handshakes between people, not imported address books.

What a person notices

There is no button that scans a phone's address book and adds a pile of people as contacts. Someone becomes a contact because both sides went through an actual invite and accept.

The same person can look different to different contacts. That is not a bug or inconsistency; each relationship shows its own version of you.

If a contact relationship is ever exposed to someone who shouldn't see it, that alone does not hand over a person's other contacts or their real identity.

What you get as a developer

A contact or friendship is a signed invite-and-accept relationship between exactly two people, with its own private channel that nobody else can read.

1

Invite, accept, verify, revoke

The relationship follows a real lifecycle: one side invites, the other accepts, both sides can verify it, and either side can revoke it later. It is not an open link anyone can use to join.

2

Each side sees a pseudonym, not the real identity

A friendship is a relationship type where the other party reads it, so a person's real root identity is deliberately not shown there. Instead each side computes a pseudonym scoped to that one relationship.

3

It fails closed

If a device cannot yet compute the pseudonym for a relationship, the system refuses to fall back to showing the real identity instead. It would rather show nothing than leak who someone is.

4

Relationships don't cross-identify

Because the pseudonym is scoped per relationship, someone who compromises or observes one of your contact relationships cannot use it to work out who your other contacts are.

Local-first: the invite, the accept, and the private channel between two people do not pass through a server that could read or index them.

How it connects

Identity

The pseudonym a contact sees is derived from a person's identity, but never reveals the identity itself.

Relationship Cards

What two people exchange when they meet and form a contact relationship in the first place.

Trust graph

A contact relationship is one of the links a trust graph can carry, letting trust travel person to person rather than through a central directory.

Hives

A group is built out of many of these same one-to-one relationships rather than a separate membership system.

Related