Specification v0.1
Universal Manifest v0.1 defines a portable state capsule: one document a subject (or a trusted issuer for that subject) can hand to multiple systems so those systems can safely learn:
- who the subject is (
subject) - when this capsule is valid (
issuedAt/expiresAt) - what the subject can do (claims / consents)
- how to find canonical data elsewhere (pointers / shard refs)
v0.1 is intentionally adoption-friendly:
- it is local-first (short TTL, bounded caching)
- it is forward compatible (unknown fields MUST be ignored safely)
- it is signature-permissive (integrity is staged; see v0.2)
Core document: um:Manifest
Section titled “Core document: um:Manifest”Required fields (v0.1)
Section titled “Required fields (v0.1)”@context— JSON-LD context URL@id— globally unique manifest identifier (a URI)@type— MUST includeum:Manifest(string or array)manifestVersion—"0.1"subject— who this manifest is about (a stable identifier URI; DID recommended but not required)issuedAt— ISO 8601 / RFC 3339 date-time (with timezone)expiresAt— ISO 8601 / RFC 3339 date-time (with timezone)
Optional fields (v0.1)
Section titled “Optional fields (v0.1)”v0.1 allows additional sections as long as consumers ignore unknown fields safely:
shards— composable sub-documents (um:Shard)claims— assertions (role, verification status, policy flags, etc.)consents— permissions/consent grantsdevices— device registrations / trust metadatapointers— named references to canonical data sourcessignature— permissive signature placeholder (non-interoperable in v0.1)
TTL and “use” semantics
Section titled “TTL and “use” semantics”Consumers MUST enforce TTL for use:
- If
now > expiresAt, the manifest MUST NOT be used to grant permissions or to render authoritative subject state. - Expired manifests MAY be retained for debugging, but MUST be treated as expired.
Issuers SHOULD use short TTLs appropriate to the surface (hours/days).
Extensibility (critical v0.1 rule)
Section titled “Extensibility (critical v0.1 rule)”Consumers MUST ignore unknown fields safely:
- unknown top-level properties
- unknown shard/entity shapes
- unknown item shapes inside
claims/consents/devices/pointers
This is what allows early adopters to extend the document without fragmenting the ecosystem.
Manifest IDs (@id)
Section titled “Manifest IDs (@id)”v0.1 recommendation for issuers:
- Generate
@idasurn:uuid:<uuidv4>
Rationale:
- globally unique
- offline-safe
- avoids premature commitments to content-addressed IDs before canonicalization is locked down
Caching + logging guidance (local-first)
Section titled “Caching + logging guidance (local-first)”Consumer guidance (for constrained devices and public surfaces):
- Cache the full manifest payload only while actively in use.
- Persist only references to
@idin logs/telemetry (optionally with a hash later).
Well-known names
Section titled “Well-known names”v0.1 allows arbitrary names, but these well-known strings reduce fragmentation across early adopters.
Shard names (shards[].name)
Section titled “Shard names (shards[].name)”canonicalProfilePointerpublicCapsulepublicProfilevenueIdentityvenuePolicyedgeNodedeviceIdentityvenueAssociation
Pointer names (pointers[].name)
Section titled “Pointer names (pointers[].name)”solidPod.creatorCanonicalsolidPod.venueCanonicalmatrix.userIdmatrixRoom.updatesmatrixRoom.revocationsactivityPub.actoredgeBaseUrledgeDescriptoruniversalManifest.currentconsumerExperience
Claim names (claims[].name)
Section titled “Claim names (claims[].name)”roleverification.statuspolicy.safeMode
Consent names (consents[].name)
Section titled “Consent names (consents[].name)”publicDisplayanalytics.proofOfPlaytelemetry.proofOfPlaysocial.profilePublic
Device trust levels (devices[].trust)
Section titled “Device trust levels (devices[].trust)”localenrolled
Published artifacts (versioned, immutable)
Section titled “Published artifacts (versioned, immutable)”These are expected to resolve over HTTPS:
On the canonical standards host, that means:
Minimal example (v0.1)
Section titled “Minimal example (v0.1)”{ "@context": "https://universalmanifest.net/ns/universal-manifest/v0.1/schema.jsonld", "@id": "urn:uuid:2b5f0d3c-3c4c-4b83-8f2a-6f3b2cbd5c7d", "@type": "um:Manifest", "manifestVersion": "0.1", "subject": "did:key:z6MkpExampleSubjectDid", "issuedAt": "2026-02-11T20:45:58Z", "expiresAt": "2026-02-12T20:45:58Z", "shards": []}- Conformance checklist + fixtures: Conformance → v0.1
- Draft integrity profile direction: Specification → v0.2
- Migration planning for signed manifests: Guides → Migration Guide: v0.1 to v0.2