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.
§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.
| Capability | What it is | Byte-home |
|---|---|---|
| ① Identity | A 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 |
| ② MOTE | The universal object: signed, encrypted, content-addressed. Mail, chat, offers, feed entries, and credentials are all MOTEs. | 02-mote.md, 05-messaging.md |
| ③ Transport | Reach 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 |
| ④ PUB | Signed public objects plus append-only author feeds — authenticity without confidentiality. | 22-public-objects.md, 25-pubsub.md |
| ⑤ SYNC | Multi-author signed CRDT — shared mutable state with no server. The one capability that is genuinely new normative ground. | substrate/SYNC.md |
| ⑥ Roles & Wake | Infrastructure roles any node may take (relay, mailbox, rendezvous, KT log) plus content-free push to wake offline devices. | substrate/ROLES.md |
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.
| # | Capability | Profiles (standards) | Reference implementation |
|---|---|---|---|
| 1 | Identity | Ed25519 (RFC 8032), deterministic CBOR (RFC 8949), CONIKS/key-transparency, RFC 6962 Merkle logs | — |
| 2 | MOTE | COSE (RFC 9052), deterministic CBOR (RFC 8949 §4.2), BLAKE3 content-addressing — the universal signed, encrypted, content-addressed object | kotva-core — the sealed-MOTE encoder |
| 3 | Transport | libp2p (Kademlia, Circuit Relay v2, DCUtR); store-and-forward at the edge — reach a key online, offline, or over a mesh | dmtap-p2p (Envoir mesh) |
| 4 | PUB — Feeds & Blobs | Nostr-class signed events, IPFS-class content addressing, RFC 6962 Merkle, HTTP caching | kerf-pub — serves §22 over plain HTTPS, no mesh |
| 5 | Sync | CBOR/COSE, Hybrid Logical Clocks, version vectors, range-based set reconciliation | flowstock stateless sync; dmtap-clustersync CRDTs (Envoir) |
| 6 | Roles & Wake | libp2p infrastructure roles (announce/resolve, Circuit Relay v2, short-TTL content-blind mailbox, cache) + content-free, sender-blind Web Push (RFC 8030/8291/8292, VAPID), UnifiedPush | vulos-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
}
| kind | CRDT type | Behavior |
|---|---|---|
set-add / set-remove | OR-Set | add-wins observed-remove; a remove cancels only the specific add-tags it saw, so a concurrent unseen add survives |
lww-set | LWW register | greater HLC wins; an exact tie breaks on larger encoded-value bytes |
death | remove-wins death-certificate | dominates the OR-Set — a bare add can never outrank an explicit delete, closing the "resurrection" hole |
counter | PN-counter | per-author delta sets; an author may only advance its own entry, enforced by the op signature |
seq-insert / seq-remove | RGA sequence | ordered lists/text via left-origin references and tombstones |
tree-move | movable tree | reparenting 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
| Class | Meaning | Examples |
|---|---|---|
blind | Forwards 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-routing | Cannot read the payload, but sees routing metadata — envelope, SNI, addresses, size, timing. | SNI-passthrough ingress, buffer/mailbox, SFU media-relay (RFC 9605) |
terminating | Terminates 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
| Kind | Provides | Typical visibility |
|---|---|---|
gateway | Legacy-mail bridge (MX, DKIM egress, legacy client surfaces) | terminating (legacy leg is plaintext) |
relay | Mesh reachability for NAT'd peers | blind / structural |
media-relay | Forwards SFrame-encrypted call/stream media | blind-routing / structural — payload sealed, routing/timing/participant graph visible |
reachability-adapter | ngrok-style public subdomains for arbitrary box services | blind-routing (SNI-passthrough) preferred |
indexer | Search / discovery over public objects | corpus is public plaintext; query channel terminating unless attested |
labeler | Moderation labels, opt-in, subscribable | n/a — labels public objects |
matcher | Real-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 terminating → attested |
arbiter | Dispute resolution (staked jury) | terminating for evidence, disclosed |
oracle | Physical-world / real-fact attestation | terminating, disclosed |
custodial-escrow | Holds the trade float for a trade window | terminating 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.
| Need | Bind to | Honest maturity note |
|---|---|---|
| Identity recovery | Account abstraction (ERC-4337 / EIP-7702), passkeys, MPC (Turnkey / Privy / Web3Auth / Lit) | Solid, mainstream — recovery finality is real; UX is web2-grade. |
| Attestation | EAS, W3C Verifiable Credentials | Plumbing is mature; the portable-reputation layer on top is nascent. |
| Reputation | OpenRank (EigenTrust, TEE-verified) | Real; quality still depends on the personhood anchor below it. |
| Proof-of-personhood | World ID; Human Passport | Imperfect — every method trades off; local scale uses web-of-trust instead. |
| Payments / settlement | x402 (HTTP-402 stablecoin), USDC on Base/Solana | Infra is real; genuine demand is still thin. |
| Storage — hot / permanent / scale | Walrus / Arweave / Filecoin (+ Storj) | Behaves like a CDN, not an archive; retrieval on bulk tiers historically slow. |
| Dispute / arbitration | Kleros-class staked juries | Real but small and unproven at scale; risks re-centralizing toward professional jurors. |
| Mesh reachability | libp2p — Circuit Relay v2, DCUtR, Kademlia, Noise, QUIC | Mature; profiled directly, not re-derived. |
| Messaging crypto | MLS (RFC 9420) | Standards-track, mature group ratchet. |
| Media transport / E2E | WebRTC + SFrame (RFC 9605, keyed from the MLS epoch) + TURN | Mature and standardized; a media relay that commits to sframe_required=true is content-blind (blind-routing — routing metadata stays visible). |
| Verifiable coordination | TEEs (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.
DMTAP — mail, messaging & the legacy gateway
flagship profile · spec §00–§27Email 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.0Goods, 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.0The 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/Progressare ordinary Sync ops), Feeds & Blobs (aWorkOrderis an immutable content object, anAttestationa 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 ratifiedA 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 ratifiedPosts, 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
labelercoordinators; search is a swappableindexer. - 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 §27A 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_signalobject, 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-relaycoordinator 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 ratifiedThe 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-adaptercoordinator, 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 isstructuralfor an own-domain name whose CAA record denies the adapter a certificate, anddeclaredfor a bare adapter-zone vanity, where the adapter writes its own zone and a MITM residual is disclosed rather than excluded.
SEARCH — discovery, following-graph first, indexer-optional
profile spec · normative once ratifiedUnbundles what a centralized search engine bundles — the crawl, the rank, the query log — and keeps discovery coordinator-optional.
- Adopts
- Reads existing public objects (§22) and subscribes to feeds (§25); no new wire bytes. Its coordinator is an
indexerunder the coordinator contract. - Narrow waist
- The default is a local search over the reader's own following-graph — no crawler, no server, no coordinator required at all. Global reach is an opt-in, hired, fireable, self-hostable indexer that adds reach, never authority; there is no ranking token, because there is no protocol token to buy rank with.
- Status
- Draft; whether an indexer is TEE-attested (DeSearch-style) or a plain crawler is a declared, surfaced property, not assumed.
DEPOT — managed infrastructure (the decentralised-cloud profile)
draft profile · normative once ratifiedGateways 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
ATTESTsigned claims carried on a PUB feed. The coordinator is a singleinfra-servicekind 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
bucketand publiccdnare structurally blind.database,edge-fnandboxareterminating— 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 toattested.
§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
| Ceiling | What it means |
|---|---|
| Global anti-Sybil | Imperfect 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-issuer | Land 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.
| Residual | What is disclosed |
|---|---|
| R-2 | Self-authentication proves who signed, never that the signer told the truth. A signed lie is still a lie. |
| R-4 | Only structural and attested visibility claims are verifiable; a declared-level claim can never be cryptographically proven honest. |
| R-5 | Recovery heals a lost or seized-and-locked device; it does not heal a device actively compromised while unlocked and in use. |
| R-6 | Coordinator audit is one-directional — a signed receipt confirms a real operation but cannot disconfirm one the coordinator fabricated or omitted. |
| R-7 | Global anti-Sybil is explicitly not solved; a profile must not describe it as solved. |
| R-9 | Sealed 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).