The protocol standard

A standard, formed in the open.

A protocol only one team can change is a product. We are beginning to turn Secure Net into a standard: a written specification that anyone can implement, changed only through public proposals, review and a recorded decision by people.

Where this stands: the process is a draft and has not been ratified. The committee that will decide does not exist yet beyond the founder.

How a change is made

Every change to what two implementations must agree on goes through a Secure Net Improvement Proposal. The peach mark shows the steps only people can take.

  1. Step 1: A public proposal

    Anyone writes down the problem and the intended solution as a numbered Secure Net Improvement Proposal.

  2. Step 2: Examination (a decision for people)

    Maintainers and independent developers look at security and at whether existing sites and applications keep working.

  3. Step 3: Working code and tests

    A reference implementation and tests show the change does what it says. Without them it can be discussed, not accepted.

  4. Step 4: A recorded decision (a decision for people)

    The Technical Steering Committee accepts or rejects it, and writes its reasons into the proposal.

  5. Step 5: Into a numbered version (a decision for people)

    Only after the required review does it become part of a versioned specification. Accepting it does not deploy it anywhere.

A proposal moves through these states: Draft, Public review, Technical review, Accepted or rejected, Implemented, Released.

Breaking changes cost more

A change that would make an up-to-date site and an older one disagree needs a higher level of approval and a published plan: who must update, by when, what happens to those who have not, and how to go back.

AI can prepare. It cannot vote.

AI tools may draft proposals, write code and tests, and review. They cannot sit on the committee, and their approval never stands in for a person's. Work an AI prepared says so.

Read the draft governance document (on GitHub)

The parts of the specification

23 parts, each numbered. Each carries the status its own document gives it. Draft means written and usually implemented, but not yet reviewed and accepted.

Read from GitHub on 15 November 2026 at 23:17 UTC, and refreshed about every 10 minutes.

  • CVP-000

    How the standard works: language, versions, compatibility, registries, conformance

    Read CVP-000 (on GitHub)

    Status: Draft, version 1
  • CVP-001

    Identifiers, keys, signatures, rotation, recovery, personas, migration

    Implemented, but its document is still to be written.

    Status: Draft, version 1
  • CVP-002

    Canonical encoding and signed records

    Read CVP-002 (on GitHub)

    Status: Draft, version 1
  • CVP-003

    Account-wide envelopes and community keys (older; superseded for new messages by CVP-016)

    Implemented, but its document is still to be written.

    Status: Draft, version 1
  • CVP-004

    Spaces, channels, membership and policy

    Implemented, but its document is still to be written.

    Status: Draft, version 1
  • CVP-005

    Site-to-site federation

    Implemented, but its document is still to be written.

    Status: Draft, version 2
  • CVP-006

    Attachments, retention and backup

    Number set aside. Nothing written yet.

    Status: Reserved
  • CVP-007

    Reports, disclosures and federation controls

    Number set aside. Nothing written yet.

    Status: Reserved
  • CVP-008

    Extensions, themes and feature negotiation

    Implemented, but its document is still to be written.

    Status: Draft, version 1
  • CVP-009

    Bridges and labels

    Number set aside. Nothing written yet.

    Status: Reserved
  • CVP-010

    Conformance: profiles, statements and tests

    Read CVP-010 (on GitHub)

    Status: Draft, version 1
  • CVP-011

    Commons ledger: replication and failover

    Read CVP-011 (on GitHub)

    Status: Draft, version 1
  • CVP-012

    Governance: motions, debates and votes

    Read CVP-012 (on GitHub)

    Status: Draft, version 1
  • CVP-013

    Private tokens (RFC 9497 VOPRF)

    Read CVP-013 (on GitHub)

    Status: Draft, version 1
  • CVP-014

    Consent capsules

    Implemented, but its document is still to be written.

    Status: Draft, version 1
  • CVP-015

    Quantum resistance and the sealed relay

    Read CVP-015 (on GitHub)

    Status: Draft, version 1
  • CVP-016

    End-to-end sessions: post-quantum handshake, ratchet with encrypted headers, devices, sender keys, new devices

    Read CVP-016 (on GitHub)

    Status: Draft, version 2
  • CVP-017

    Actors and discovery: self-certifying actor documents and handles

    Read CVP-017 (on GitHub)

    Status: Draft, version 1
  • CVP-018

    Activities and objects: the ActivityStreams vocabulary, signed on devices

    Read CVP-018 (on GitHub)

    Status: Draft, version 1
  • CVP-019

    Delivery: public, direct, audience and group envelopes, end to end encrypted; sealed sending

    Read CVP-019 (on GitHub)

    Status: Draft, version 2
  • CVP-020

    Repositories and sync: an actor's public activities as a signed, portable, verifiable set

    Read CVP-020 (on GitHub)

    Status: Draft, version 1
  • CVP-021

    Lexicons: new object types named by domain

    Read CVP-021 (on GitHub)

    Status: Draft, version 1
  • CVP-022

    Groups: Messaging Layer Security (RFC 9420) with a hybrid post-quantum suite

    Read CVP-022 (on GitHub)

    Status: Draft, version 1

Read the specification on GitHub (on GitHub)

The first three proposals

The process starts by being applied to itself, and to work that came before it.

  • Status: Draft

    SNIP-0001: The proposal process

    Proposes adopting the process described on this page.

    Read SNIP-0001 (on GitHub)

  • Status: Public review

    SNIP-0002: The sealed relay and quantum-resistant signatures

    Written into the code before this process existed. It is recorded as experimental until a qualified person has examined it.

    Read SNIP-0002 (on GitHub)

  • Status: Draft

    SNIP-0003: Post-quantum end-to-end sessions

    Implemented for review in version 0.4.0. Not yet examined by any human reviewer.

    Read SNIP-0003 (on GitHub)

What a standard still needs

These do not exist yet. Each is somewhere you could help.

  • Independent review

    A qualified person examining the cryptography and the checks between sites.

  • A second implementation

    Someone outside Comutability building software that speaks the protocol.

  • A conformance suite

    Tests any implementation can run to show it follows the specification.

  • A committee

    Three to five human maintainers, including independent contributors.

  • Sites run by different people

    Proof that it works across servers nobody here controls.

  • Plain-language documentation

    So people who are not developers can judge what it does for them.

Take part in forming it.

You can ask a question, point out a problem or write a proposal. You do not need to be a cryptographer: questions from people who would use this are as useful as code.