Understanding Bonafide
Building Blocks
The architectural decisions behind Bonafide, and what each one makes possible.
What makes Bonafide interesting is the combination of several design decisions that work together. Each has its own benefits, but they become more useful when combined.
Each person has their own database
Most online services store everyone's information together, distinguishing users through account IDs and access rules. Bonafide gives each person a separate database.
This limits the scope of a breach, which can only affect one user's data instead of a whole user base, and data can't leak between users because there's no shared structure to leak through.
It also makes moving to a different host more practical. As independent hosting becomes available, providers will have to keep earning their customers' business rather than relying on the difficulty of leaving.
The network is built on connections instead of addresses
Email addresses, phone numbers, and usernames give people a way to reach you. The trouble is that anyone who gets hold of one can try.
Bonafide works differently. Two people establish a connection by exchanging a single-use code. From then on, they communicate through cryptographic keys associated with that connection.
There isn't a public address that strangers can use to send you unsolicited messages or connection requests.
Connections also aren't tied to addresses belonging to particular hosts, which makes portability easier. Messages are encrypted, and the router doesn't need to know the personal identities of the people communicating to forward them.
Connections carry different qualities of identity
In real life, you're a slightly different person to your coworkers than to your family, and nobody finds that strange.
Bonafide treats each connection independently. It has its own keys, and you can present a different name, photo, or other information within that relationship.
The protocol doesn't require a shared public identity linking your connections together. Applications can give people ways to identify themselves across relationships when they choose to.
This allows a person's online relationships to reflect the different contexts in which they know people.
Connections have fine-grained access control
Being connected to someone doesn't mean they automatically get access to everything.
Bonafide separates the connection itself from what can be shared through it. Access is managed through subscriptions, with permissions for different categories of content.
That means people can agree to exchange certain kinds of information without granting access to everything else.
It's an important distinction because different applications need very different sharing arrangements. The same underlying connection model can support those differences without giving each app control over the relationship itself.
Access control extends through degrees of separation
Sharing doesn't always stop with the people you're directly connected to.
Bonafide lets someone control how far information can travel beyond its original recipients. As it moves, each recipient knows who shared it with them, while the originator can control whether their identity is revealed further along the chain.
Someone several steps away might receive information without knowing who originally created it.
This makes it possible to support introductions and forms of trust that extend through personal networks without requiring a central service to broker every relationship.
It also creates a foundation for different approaches to verification, including webs of trusted verifiers.
Data and control sit with the user, not the app
Your data, connections, and access permissions live in your own database rather than belonging to an application.
That means different apps can work with the same underlying information and relationships. You don't have to rebuild everything each time you want to try something different.
The architecture is also designed to support changing hosting providers without losing that information.
Apps can compete on what they do and how well they do it, rather than controlling access to the relationships and data people have accumulated.
The protocol is multi-layered
Bonafide separates connections and access control from the particular kinds of information being exchanged.
The base layer doesn't need to know whether you're sharing a photo, sending a message, or interacting with a marketplace.
Different domains can build on that common foundation. Our first applications focus on communication and sharing, but the architecture can support most other online categories, from gaming to payments to ride hailing and delivery.
There's standardization at each layer
Interoperability requires more than a shared network. Applications also need to agree on what the information they exchange means.
That's why Bonafide uses published domain definitions that other developers can implement.
Our plan is for the Bonafide Foundation to help steward these specifications, so developers can build compatible applications rather than creating isolated systems every time.
The more applications that use common definitions, the more useful the network becomes.
Connection-based doesn't mean peer-to-peer only
Bonafide can support public nodes, including businesses and publishers, without making the rest of the network public.
A shop, for example, can make itself available for anyone to connect to, while the relationships you have with friends and family remain private.
This lets Bonafide support public-facing services and private personal relationships within the same architecture.
AI agents work inside the same model
AI agents built on Bonafide operate under the same connection and access control rules.
Their ability to communicate, access information, and share content is governed by the connections and permissions available to them.
That creates opportunities for useful agent applications without automatically giving them unrestricted access to people or their information.
The protocol provides boundaries for how agents interact with the network, rather than leaving every application to invent those rules for itself.