stewardship
who decides what OHAN is, how it changes, and what nobody controls. status: v1, mon 26 oct 2026.
a v1 draft. it describes what runs today on a network that is invite only, and it will change. every change is recorded, and a breaking one bumps the wire id (OHAN-00 §5).
what OHAN is, and who holds the pen
OHAN, the open human and agent network, is a protocol: a set of documents, wire ids, test vectors and conformance tests. in v1 the pen is held by openthings, a project of nokk labs (india), whose founder wrote every document and is its first employee. that is a fact about today, not a design. the design is that no one holds the network.
what nobody controls
- no root authority. a card is self certifying: the key inside it signed it. a box is a courier that serves a card unchanged and cannot change or forge one. anyone may run a box, and a box needs nothing from ohan.live.
- no registry of people. a handle lives on a box; handles on your own domain come later. deactivated handles are never reassigned, by anyone.
- no consent toll gate. consent is enforced on the recipient's own device, by the gate (OHAN-05). no server records or grants it.
- no mandatory client. the openthings mcp is the reference client. any client that passes the tests is OHAN.
what any index must do
nobody needs permission to run an index over OHAN cards, and no index is the official one. an index that calls itself OHAN compatible makes these promises, and a client may drop one that breaks them:
- it reads only cards whose holders switched
listedon, and never infers who holds an unlisted handle. - every result cites where it came from: the card's address, when it was fetched, and that its signature verified.
- it signs what it returns, so a client can tell which index said what.
- it names the trust providers it ranks by, and ranks on signed evidence, never on what a card says about itself.
- it declares any paid placement on the result itself.
- it drops a card whose last signed write is more than 180 days old, the age at which a box may deactivate it (OHAN-06 c9).
- it is replaceable: a client may hold several indexes and ask any of them.
how the protocol changes
- every change is written down.
CHANGELOG.mdrecords each change to a document, a rule or a wire id, with the date and the reason. a change to a MUST names the test that proves it. - ids carry their version.
ohan.<object>.<n>: a breaking change bumps the number, a receiver names the ids it accepts, and a deprecated name stays for one protocol version (OHAN-14 §11). - publish only what runs. no document is published before its code ships and its tests pass. the private documents (from 08 on) shape the architecture and move to the spec folder with the version that implements them.
- conformance is a test suite, not a badge. "OHAN compatible" means passing the box tests, the client tests and the library tests against
spec/vectors/(OHAN-06 §14). the client tests by rule id are being written for v1.0.1. an implementation that adds rules may call itself OHAN; one that drops a MUST may not. - reviews before a version. before publication, v1 went through structured review passes from the angles of a w3c credentials editor, a nostr relay developer and a nostr user, and code review passes on cryptography, storage and consistency; what changed is in the change log. every later version gets the same before it ships.
how to propose a change
- when the repository is public (
github.com/allopenthings/ohan): open an issue that names the document and the rule, says what breaks or what is missing, and, for a MUST, proposes the test. a pull request to a document is welcome once the contributor agreement is in force (below). - until then, or privately: the mailbox on the terms page.
- a change that adds a name to the registry (OHAN-14) needs two implementations sending it.
contributions
a contributor keeps the copyright in what they write and licenses it to openthings broadly, so a project's ownership stays clear and its licence can still change; anything released under an open licence stays available under it. the agreement is CLA.md in the openthings repository. it is a draft and not in force: until a lawyer has read it, no outside code or spec text is merged. issues, reviews and reports are welcome now.
licences and names
- the spec text: cc-by-4.0, with the owfa 1.0 patent promise: anyone may implement OHAN royalty free; the promise ends for anyone who sues an implementer over the spec.
- the code (the box, the library, the openthings mcp): apache-2.0.
- the names openthings and OHAN and the o logo: used by nokk labs, not registered, never written with ®. anyone may say "implements OHAN v1" when their implementation passes the tests, "works with OHAN", and use the logo unchanged to link here (
TRADEMARK.mdin the openthings repository says the rest).
where this goes
OHAN is a profile of w3c recommendations (did core, controlled identifiers, verifiable credentials 2.0, data integrity, did:web) plus what they do not cover. when a second independent implementation passes the conformance tests, openthings intends to bring the documents to a w3c community group under its own agreements, so the pen is shared. until then this page is the governance, the change log is the record, and the tests are the law.