The proof is public.
The content is private.

Ed25519 signed DAGs · content-addressed CIDs · W3C DIDs · MIT License

Two surfaces.

The proof surface is public — signed chains of cryptographic commitments, verifiable by anyone with a public key and any standard Ed25519 library. The content surface is private — documents live in member-governed spaces, visible only to participants.

The protocol defines the proof surface. It sees hashes, never documents. You can prove you authored something without revealing what it is.

Signed DAGs.

Identity is a directed acyclic graph of Ed25519-signed operations — key rotations, content commitments, recoveries — rooted at a genesis. Forks are valid. Convergence is deterministic: highest timestamp, lexicographic CID tiebreaker. No consensus needed.

The did:dfos identifier derives from the genesis hash — self-certifying. Content chains use the same mechanics. The protocol doesn't know what a "post" is. Application semantics are a separate concern.

Verifying relays.

Web relays are HTTP endpoints that independently verify every operation on ingestion. No trust between relays. Three peering behaviors compose the network: gossip, read-through, and sync. There are no relay roles or hierarchy — topology is emergent.

Verification is a pure function. Given a chain and a public key, any Ed25519 library returns valid or invalid. Offline, in any language. The reference implementation is verified across TypeScript, Go, Python, Rust, and Swift.

genesis
rotate
commit
commit
head

Install the CLI.

One binary. Keys in your OS keychain. Local-first by default. Full documentation.

curl -sSL https://protocol.dfos.com/install.sh | sh

Also available via brew install metalabel/tap/dfos and docker pull ghcr.io/metalabel/dfos

Quickstart
# create your identity
dfos identity create --name myname

# publish your first post
echo '{"body":"gm"}' | dfos content create -

# see it
dfos content list

# run a relay
dfos serve
S P E C I F I C A T I O N S

Read the protocol.