Whitepaper — protocol family specification

KOTVA

A narrow-waist protocol family: one small, shared substrate — identity, signed objects, transport, publish/subscribe, sync, and infrastructure roles — over which mail, commerce, work, social, media, and real-time calling compose as thin, independent profiles.

v0.1.0 — early & evolving CC BY 4.0 no protocol token github.com/vul-os/kotva

§0 Abstract

kotva is Slavic for anchor. The key is the anchor: identity is a keypair its owner holds, and every name, address, alias, or operator that sits above it is a swappable pointer. KOTVA is not a product. It is a family of protocols sharing one narrow waist — six capabilities small enough to read in an afternoon — plus a keystone document, the coordinator contract, that turns "some centralization, done safely" into a checkable property instead of a marketing promise. Above the waist sit thin profiles: DMTAP (mail, the reference profile), TRACT (commerce), WRAP (work), and a set of further drafts — media, social, real-time calling, search, reachability. Below the waist, KOTVA adopts rather than reinvents: Ed25519, HPKE, deterministic CBOR, MLS, libp2p, SFrame, WebRTC, and a slate of external bindings for recovery, reputation, payments, storage, and dispute. The one piece of genuinely new normative engineering is Sync — a signed, multi-author CRDT operation algebra with deterministic, coordinator-free convergence. Everything else is composition, and every unavoidable point of centralization is fenced: accountable, swappable, self-hostable, and never load-bearing.


§1 The narrow waist

KOTVA "covers everything" the way IP or HTTP do — by being a thin waist that composes upward and downward, not by containing everything.

Federated-messaging history has one loud lesson: monolithic protocols die of their own weight, and tiny cores win. XMPP and Matrix are technically complete and genuinely federated, yet both carry a large mandatory surface — presence, rosters, room-state resolution, a sprawl of extensions — that every server must implement to interoperate. HTTP did the opposite: the core is almost nothing, and everything else is a profile layered on top. Nostr reduced a social network to "a signed JSON event, relayed by dumb relays"; AT Protocol to "a signed content-addressed repo with pluggable identity." Both won by being small enough that a new client, or a new application kind, did not have to swallow the whole thing.

KOTVA's waist is exactly six capabilities. A profile may adopt any subset — there is no ordering, no prerequisite bundle, no "core profile" a product must swallow first. But if a profile implements a capability's function, it must speak that capability's bytes: a product that syncs structured state must use the Sync op algebra, not a parallel CRDT it calls the same name. Two independently built profiles interoperate on any capability they both adopt — that only holds if adopting a capability means adopting its wire format, not merely its idea.

CapabilityWhat it isByte-home
① IdentityA keypair is the identity. Names — DNS, chain, an 8-word key-name floor — are swappable pointers to it, never authoritative over it.01-identity.md, 03-naming.md
② MOTEThe universal object: signed, encrypted, content-addressed. Mail, chat, offers, feed entries, and credentials are all MOTEs.02-mote.md, 05-messaging.md
③ TransportReach anyone by key — online, offline, or over a mesh. Store-and-forward at the edge; no static IP required.04-transport.md, substrate/ROLES.md
④ PUBSigned public objects plus append-only author feeds — authenticity without confidentiality.22-public-objects.md, 25-pubsub.md
⑤ SYNCMulti-author signed CRDT — shared mutable state with no server. The one capability that is genuinely new normative ground.substrate/SYNC.md
⑥ Roles & WakeInfrastructure roles any node may take (relay, mailbox, rendezvous, KT log) plus content-free push to wake offline devices.substrate/ROLES.md
The narrow-waist hourglass Profiles fan out at the top; adopted standards fan out at the bottom; the six waist capabilities sit at the narrow neck in the middle. DMTAP mail TRACT WRAP MEDIA SOCIAL RTC REACH / SEARCH THE NARROW WAIST ① Identity ② MOTE ③ Transport ④ PUB ⑤ Sync ⑥ Roles/Wake six capabilities · à-la-carte · shared signing & encoding Ed25519 · CBOR HPKE · COSE MLS · SFrame libp2p mesh WebRTC · TURN Web Push profiles fan out above · adopted standards fan out below · the waist invents only where nothing existed
Figure 1 — the hourglass shape. KOTVA specifies new bytes only at the neck (chiefly Sync); everything above and below is composition of existing standards and thin profiles.

Two litmus tests, restated in every substrate document

The flowstock test — can a product sync structured state (inventory, a document, a task board) by reading only IDENTITY.md and SYNC.md, without opening the mail, MLS-groups, gateway, or JMAP sections? If not, the waist has a hidden forward reference and has failed to stay thin.

The HTTP test — is every waist capability servable over plain HTTPS, with no mesh, no relay, no libp2p present, and does a fetcher verify identically regardless of which transport delivered the bytes? Every object is self-authenticating (signed or content-addressed), so the mesh is one binding among several, never the only way to speak the waist.


§2 The substrate

2.1 Six capabilities, one shared floor

The substrate directory re-presents the waist as a standalone contract any non-mail product can adopt à la carte. Five of the six capabilities profile existing sections of the core mail spec — they extract general machinery that happened to be written down as part of a mail protocol. Only one — Sync — is genuinely new normative ground.

#CapabilityProfiles (standards)Reference implementation
1IdentityEd25519 (RFC 8032), deterministic CBOR (RFC 8949), CONIKS/key-transparency, RFC 6962 Merkle logs
2MOTECOSE (RFC 9052), deterministic CBOR (RFC 8949 §4.2), BLAKE3 content-addressing — the universal signed, encrypted, content-addressed objectkotva-core — the sealed-MOTE encoder
3Transportlibp2p (Kademlia, Circuit Relay v2, DCUtR); store-and-forward at the edge — reach a key online, offline, or over a meshdmtap-p2p (Envoir mesh)
4PUB — Feeds & BlobsNostr-class signed events, IPFS-class content addressing, RFC 6962 Merkle, HTTP cachingkerf-pub — serves §22 over plain HTTPS, no mesh
5SyncCBOR/COSE, Hybrid Logical Clocks, version vectors, range-based set reconciliationflowstock stateless sync; dmtap-clustersync CRDTs (Envoir)
6Roles & Wakelibp2p infrastructure roles (announce/resolve, Circuit Relay v2, short-TTL content-blind mailbox, cache) + content-free, sender-blind Web Push (RFC 8030/8291/8292, VAPID), UnifiedPushvulos-relayd (intended)

The repository is candid about where implementation currently stands: roughly five independently hand-rolled sync/identity/feed implementations exist across the product suite today, none byte-interoperable with any other. The stated fix is not more prose but one compiled Rust core with thin per-language bindings (native, C-ABI/cgo, WASM, UniFFI) and frozen conformance vectors as the proof a binding is byte-identical to the core — a plan, not yet a finished fact.

2.2 Sync — the one new normative capability

Every other waist capability profiles something that already exists. Sync does not: no single deployed standard covers signed, deterministic, multi-author CRDT operations with snapshot and sparse namespace sync. Its semantics are grounded in the mail spec's existing single-owner device-cluster CRDT, generalized to any set of independent identities converging on shared state — by making the operation itself the unit of authenticity.

Model

A replica holds sync state and exchanges ops with peers — there is no primary and no coordinator (leaderless). An author is an identity whose operational keys chain to an IK via a DeviceCert. An object is a keyed piece of state governed by exactly one CRDT type; a namespace partitions objects into independently-syncable collections a replica subscribes to.

Determinism is the contract

Every merge is a join — commutative, associative, idempotent — over deterministic CBOR, so any two replicas that applied the same ops compute byte-identical state. Ties break on the Hybrid Logical Clock total order, and where the HLC itself ties, on a pure bytewise comparison of the encoded value — never a length-first comparison.

The SyncOp envelope

One envelope, six-plus CRDT types selected by a kind discriminator, each op individually COSE-signed (RFC 9052) or batched into a hash-chained, singly-signed SyncFrame for amortized signatures:

SyncOp = {
  1  => u8,          ; kind    CRDT/op discriminator
  2  => tstr,        ; ns      namespace ("" = default)
  3  => tstr,        ; target  object id
  ? 4 => tstr,       ; field   register / counter / edge selector
  ? 5 => ext-value,  ; value   LWW value · counter delta · RGA atom
  6  => Hlc,         ; hlc     { wall, counter, author }
  ? 7 => [+ AddTag],  ; observed OR-Set add-tags a remove cancels
  ? 8 => OpRef,       ; ref     RGA left-origin / tree parent
}
kindCRDT typeBehavior
set-add / set-removeOR-Setadd-wins observed-remove; a remove cancels only the specific add-tags it saw, so a concurrent unseen add survives
lww-setLWW registergreater HLC wins; an exact tie breaks on larger encoded-value bytes
deathremove-wins death-certificatedominates the OR-Set — a bare add can never outrank an explicit delete, closing the "resurrection" hole
counterPN-counterper-author delta sets; an author may only advance its own entry, enforced by the op signature
seq-insert / seq-removeRGA sequenceordered lists/text via left-origin references and tombstones
tree-movemovable treereparenting with an ordering key per move

Authenticity, ordering, and abuse-resistance are treated as one problem rather than three add-ons: an op's HLC is rejected if its wall-clock is more than a bounded skew ahead of the receiver — deliberately one-sided, so a device that was offline for days can still push its legitimate backlog without a two-sided check discarding honest offline work. A counter's overflow spills forward into the next tick rather than wrapping, because a silent wrap would retroactively invert causal order for any op minted at the wrapped position. Reconciliation is a three-endpoint HTTP protocol — GET /sync/vector, POST /sync/pull, POST /sync/ops — the same shape proven by the flowstock reference implementation.

Honest framing

Sync's op algebra merges the whole value at a given address — there is no per-field merge inside a nested structure. Two authors editing "different parts of the same object" concurrently must decompose those parts into distinct addresses (ns/target/field); collapsing everything into one large nested value converts "both edits survive" into "last writer wins the whole object," silently. This is stated as a design property, not hidden as a limitation.


§3 The coordinator contract

The keystone new specification of the family — a draft, normative once ratified — that turns "some centralization, done safely" into a checkable property rather than a hope.

Decentralize the substrate and the exit. Every unavoidable coordinator is accountable, swappable, and self-hostable, and never load-bearing. Coordinators add reach; they never gate function.

A coordinator is any party that provides a function the peer-to-peer substrate cannot provide reciprocally: a global view (matching, ranking, search), a scarce resource (a reputable IP for legacy mail egress, a public ingress), a legal or real-world anchor (licensing, physical-event attestation), or cross-party judgement (moderation, arbitration). KOTVA does not pretend these jobs away — it fences each one behind one contract, generalized from DMTAP's legacy-mail gateway and legacy adapters into a reusable shape.

3.1 Four conformance clauses

Accountable

A signed descriptor carrying kind, policy, and — where it charges — a signed tariff. Discovery-only and self-asserted: no global reputation score, no price rank, no stake field. Reputation is measured locally by each client, never published as a single authority's number.

Swappable

Leaving is a configuration change with zero data migration and zero identity change. Keys, mailbox, listings, and history live at the edge; a coordinator holds only rebuildable operational state. Lock-in is a conformance violation, not a business model.

Self-hostable

For every coordinator kind, a user who can meet its requirement can run it themselves. One honest exception class is disclosed rather than papered over: scarce network reachability (a reputable IP for SMTP egress; a public ingress) — a resource an ISP or host allocates, not something a user can always self-provision.

Content-visibility declared

Every coordinator declares exactly one visibility class at one assurance level and surfaces it to users. Advertising one class while operating another is non-conformant misrepresentation, not policy.

3.2 The content-visibility property

ClassMeaningExamples
blindForwards or holds ciphertext; holds no key that decrypts the payload; reads neither content nor routing beyond what the wire exposes.mesh relay (Circuit Relay v2), mix, TURN-over-SFrame
blind-routingCannot read the payload, but sees routing metadata — envelope, SNI, addresses, size, timing.SNI-passthrough ingress, buffer/mailbox, SFU media-relay (RFC 9605)
terminatingTerminates encryption and sees plaintext — a deliberate, disclosed trust boundary.legacy mail gateway, TLS-terminating ingress

Layered on top, an assurance level states how a blindness claim is guaranteed: structural (the role has no key at all — provable), attested (a TEE proves the code only forwards — hardware-trust), or declared (the operator promises — honest-trust, unverifiable). The contract can mandate the architecture and the declaration; it cannot cryptographically prove a declared-level operator isn't secretly logging. A client must never present a declared claim as if it were verified.

3.3 Authorize, never classify

Every gate a coordinator applies on a delivery path or an authoritative path must be answered from sender identity and rate — never from a judgement about whether content is wanted. A coordinator must not run spam scoring, ML filtering, or keyword/URL reputation on that path, and must not drop, quarantine, re-rank, or annotate on a content basis. "Wanted" is the recipient's judgement, on the recipient's device. This is structural rather than a style preference: content classification improves with corpus size, so it centralizes and never finishes — which is exactly how anti-abuse would otherwise regrow a second centralized tier. A carve-out exists for a coordinator's own derived, opt-in, subscribable view — a labeler classifying into labels you subscribe to, or an indexer ranking its own corpus — because gating what reaches you by default is prohibited, but ranking your own opt-in view is not.

3.4 Coordinator kinds

KindProvidesTypical visibility
gatewayLegacy-mail bridge (MX, DKIM egress, legacy client surfaces)terminating (legacy leg is plaintext)
relayMesh reachability for NAT'd peersblind / structural
media-relayForwards SFrame-encrypted call/stream mediablind-routing / structural — payload sealed, routing/timing/participant graph visible
reachability-adapterngrok-style public subdomains for arbitrary box servicesblind-routing (SNI-passthrough) preferred
indexerSearch / discovery over public objectscorpus is public plaintext; query channel terminating unless attested
labelerModeration labels, opt-in, subscribablen/a — labels public objects
matcherReal-time supply↔demand matching (rides, delivery)terminating default / attested (TEE)
compute (provisional)Hosted/outsourced computation (e.g. rented-GPU inference)terminating default / attested
infra-service (draft)Managed infrastructure — box / bucket / edge-fn / database / cdn (DEPOT)per service — bucket blind, edge-fn/database/box terminatingattested
arbiterDispute resolution (staked jury)terminating for evidence, disclosed
oraclePhysical-world / real-fact attestationterminating, disclosed
custodial-escrowHolds the trade float for a trade windowterminating for evidence — the family's one load-bearing exception

Every kind above inherits the four clauses and the visibility property unchanged. The custodial-escrow operator is the one disclosed departure: it satisfies all four clauses like every other kind but, uniquely, does not fade once hired — holding money for strangers during a trade window is a real, licensed, structurally necessary role, bounded by staking sized to the float rather than eliminated by wishful design.


§4 Bindings — adopt, don't reinvent

KOTVA specifies new bytes only where nothing proven exists, and binds everywhere else. A binding is a thin mapping document — how substrate identity or objects map onto an external standard — never a re-derivation. When the frontier improves, the binding swaps; the substrate and profiles above it never change.

NeedBind toHonest maturity note
Identity recoveryAccount abstraction (ERC-4337 / EIP-7702), passkeys, MPC (Turnkey / Privy / Web3Auth / Lit)Solid, mainstream — recovery finality is real; UX is web2-grade.
AttestationEAS, W3C Verifiable CredentialsPlumbing is mature; the portable-reputation layer on top is nascent.
ReputationOpenRank (EigenTrust, TEE-verified)Real; quality still depends on the personhood anchor below it.
Proof-of-personhoodWorld ID; Human PassportImperfect — every method trades off; local scale uses web-of-trust instead.
Payments / settlementx402 (HTTP-402 stablecoin), USDC on Base/SolanaInfra is real; genuine demand is still thin.
Storage — hot / permanent / scaleWalrus / Arweave / Filecoin (+ Storj)Behaves like a CDN, not an archive; retrieval on bulk tiers historically slow.
Dispute / arbitrationKleros-class staked juriesReal but small and unproven at scale; risks re-centralizing toward professional jurors.
Mesh reachabilitylibp2p — Circuit Relay v2, DCUtR, Kademlia, Noise, QUICMature; profiled directly, not re-derived.
Messaging cryptoMLS (RFC 9420)Standards-track, mature group ratchet.
Media transport / E2EWebRTC + SFrame (RFC 9605, keyed from the MLS epoch) + TURNMature and standardized; a media relay that commits to sframe_required=true is content-blind (blind-routing — routing metadata stays visible).
Verifiable coordinationTEEs (SGX / SEV / ARM)New trust dependency — trades operator-trust for chip-vendor-trust; disclosed, not trustless.

What KOTVA never binds

A protocol token — money is an existing stablecoin, trust is staked existing value, and KOTVA mints nothing. A global reputation score it computes itself. A search-ranking token. Surveillance-based advertising. These are absent by decision, not by oversight.


§5 The profiles

Every real-world service reduces to the same small primitive set — OFFER · MATCH/RESERVE · REPUTATION · ESCROW · ORACLE · DISPUTE · PAY — differing mainly in MATCH's assignment rule (nearest, best-fit, highest-bid) or dropping MATCH entirely for a single-owner RESERVE. Because services reduce to the same primitives, "different products" are thin profiles standing on one substrate, not separate systems.

Six layers, bottom to top ADOPT, SUBSTRATE, PRIMITIVES stack vertically; COORDINATOR CONTRACT and BINDINGS sit as seams to the side; PROFILES sit on top. ⑥ PROFILES — mail · commerce · work · social · media · calls · search · reach ③ PRIMITIVES — OFFER · MATCH/RESERVE · REPUTATION · ESCROW · ORACLE · DISPUTE · PAY ② SUBSTRATE — Identity · MOTE · Transport · PUB · Sync · Roles ① ADOPT — Ed25519 · HPKE · CBOR ④ COORDINATOR CONTRACT safe centralization, made checkable BIND- INGS a hard problem is never hard-wired — it is a swappable binding or a fenced coordinator
Figure 2 — the layered architecture. Profiles are thin because everything hard is either adopted (layer ①/⑤) or fenced (layer ④), never re-derived at the top.

DMTAP — mail, messaging & the legacy gateway

flagship profile · spec §00–§27

Email reimagined from the keypair up — the profile the waist was extracted from, now reframed as the first thing built on top of it rather than the whole protocol.

Adopts
All six substrate capabilities unchanged, plus MLS groups (§5), the opt-in/research mixnet privacy tiers (§6), cold-contact anti-abuse economics (§9), and the legacy SMTP/IMAP/JMAP gateway (§7, §8) on top.
Narrow waist
Sync for the device-cluster mailbox; Feeds for public list archives and release announcements; Roles for reachability and NAT'd circuit relay; Wake for push-woken mobile clients.
Status
The core, numbered specification (§0–§27); slated for relocation under profiles/dmtap-mail/ in a later restructure without changing its normative content. One binary, roles selected at runtime (--relay, --mix, --gateway) — the gateway is the family's original, fully-worked coordinator instance, and the only DMTAP function needing a scarce resource (send reputation for legacy SMTP egress).
Honest caveat
The mixnet's per-hop cryptography (the Sphinx-style onion layer) is, in the current Rust implementation, an explicit stand-in — not yet the real per-hop construction the spec specifies — and far-future privacy cryptography (mixnet, VDF, PQ envelope tuning) is deliberately quarantined as non-normative research rather than perfected on the critical path.

TRACT — commerce

draft spec · v0.1.0

Goods, services, rentals, subscriptions, and the delivery and settlement around them — with no marketplace operator, no registrar, and no token.

Adopts
Identity, Feeds & Blobs (catalogues, offers, rate cards, reviews), Sync (carts across a buyer's devices, inventory across a seller's replicas), Roles, and Wake — plus the sealed MOTE for order messages. No new cryptography of its own.
Narrow waist
Every trade — goods, services, rentals, bookings, subscriptions, licences, made-to-order — expresses as one four-axis offer rather than a category-specific schema; delivery routing is computed on the buyer's own node from publicly published rate cards, so no single party sees the whole cart.
Status
Overview through wire-format and conformance vectors specified; content-addressed product identity across independent sellers is stated as "the mechanism, not yet a demonstrated solution."
Honest caveat
TRACT names its own departure from DMTAP's structural claim: the storefront and escrow gateway functions are permanent, not self-extinguishing, because browsers and money-holding licenses are permanent. Discovery is flagged as the weakest load-bearing claim in the document — a content-addressed substrate has no global index by construction, so whichever indexer becomes economically dominant risks becoming a de facto content-policy gatekeeper, and no protocol rule here prevents that.

WRAP — work

version 0 · v0.2.0

The issuer assigns. Removing the one contended decision — who gets the job — removes the need for a race, an arbiter, and the central server that arbitrates it.

Adopts
Identity (a Principal is a substrate IK), Sync (coordination state — Offer/Bid/Assignment/Progress are ordinary Sync ops), Feeds & Blobs (a WorkOrder is an immutable content object, an Attestation a portable author-feed entry), and Infrastructure Roles for pool discovery.
Narrow waist
Six object kinds and one assignment rule on top of the substrate — no bespoke encoding, signing, CRDT, or transport of its own; an earlier draft that had all four was rebased onto the shared substrate.
Status
Version 0 — no compatibility guarantee, written with standards-document rigor for design discipline rather than to claim stability. Conformance vectors are normative where they disagree with prose.
Honest caveat
Explicitly not trustless: open participation without a gatekeeper admits Sybils, and WRAP states the trust source rather than claiming to have solved it. Not a mesh — broadcasting work orders to every participant would leak commercial volumes and addresses, so WRAP is point-to-point plus pools, not gossip.

MEDIA — the Evermesh profile

profile spec · normative once ratified

A YouTube/Spotify/Twitch-shaped surface built as a thin profile: the platform's four welds — identity, catalogue, discovery, payment — cut apart and placed back on the substrate.

Adopts
Generalizes the existing Published-Artifact media facet (§24, the VideoManifest/channel/live model) from a publishing convention into a full product. Adds no new wire bytes beyond the one signed structure §24 already owns.
Narrow waist
The creator's box is the origin; a CDN is a swappable cache tier; discovery is a derived index served by a swappable indexer coordinator; live is a media-relay plane.
Status
Product-rule layer over an existing normative object — states the rules (box-as-origin, licensing honesty) without restating §24's schemas.

SOCIAL — public feeds without a timeline operator

draft · normative once ratified

Posts, replies, reposts, likes, follows — with no timeline operator, no ranking authority, and no token.

Adopts
A post is an ordinary public author-feed object (§22); discovery and anti-Sybil bind to the REPUTATION primitive; moderation is a market of labeler coordinators; search is a swappable indexer.
Narrow waist
Folds a signed public event stream (the Nostr-relay niche) and offline-first signed-log gossip (the Secure Scuttlebutt property) into one object model, with ATProto-style composable opt-in moderation layered on as a labeler market rather than a platform trust-and-safety monopoly.
Status
Draft, no new cryptography or wire capability — owns only the social schema on top of the existing public-object announcement metadata.
Honest caveat
Not a private-messaging system (direct messages ride the sealed MOTE) and not an anonymous-publishing system — who posted what, and when, is exactly the fact it makes verifiable.

RTC — real-time voice, video & calling

profile spec · wire in §27

A call is the opposite shape from a MOTE — a live stream that cannot be queued — so it rides a parallel media plane that reuses the substrate's identity and keys but not its store-and-forward object model.

Adopts
WebRTC for the media transport, keyed via MLS→SFrame so media relays are structurally blind; the substrate's existing signed, mutually-authenticated delivery layer fills WebRTC's deliberately signaling-agnostic hole with no separate signaling server.
Narrow waist
Defines no new bytes — the wire spec lives entirely in §27 (the rtc_signal object, the SFrame key schedule, capacity advertisement); this document is the family-level view of how it composes and degrades offline.
Status
Scaling calls beyond the host's own hardware is a media-relay coordinator role — a pool anyone can provide, coordinated by an existing distributed SFU (LiveKit/Pion, Jitsi+Octo, mediasoup) rather than a bespoke one.

REACH — public reachability for arbitrary box services

profile spec · normative once ratified

The ngrok/Cloudflare-Tunnel product shape, rebuilt so the tunnel operator is hired, not depended on.

Adopts
Generalizes the legacy-client reachability ingress (§7.15) from "carry one legacy mail client to a mailbox" to "carry any TLS client to any box service," and vanity local-parts (§7.10.5) from mail addressing to DNS subdomains.
Narrow waist
A box→adapter persistent, libp2p-secured (Noise + yamux) reverse-tunnel stream-mux, SNI-demuxed by the adapter — explicitly not the mesh's native Circuit Relay v2, which relays between two libp2p peers and cannot carry a non-libp2p client (a conflation the spec calls out explicitly).
Status
The provider is a reachability-adapter coordinator, fenced by the same contract as every other kind — blind-routing (SNI-passthrough) preferred, the box terminates TLS, the adapter forwards ciphertext it holds no key to read. That blindness is structural for an own-domain name whose CAA record denies the adapter a certificate, and declared for a bare adapter-zone vanity, where the adapter writes its own zone and a MITM residual is disclosed rather than excluded.

DEPOT — managed infrastructure (the decentralised-cloud profile)

draft profile · normative once ratified

Gateways offer a box, a bucket, an edge-fn, a database and a cdn as fenced coordinators — a decentralised cloud where the user holds their keys and can leave.

Adopts
No new runtime and no economics. It binds WASI/OCI (edge-fn), S3 / content-addressing (bucket), Redis / Postgres wire (database), HTTP caching (cdn) and cloud-init (box) over the §18.8a descriptor / tariff / usage-receipt seam. It mints no new wire object at all — even ratings are ATTEST signed claims carried on a PUB feed. The coordinator is a single infra-service kind with an extensible service registry.
Narrow waist
Economics are the operator's — KOTVA guarantees a price exists, is signed, and is metered honestly, never what it is. Reputation is a market of signed, reproducible measurements anyone may publish or aggregate, never one authority's score; the maintainer runs one rater, never the rater.
Honest cliff
Only bucket and public cdn are structurally blind. database, edge-fn and box are terminating — the operator sees plaintext to serve a query, run a function, or host a node. Marketing a managed database as "private" is non-conformant; the safety net is the owner-held root key and a real exit, not host blindness. A TEE with verifiable attestation upgrades these to attested.

§6 Honest ceilings & threat model

KOTVA covers every service's mechanism; it discloses, rather than hides, each service's trust and legal residual. A research pass tested the substrate against roughly 35 real-world services across communication, money, the gig economy, discovery, infrastructure, civic function, media, and AI: about 29 reduce cleanly to the shared primitives (a handful with disclosed ceilings), about 3 are hard-blocked, about 2 are governance gaps, and one — a lightweight IoT profile — is simply unbuilt.

6.1 Four root ceilings

CeilingWhat it means
Global anti-SybilImperfect at global scale; local scale dissolves it into web-of-trust. Proof-of-personhood bindings raise the floor — they do not close it.
Physical-event oracle"Did the delivery / ride / work happen?" reduces to confirm-plus-dispute; a coordinator can attest, never prove non-fabrication.
Legal / authoritative-issuerLand title, licensing, money-transmission need a real accountable party. The paid-coordinator model absorbs the burden; it does not remove it.
Editorial governance"Who decides the canonical version" for wikis, registries, app stores — distinct from anti-Sybil, with a reputation-weighted curation coordinator as the closest answer.

Two things are stated as genuinely unsolvable in principle, not merely unsolved: coercion-resistant public-election voting (harder than anti-Sybil) and surveillance-based advertising markets (rejected by design, not a gap to close).

6.2 The security floor (threat model)

A family-level threat model states nine invariants (SEC-1 through SEC-9) that every primitive, binding, coordinator, and profile inherits — fail-closed everywhere, intrinsic self-authenticity, end-to-end confidentiality via adopted crypto only, declared visibility with no silent downgrade, recoverable keys with no single load-bearing device, coordinators that authorize rather than classify, priced rather than centrally-filtered abuse, inert replay, and metadata minimized-where-bought and disclosed-where-not. Each MUST ships with a numbered residual — the boundary it does not cross — on the stated house rule that a security section listing only strengths is marketing.

ResidualWhat is disclosed
R-2Self-authentication proves who signed, never that the signer told the truth. A signed lie is still a lie.
R-4Only structural and attested visibility claims are verifiable; a declared-level claim can never be cryptographically proven honest.
R-5Recovery heals a lost or seized-and-locked device; it does not heal a device actively compromised while unlocked and in use.
R-6Coordinator audit is one-directional — a signed receipt confirms a real operation but cannot disconfirm one the coordinator fabricated or omitted.
R-7Global anti-Sybil is explicitly not solved; a profile must not describe it as solved.
R-9Sealed sender hides the sender from intermediaries, not the sender's IP, and is a reduction, not elimination. Strong metadata privacy against a global passive adversary (mixnet, onion routing, cover traffic) is research-tier and explicitly non-normative — quarantined because its assurance is not deployment-grade.

What is quarantined, and why that is honest rather than a defect

Far-future cryptography that is unproven or unsound at deployment grade — mixnet construction, VDFs, PQ envelope tuning — is deliberately kept out of the normative surface and marked non-normative research. This is a stated discipline, not an oversight: a spec that claims a guarantee its implementation does not meet is worse than a spec that names the gap. Concretely, the current mixnet implementation's per-hop cryptography is documented in the code itself as a stand-in for the real per-hop construction the specification calls for — the directory-shape work is real; the cryptography inside it is not yet.

Every invariant above is required to survive with no coordinator and no connectivity at all — authenticity and confidentiality are intrinsic to the object and need no server; anti-abuse collapses to web-of-trust and local policy; replay-inertness and deterministic merge let a partitioned replica reconcile on reconnect with byte-identical convergence. The one disclosed exception is a custodial-escrow trade window, whose settlement is blocked offline by design, leaving only the trade objects themselves to reconcile once connectivity returns. A security property that only holds while a coordinator is reachable is treated as a conformance violation of this document, not a degraded mode.


§7 Status & governance

KOTVA is v0.1.0 — early and evolving. The substrate, the DMTAP mail profile, and the TRACT (v0.1.0) and WRAP (v0.2.0) profiles are specified; the coordinator contract and the bindings index are the active consolidation work. Far-future cryptographic research is being quarantined to non-normative status rather than perfected on the critical path.

  • Spec license: Creative Commons Attribution 4.0 International (CC BY 4.0) — anyone may implement, quote, and build on it freely with attribution.
  • Reference implementations (e.g. Envoir) are licensed separately under permissive open-source terms so any party — including competitors — may embed them.
  • No protocol token exists, and none will be added. Money is an existing stablecoin; trust is staked existing value; free tiers and subsidies are operator policy, never a protocol requirement.
  • Copyright © 2026 VulOS (github.com/vul-os).