Skip to main content

Your identity on the protocol

Every account on DFOS has a protocol identity: a permanent identifier that looks like

did:dfos:93n4d6936c3ct6r3k7477dn4z89c39h

The identifier isn't assigned by a database — it's derived from the cryptographic fingerprint of the identity's first signed record. Behind it sits an append-only chain of signed operations that carries the identity's keys. Anyone can replay that chain and confirm the identity is intact and the identifier really belongs to it. Spaces and groups have protocol identities of the same kind.

Aside from the public-profile setting (below), you don't see any of this in the app today — it works underneath, and it's visible through the public relay.

Signed profiles

Your profile has a life on the protocol too: it's recorded as a content chain, where each edit becomes a signed operation committing to the exact profile document — so a reader can verify what your profile says and that you (well, your identity's keys) said it.

Your profile is public by default, and the "public profile" setting in the app lets you opt out:

  • While it's public, your identity carries a signed, standing read credential — the protocol's way of saying "anyone may read this" — and your profile is readable at the relay.
  • Turning it off signs a revocation, and public readability ends.

What's in the document is only what's on your profile — name, bio, links. Your email and your space memberships are never part of it.

What this buys you

Attribution that doesn't depend on us. A profile fetched from a relay can be verified end-to-end with open-source tools — the signatures, the identity chain, the document — with no DFOS account and no trust in DFOS servers. Today that covers identities, profiles, and public posts — each publicly readable post is its own signed content chain — and more of what you make on DFOS will ride the same rails over time.