Skip to content

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)
  • @context — JSON-LD context URL
  • @id — globally unique manifest identifier (a URI)
  • @type — MUST include lan: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)

v0.1 allows additional sections as long as consumers ignore unknown fields safely:

  • shards — composable sub-documents (lan:Shard)
  • claims — assertions (role, verification status, policy flags, etc.)
  • consents — permissions/consent grants
  • devices — device registrations / trust metadata
  • pointers — named references to canonical data sources
  • signature — permissive signature envelope (non-interoperable in v0.1)

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).

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.

v0.1 recommendation for issuers:

  • Generate @id as urn:uuid:<uuidv4>

Rationale:

  • globally unique
  • offline-safe
  • avoids premature commitments to content-addressed IDs before canonicalization is locked down

Consumer guidance (for constrained devices and public surfaces):

  • Cache the full manifest payload only while actively in use.
  • Persist only references to @id in logs/telemetry (optionally with a hash later).

v0.1 allows arbitrary names, but these well-known strings reduce fragmentation across early adopters.

  • canonicalProfilePointer
  • publicCapsule
  • publicProfile
  • venueIdentity
  • venuePolicy
  • edgeNode
  • deviceIdentity
  • venueAssociation
  • solidPod.creatorCanonical
  • solidPod.venueCanonical
  • matrix.userId
  • matrixRoom.updates
  • matrixRoom.revocations
  • activityPub.actor
  • edgeBaseUrl
  • edgeDescriptor
  • universalManifest.current
  • consumerExperience
  • role
  • verification.status
  • policy.safeMode
  • publicDisplay
  • analytics.proofOfPlay
  • telemetry.proofOfPlay
  • social.profilePublic
  • local
  • enrolled

Published artifacts (versioned, immutable)

Section titled “Published artifacts (versioned, immutable)”

These are expected to resolve over HTTPS:

  • JSON-LD context: /ns/universal-manifest/v0.1/schema.jsonld
  • JSON Schema: /ns/universal-manifest/v0.1/schema.json
  • Discovery (non-normative): /.well-known/universal-manifest.json

On the canonical standards host, that means:

  • https://universalmanifest.net/ns/universal-manifest/v0.1/schema.jsonld
  • https://universalmanifest.net/ns/universal-manifest/v0.1/schema.json
{
"@context": "https://universalmanifest.net/ns/universal-manifest/v0.1/schema.jsonld",
"@id": "urn:uuid:2b5f0d3c-3c4c-4b83-8f2a-6f3b2cbd5c7d",
"@type": "lan: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