Understanding Bonafide
FAQ
The basics
What is Bonafide?
See What is Bonafide?.
Is Bonafide an app?
Think of how email works. Email uses open protocols, and Gmail is one of many apps that use them.
Is this a blockchain or a cryptocurrency?
Each person has their own database, and information travels between connections using encrypted messages relayed by routers. There's no blockchain involved.
Is Bonafide decentralized?
Each person's data is held in a separate database, and connections don't depend on a central identity system. But Bonafide Technologies Inc. currently operates the hosting and router infrastructure.
Router federation will allow independent organizations to host and interoperate. We're targeting the end of 2026 for that work, with individual self-hosting planned for later.
Who's behind it?
We plan to establish a non-profit Bonafide Foundation to take over stewardship of the protocol, with broader participation in its development.
See Foundation.
How is it different from AT Protocol, ActivityPub, or Solid?
Bonafide is built around connections instead. Two people establish a connection by exchanging a code, without needing a public address that strangers can look up. This changes how people can be contacted, how privacy works, and how unwanted communication can be prevented.
It doesn't mean everything has to be private. Businesses, publishers, and people who want a public presence can still have one.
Bonafide also supports multiple domains, so the same underlying connections and access control can be used for messaging, sharing, marketplaces, and other kinds of applications.
We think these differences make Bonafide useful for a particularly broad range of applications. The other projects are doing important work too, and we're glad they exist.
What does "bonafide" mean?
Bona fide comes from Latin and means genuine or in good faith. It pretty nicely sums up the kind of technology we're trying to build.
Privacy and security
Who can read my messages?
The two parties establish their shared secret using X25519, a form of Diffie-Hellman key exchange, and content is encrypted using AES-256-GCM. Each connection has its own keys, and the router doesn't have the keys needed to read the messages it relays.
There's a current limitation involving the first two messages of the connection handshake, which we explain below.
What can the router see?
It looks up an opaque key and a domain, forwards the message, and has no key to read it.
It holds nothing that identifies a person.
Is there a weak spot?
The first two handshake messages are encrypted using a key shared across deployments, because the connection-specific secret hasn't been established yet.
The router can't read those messages, but another deployment holding that shared key could potentially decrypt them if it had access to the traffic.
Messages exchanged after the handshake use connection-specific keys and aren't affected by this limitation.
The planned fix is to include key material in the connection code itself. We're targeting the end of 2026 for that change, alongside router federation.
What happens if a host is breached?
This reduces some of the risks associated with large centralized databases, including mistakes in access controls that expose one user's data to another.
But more importantly, it makes it unattractive to hackers. An attacker gets one person's database at a time. When everyone has their own database, there's no shared users table to dump and no way to pivot from one person's data to another's.
Credentials live inside the same isolated database, so there's no central login store to steal either. Even if an attacker gets someone's connections, they can't send or receive data, because that has to go through the router, which won't communicate with untrusted actors.
It's simply way too much work for a hacker for very little reward.
Can anyone send me a message?
There are no public addresses that strangers can use to contact you. A connection requires an exchange of a code, and you control how many times a code can be used.
You can publish a code if you want people to be able to connect with you. A business might do that, for example.
Either person can disconnect at any time. Once the connection ends, it can no longer be used to contact the other person. They'd need another valid code to reconnect.
That's quite different from blocking someone on email or social media. Blocking leaves the address or account in place. With Bonafide, disconnecting removes the connection itself.
What if I remove a connection?
The protocol's removal process deletes the content shared over that connection from both sides.
Can someone I shared something with copy it?
It can't stop a person from taking a screenshot of what they were allowed to see, but that's true of almost every system you use with other people you trust.
What the protocol does guarantee is that apps honor the hop limit you set, so content doesn't travel further inside Bonafide than you allowed.
Using Bonafide apps
Do I need an account?
It's not shared with other people and isn't used to establish connections. If you use multiple Bonafide apps with the same database, each app has its own login.
How do I connect with someone?
The other person enters the code, and the apps establish the connection.
You don't need to exchange phone numbers, email addresses, or usernames.
Can I use more than one app with the same data?
Your data and connections live in your database, so another compatible app can work with the same information.
Can I change hosts?
Today, Bonafide Technologies Inc. is the only hosting provider. Router federation will allow other organizations to host, but moving an account between independently operated hosts isn't specified in v0.1.
Account migration is a future piece of work. We'd rather be clear about that than imply it already works.
What's Pools?
You create private spaces for sharing different things with different people, with conversations under each post. There are no public counts, ads, or algorithms deciding what you see.
Pools is available on iOS and Android.
Building on Bonafide
What do I need to build an app?
The library handles much of the underlying complexity of the decentralized system, so you can spend more time building the app itself.
See Getting Started.
What language is the reference library written in?
Do I need to read the whole spec?
The specification is there when you need the technical details or want to understand exactly how something works.
Can I run my own router?
Router federation will allow independent organizations to operate their own routers and interoperate with the rest of the network.
What's a domain?
When different apps use the same domain, they can understand and work with the same kinds of information.
Can I define a new domain?
See Adding new domains.
How is Bonafide licensed?
See License.
The bigger picture
What happens with AI agents?
An agent needs an authorized connection to interact with someone. What it can access, receive, or share through the protocol is governed by the permissions on that connection. That limits opportunities for unsolicited communication and unrestricted data collection through the network.
Is there a Bonafide Foundation?
The Foundation would manage the change process and allow broader participation in developing the protocol.
We're looking for sponsors and donors to help make that happen.
How do I contribute to the spec?
We ask contributors to read the relevant parts of the specification and explain the problem they're trying to solve, so proposals can be considered in the context of the overall design.
See the change process.