Specs
Specs
The Bonafide protocol specification and its domain vocabularies.
The specification is public and still a draft. The current version is v0.1.
What v0.1 means. The version number is deliberate. The specification hasn't yet gone through a full round of public review, and breaking changes are still possible. We expect to release v1.0 once it's completed at least one full cycle of the change process with meaningful participation from outside developers and contributors. That's a milestone, not a date.
Specification chapters
| Chapter | What it covers |
|---|---|
| 00 Overview | Terminology and the two-layer model. |
| 01 Messaging | The message envelope, deduplication, and how messages are routed to handlers. |
| 02 Connections | The connection handshake, key exchange, and the router's role. |
| 03 Cross-Domain | Extending one connection across multiple apps and domains. |
| 04 Access Control | Which content a connection may receive, and the subscription mechanism that enforces it. |
| 05 Content Model | The contract content types follow, and how a domain declares its own. |
| 06 Propagation | Hop-limited resharing, and how update and delete ordering is resolved. |
| 07 Security | Cryptography, the threat model, and trust boundaries, including one known gap. |
| 08 Versioning & Governance | How the spec is versioned, how changes are made, and who stewards it. |
| 09 Identity & Credentials | The local credential a person uses to reach their own database. |
| Appendix: Worked Examples | A connection handshake and a cross-domain subscription traced against concrete example data. Non-normative. |
Domain vocabularies
| Domain | Status |
|---|---|
Pools (bonafide.pools) |
Draft v0.1. Versioned separately from the base spec. |
Messaging (bonafide.messaging) |
Not yet published. |
Reference implementation
A reference implementation exists today: a Bonafide agent library and a router service. It powers Pools. The specification repository defines the protocol that implementation follows, and doesn't contain the implementation itself.
Not in v0.1
Two things aren't specified yet. One is per-field schema subsets, meaning negotiating a reduced content shape for each connection. The other is moving an account between independently operated hosts. Both are known future directions.
Contributing
Anyone can open an issue or pull request. A proposal should name the chapter and section, describe a concrete scenario where two compliant implementations would disagree or a reader can't tell what's required, and say what, if anything, in the spec already touches on it. This keeps the process useful without being flooded by low-effort or generated submissions. How a proposal was drafted doesn't matter, but showing that you've worked with the spec does. Open an issue →