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:webfor venues identified by a public URL with HTTPSdid:keyfor other venuesdid:convexfor 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:webmethod's path encoding, so the DID resolves per the did:web specification tohttps://{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.