Docs Menu

Understanding Bonafide

Building Blocks

The architectural decisions behind Bonafide, and what each one makes possible.

What makes Bonafide worth building is the combination of several design decisions that work together. Each one is useful alone. They get more useful when they're combined, because they reinforce each other.

Each person has their own database. Most services keep everyone's data in one shared store with a user ID on each row. Bonafide gives every person a separate database. A breach exposes one person'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 means moving to a different host is a realistic option, so hosts have to keep earning the business.

The network is built on connections instead of addresses. Email, phone numbers, and usernames are all addresses. Anyone who learns one can try to reach you, which is why spam exists. In Bonafide, two people connect by exchanging a single-use code, and from then on they talk through keys that identify no one. There's no address for a stranger to find, so there's no route for an unwanted message or connection request. Because nothing in the system is an address tied to a host, people also aren't stuck with whatever address a legacy host gave them. And the system can support private communication because the router relaying messages holds nothing that identifies a person. It can't read the messages either.

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. Each Bonafide connection is independent, with its own keys, and what you present in it (a name, a photo) is set for that connection alone. The protocol never links two of your connections to each other. An app built on top can choose to let you tell people they're the same you, or choose not to. Either way, the decision is yours and the app's, not something the network does behind your back.

Connections have fine-grained access control. Most systems only offer two options: everything gets pushed to everyone, or others have to ask for it. In Bonafide, being connected only means two people can reach each other. What flows between them is controlled separately, per category of content, through subscriptions. You grant access to some things and not others, and content moves only when both sides have agreed. That makes room for a much wider range of apps while leaving people in control.

Access control extends through degrees of separation. When you share something, you decide how many steps beyond the original recipients it can go. If it travels, each person who receives it knows who handed it to them, and you control whether you can be identified beyond that first step. Someone several steps away may see an opaque code that they can't resolve to a person, unless they also happen to be connected to you directly. This is how introductions and trust can spread without a central authority brokering them. It's also the foundation for several kinds of verification, including verification built on 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. They aren't trapped inside any one app. Because of that, you can change hosts, use different apps, and bring everything with you. Nothing is held inside an app that keeps you stuck there.

The protocol is multi-layered. The base layer handles connections and access control, and it knows nothing about what's being shared. That makes it easy to support more than one domain. Our first applications are communication and sharing products, but the same model can carry second-layer protocols for other categories over time, such as marketplaces, games, payments, ride hailing, and delivery.

There's standardization at each layer. When a developer creates a new second-layer protocol, it gets shared back through the Bonafide Foundation so others can build with it. Publishing the contract is what lets independent apps interoperate, and it keeps the ecosystem improving together instead of fragmenting.

Connection-based doesn't mean peer-to-peer only. Bonafide can support public nodes, like businesses and publishers, without requiring the rest of the network to become public. A shop can have a presence that anyone may connect to, and your connections to friends stay private.

AI agents work inside the same model. Agents built on the network are bound by the same connection and access control rules as people. They're limited by who they can connect with, what information they can see, and what they can push out. That lets people build useful agents without the spam and unwanted data extraction that open access invites.