YSDK is how any application becomes a room in YOS — discoverable by
every other app, callable as a set of functions, installable on a device, and
servable to other people. It invents almost nothing: identity is W3C DID,
authority is UCAN, functional exposure is MCP, installability is the Web App
Manifest. YSDK adds exactly one artifact to bind them.
Conformance is a ladder, not a threshold. Level 0 is a DID and a manifest.
You do not have to boil the ocean to join it.
Four properties, and why each one matters
Identity nobody issues on your behalf
Your app's identifier comes from ydid.org and is controlled by you —
verifiable by anyone, revocable by you. YOS itself holds one of these. The store is
a customer of the identity system, not its issuer. That inversion is the point.
Permission you hold, not permission you are
When one app uses another it never receives a key. It holds a capability: signed,
scoped, expiring, revocable, passable on only in narrowed form. Lending a note that
says may enter the kitchen, Tuesday only — not your house keys.
Functions, not just screens
Your app publishes what it can do. Another app, or an agent acting for a
person, discovers and calls it over MCP. A file manager becomes the file layer inside
a video editor without the two teams ever meeting.
Use it, own it, or serve it
A visitor can use your app in a browser, install it and own the copy, or — if their
machine qualifies and they opt in — run it for other people as a seed.
One codebase, three relationships.
Level 0 in one day
Three steps. The third one makes you a member.
1
Get an identifier
Request a DID from the identity root. The private key is generated on your
machine and never leaves it.
npx @ysdk/cli identity create --domain your-app.example
# → did:key:z6Mk… written to ./ysdk/identity.json (never commit this)
2
Write the manifest
One file. It binds your DID to your web manifest, your MCP endpoint, your
capability grammar and your upgrade policy.
Levels are earned by a run, never declared. The suite is tagged
@L0…@L6; its output populates the evidence block in your manifest.
L0
Identified
~1 day
Resolvable DID and a signed manifest at a well-known path.
Proven by: a third party resolves your DID and verifies the signature holding nothing but your public document.
L1
Installable
days
Web App Manifest, service worker with a real update strategy, honest offline, three viewports, keyboard operable, focus visible through clip-path.
Proven by: the browser's own installability judgment, and offline confirmed by cutting the network — not by a manifest lint.
L2
Integratable
days
An MCP surface. Every tool documented, versioned, rate-limited, with sideEffects declared.
Proven by: an external consumer lists and calls a tool, and a gated tool refuses an uncredentialed call.
L3
Delegable
weeks
UCAN capabilities you issue and verify — scoped, expiring, revocable.
Proven by: issue, use, revoke, then observe the refusal across a fresh connection. A passing unit test is not sufficient evidence for this level.
L4
Seedable
weeks
Your app runs on someone else's machine, for other people, with declared and enforced capacity.
Proven by: the broker refuses to over-admit, and construction fails without operator opt-in and an abuse policy.
L5
Agentic
weeks
Your app has its own agent over its own knowledge partition.
Proven by: the app working fully with the agent dark — and turning it off not reflowing the layout by a single pixel.
L6
Accountable
weeks
Tamper-evident contribution records. Measurement only — YSDK does not define distribution of anything of value.
Proven by: a tamper attempt being detected.
Validate your app, right now
Runs the real conformance checks in your browser. Nothing is uploaded, nothing is stored,
no account required. Paste a domain we can fetch, or paste a manifest directly.
Fetches https://<domain>/.well-known/ysdk.app.json. Requires CORS on your side.
Results appear here. Every check names the specification clause it enforces.
What YSDK is built on — and what it did not reinvent
W3C Decentralized Identifiers v1.1 — Candidate Recommendation, 2026-03-05. Identity. W3C publishes a test suite, so conformance is run rather than claimed.
UCAN v1.0.0 — delegation, invocation and revocation. Used at the wire level, exactly: envelope tags ucan/dlg@1.0.0 and ucan/inv@1.0.0, with the Varsig header carrying the signature algorithm inside the envelope.
W3C Web Application Manifest — Working Draft, 2026-08-13. Installability.
Multicodec registry — mldsa-87-pub0x1212, mlkem-1024-pub0x120d. Draft codepoints, so record the one you used rather than assuming it is stable.
An ecosystem that invents its own identity, capability and RPC formats must persuade every
application to learn three proprietary things, and must maintain them — including their
security review — forever. A profile inherits their tooling, their test suites, and every
application that already speaks them.
The ecosystem
State as verified on 2026-08-30. Rooms that do not yet serve are marked, so you never build against an endpoint that isn't there.
What this does not settle
Stated so nobody mistakes silence for permission.
No component of this ecosystem has been audited by an independent third party. Nothing here is certified or compliant, and we will not say otherwise until someone says it in writing.
The identity recovery model is undecided. It determines what self-custody actually means here more than any other choice.
The compute cluster protocol is unspecified. There is one node. A network that has never had a second node is unproven as a network.
Multicodec codepoints for ML-DSA and ML-KEM are draft, not final.
The post-quantum library at the root of trust is pre-1.0. An encoding change would make issued identities unverifiable, so it is pinned, vendored, and its test vectors are frozen into CI.
Per-app knowledge partitioning is specified in principle and unproven in practice.
You can reach Level 3 today without any of the above being resolved. That is the point of the ladder.