Skip to main content

COG-2: Decentralised ID

Status: Draft
Version: 1.0
Created: 2025-09-23
Authors: Mike Anderson

This standard specifies the methods for identifying venues and other resources on the grid

Purpose

The Grid enables secure and efficient collaboration between AI agents, data providers, and compute resources across organisational boundaries.

In order to operate effectively as a protocol, it is necessary to be able to identify venues and resources with stable global IDs.

Specification

Venue DID

A venue MUST provide a W3C compatible did, e.g. did:web:venue-3.covia.ai

The DID must utilise one of the following methods:

  • did:web for venues identified by a public URL with HTTPS
  • did:key for other venues
  • did:convex for venues registered on the Convex network

A venue MAY provide multiple equivalent DIDs which resolve to the same venue. If it does so, it MUST provide a canonicalID which specifies its primary DID, and return this as the id property for its DID document.

Asset DID

Assets MUST have a DID constructed where:

  • The path is /a/{asset-id}
  • {asset-id} is the Asset ID (the Value ID of the asset metadata — see COG-5), in hexadecimal

Example:

did:web:venue-3.covia.ai/a/14a3a6b804629835f5466d03f789dd92a45381474d58c1224dfe344e6934c022

The hexadecimal asset ID MAY be prepended by 0x and/or contain a mix of uppercase and lowercase characters.

The canonical ID of an asset MUST exclude 0x and be in lowercase.

Venues SHOULD be capable of providing a DID document for any asset they host, subject to authorisation.

User DIDs

A venue MAY assign venue-managed user DIDs to the named users it manages (e.g. after OAuth login — see COG-10). These are standard did:web DIDs formed from the venue's own did:web identity with a :u: path segment:

did:web:{venue-host}:u:{username}

Example: did:web:venue-3.covia.ai:u:alice

  • {username} MUST match [A-Za-z0-9._-]+.
  • No new DID method is introduced: the colon-separated segments are the did:web method's path encoding, so the DID resolves per the did:web specification to https://{venue-host}/u/{username}/did.json. The venue serves this DID document and is the controller of the DID — it signs assertions about the user with its own key pair.
  • A public hostname is required; a venue without one cannot mint resolvable user DIDs.

Note the distinction between principals and resources: principals (venues, users) have DIDs of their own, while assets are resources addressed by a DID URL path (/a/{asset-id}) under their hosting venue's DID.