Credential Repository Setup
Set up a repository with credential definitions that the registry can discover and publish automatically.
Overview
The registry discovers credentials directly from your repository — no GitHub Action or separate build step is needed. You author credential definitions in your repo, and the registry's build pipeline clones your repo, detects credentials, and publishes them.
Quick Start
-
Create a credential Markdown file (see
Markdown Format):
--- vct: https://credentials.example.com/identity --- # Identity Credential A national identity credential. ## Claims - `given_name` (string): Given name of the holder [mandatory] - `family_name` (string): Family name of the holder [mandatory] - `birth_date` (string): Date of birth in ISO 8601 [mandatory] -
Add a
schema-meta.yamlfor TS11 compliance:# identity.schema-meta.yaml attestationLoS: high bindingType: key rulebookURI: https://example.com/rulebook -
Tag your repo with the
vctmtopic on GitHub (or request addition tosources.yaml) - Done. The registry discovers your repo and publishes the credentials within 6 hours
Credential File Formats
The registry supports two approaches for providing credentials:
Markdown (Recommended)
Write credential definitions in Markdown with vct: YAML front matter.
The registry automatically converts them to all supported metadata formats
(SD-JWT VC, mDOC, W3C VC) using the embedded
mtcvctm library.
See the Markdown Format Reference for the full specification.
Pre-built JSON
If you already have credential metadata JSON files, place them directly in your repository:
.vctm.json— SD-JWT VC Type Metadata.mdoc.json— mso_mdoc (ISO 18013-5) configuration.vc.json— W3C Verifiable Credentials Data Model 2.0
Example Repository Layout
my-credentials/
├── README.md
├── identity.md # Markdown credential definition
├── identity.schema-meta.yaml # TS11 metadata
├── diploma.md # Another credential
├── diploma.schema-meta.yaml
└── license/
├── driving-license.vctm.json # Pre-built JSON
├── driving-license.mdoc.json
└── driving-license.schema-meta.yaml
TS11 Schema Metadata
The schema-meta.yaml file declares TS11 properties for a
credential. The filename prefix should match the credential file:
| Field | Required | Description |
|---|---|---|
attestation_los | Yes | Level of security: iso_18045_high, iso_18045_moderate, iso_18045_enhanced-basic, iso_18045_basic |
binding_type | Yes | Binding mechanism: key, biometric, claim, none |
rulebook_uri | No | URI to the attestation policy rulebook |
trusted_authorities | No | List of trusted authority references |
Migrating from mtcvctm GitHub Action
If your repository previously used the mtcvctm GitHub Action to build and publish VCTM files, you can migrate to the new registry-cli workflow. The registry now discovers credentials directly from your repository — no build step or GitHub Action is required.
What changed
| Old (mtcvctm Action) | New (registry-cli) |
|---|---|
| GitHub Action runs on every push | No Action needed — registry discovers your repo |
Publishes to a separate vctm branch |
Credentials live on your default branch |
Generates .vctm.json files only |
Generates .vctm.json, .mdoc.json, .vc.json |
| No TS11 compliance metadata | Full TS11 support via schema-meta.yaml |
Legacy vctm-registry.json index |
TS11 /api/v1/schemas.json + attributes API |
Step-by-step migration
-
Remove the GitHub Action workflow.
Delete
.github/workflows/publish-vctm.yml(or whatever your mtcvctm workflow file is called). -
Keep your Markdown credential files.
The
.mdfiles withvct:front matter work identically with registry-cli. No changes needed. -
Delete the
vctmbranch (optional). The generated JSON files on this branch are no longer consumed.git push origin --delete vctm -
Add
schema-meta.yamlfiles for TS11 compliance. For each credential, create a matching YAML file:# identity.schema-meta.yaml attestation_los: iso_18045_high # Required binding_type: key # Required