each.FR ENSign in

Publicationsversioned, signed.

Publications module · v0 · draft contract.

Published texts1
Contract · publications@v0Markdown · JSON

The Publications module lets anyone publish a text on Each. Every publication is versioned: an edit creates a new immutable version, older ones stay readable. Every version carries a signed proof of its content (SHA-256 hash).

Status: draft · updated 2026-10-30 · JSON: /en/surface/publications/v0.json

A publication

The core (non-modifiable)

The Each core cannot be modified by a module. Every write (create a publication, add a version) requires either a passkey confirmation or a capability token carrying the publications:write scope. The core checks one or the other before writing, and signs the proof. Versions are append-only: no edit, no delete.

Scopes

Capability tokens

A capability token is created with your passkey (POST /v1/capabilities). It is shown once, Each keeps only its hash. It expires after 30 days. Send it in the Authorization: Bearer each_cap_... header.

Signed proof for every version

Every version produces a signed proof (ES256, public key: /.well-known/each-keys), verifiable at /verifier/{id}. The proof says who signed it: the author's passkey, a capability token, or the Each team for a test publication.

Type: each.publication · fields: v, type, id, issuer, environment, issued_at, publication.id, publication.path, publication.version, publication.title, publication.author, publication.format, publication.license, publication.content_sha256, publication.previous_sha256, signed_by, signed_by_author, note, statement

API

Example reader

A copyable example reader: examples/publication-reader/ (one file, one config, one README).

Versions

Contract version: v0 = draft. A breaking change creates v1 at a new address; v0 stays readable. To propose a change: copy src/modules/publications/, edit contract.json, open a review.

Open questions