---
# System prepended metadata

title: Veramo Demo - March 2021

---

# Veramo Demo - March 2021

# CLI Agent Setup

### Note
Some of the mentioned domain configurations for ngrok are owned by a Consensys Account and would need to be updated accordingly.

### Outline
This demo flows describe the setup and configuration of three veramo instances and issue, request and presentation flow of a Verifiable Credential with an "employer" claim.


## ALICE Setup (Holder / Self-Issuer)

```
mkdir alice
cd alice
veramo config create
nano agent.yml
```
* uncomment ngrok setup
`subdomain: alice-demo`
`region: us`

```
veramo server
```

## BOB Setup (Requesting Information)

```
mkdir bob
cd bob
veramo config create
nano agent.yml
```
* change port to 3333
*   uncomment and change ngrok setup
`subdomain: bob-demo`
`region: us`

```
veramo server
```

## Charlie Setup (Remote Agent - Holder / Self-Issuer)

- Add Heroku Instance (Hosted Agent): (Deployment Instructions in Appendix) `https://rado0x54-veramo.herokuapp.com/open-api.json`
```
mkdir charlie
cd charlie
veramo config create
nano agent.yml
```
* replace config with:
```
version: 1.0
agent:
  $require: '@veramo/core#Agent'
  $args:
    - schemaValidation: false
      plugins:
        - $require: '@veramo/remote-client#AgentRestClient'
          $args:
            - url: https://rado0x54-veramo.herokuapp.com/agent
              headers:
                Authorization: Bearer 86b296461f1fd8092b482e5a08b759e0af5d20d8b40799dc2dcda318b3fe7e85
              enabledMethods:
                - keyManagerGetKeyManagementSystems
                - keyManagerCreate
                - keyManagerGet
                - keyManagerDelete
                - keyManagerImport
                - keyManagerEncryptJWE
                - keyManagerDecryptJWE
                - keyManagerSignJWT
                - keyManagerSignEthTX
                - didManagerGetProviders
                - didManagerFind
                - didManagerGet
                - didManagerCreate
                - didManagerGetOrCreate
                - didManagerImport
                - didManagerDelete
                - didManagerAddKey
                - didManagerRemoveKey
                - didManagerAddService
                - didManagerRemoveService
                - resolveDid
                - dataStoreSaveMessage
                - dataStoreSaveVerifiableCredential
                - dataStoreSaveVerifiablePresentation
                - dataStoreORMGetIdentifiers
                - dataStoreORMGetIdentifiersCount
                - dataStoreORMGetMessages
                - dataStoreORMGetMessagesCount
                - dataStoreORMGetVerifiableCredentialsByClaims
                - dataStoreORMGetVerifiableCredentialsByClaimsCount
                - dataStoreORMGetVerifiableCredentials
                - dataStoreORMGetVerifiableCredentialsCount
                - dataStoreORMGetVerifiablePresentations
                - dataStoreORMGetVerifiablePresentationsCount
                - handleMessage
                - sendMessageDIDCommAlpha1
                - createVerifiablePresentation
                - createVerifiableCredential
                - createSelectiveDisclosureRequest
                - getVerifiableCredentialsForSdr
                - validatePresentationAgainstSdr
```

# Cloud Agent Setup
- Demo one-click Veramo deployment 

# DID Identifiers
```
% veramo did -h  
Usage: veramo did [options] [command]

Decentralized identifiers

Options:
  -h, --help        display help for command

Commands:
  providers         list available identifier providers
  list              list managed identifiers
  create            create an identifier
  delete            create an identifier
  add-service       add a service endpoint to did document
  remove-service    remove a service endpoint from did document
  add-key           create and add a public key to did document
  remove-key        remove a key from did document
  export            export an identifier
  import            import an identifier
  resolve <didUrl>  Resolve DID Document
  help [command]    display help for command
```

## Resolve various DID with any Veramo cli
```
veramo did resolve did:web:rado0x54-veramo.herokuapp.com 
veramo did resolve did:web:rado0x54-veramo.herokuapp.com:test
veramo did resolve did:ethr:0x861ecf3069ca6b4b39ee641822bcb1c0e81d96b1
veramo did resolve did:web:alice-demo.ngrok.io
```

## Add other identifiers to Alice
1. Add did:ethr
```
veramo did create
? Select identifier provider did:ethr
? Select key management system local
? Enter alias new_ethr
```
2. Add did:web (sub-identifier)
```
veramo did create     
? Select identifier provider did:web
? Select key management system local
? Enter alias alice-demo.ngrok.io:sub-id
```
3. Add Service to did:web
```
veramo did add-service
? Select DID did:web:alice-demo.ngrok.io:sub-id
? Service type SecureDataStore
? Endpoint https://test.de/store
? ID store123
```
4. Add Key to did:web
```
% veramo did add-key
? Select DID did:web:alice-demo.ngrok.io:sub-id
? Select key management system local
? Type Ed25519
Success: { success: true }
```


# Credential Flow

## 3 Alice (or Charlie) create (self-signed) Credential

```
% veramo credential
? Issuer DID did:web:rado0x54-veramo.herokuapp.com rado0x54-veramo.herokuapp.c
om
? Subject DID did:web:alice-demo.ngrok.io 
? Credential Type (VerifiableCredential,Profile) 
mriedel@MR-MBP15 charlie % veramo credential
? Issuer DID did:web:rado0x54-veramo.herokuapp.com rado0x54-veramo.herokuapp.c
om
? Subject DID did:web:alice-demo.ngrok.io
? Credential Type VerifiableCredential,Profile
? Claim Type name
? Claim Value Alice
? Is the credential revocable? No
```

Claim type = `name`
Claim value = `Alice`

```
veramo credential
```
Claim type = `lastName`
Claim value = `Doe`

```
veramo credential
```
Credential Type = `VerifiableCredential,EmploymentCredential`
Claim type = `employer`
Claim value = `American Express`

```
veramo credential
```
Claim type = `employer`
Claim value = `Coca Cola (Board)`



## 4 BOB Send SDR (to Alice or to Charlie)


```
cd bob
veramo sdr create
```

Claim type = `employer`
Claim type = `lastName`

Use `did:web:alice-demo.ngrok.io` as subject DID.

Show message received at Alice:
```
Received message sdr 81...
```
 
## 5 Alice/Charlie SDR Response


```
cd alice
veramo sdr respond
```

## 6 ALICE Data explorer

```
cd alice
veramo explore
```
Or add Alice to `Agent Explorer` (http://localhost:5000)

## 7 BOB Data explorer

```
cd bob
veramo explore
```
Or add Bob to `Agent Explorer` (http://localhost:5000)

## 7 Charlie Data explorer

```
cd charlie
veramo explore
```
Or add Charlie to `Agent Explorer` (http://localhost:5000)

# Remote Agent

## Show Heroku deployment template

## Connect remote instance to local CI config

# Include Instances in Agent Explorer Instance

Local deployment at http://localhost:5000

- Add Alice (Dev Agent): `https://alice-demo.ngrok.io/open-api.json
`
- Add Bob (Dev Agent): `https://bob-demo.ngrok.io/open-api.json
`
- Add Heroku Instance (Hosted Agent): `https://rado0x54-veramo.herokuapp.com/open-api.json`
API_KEY: `86b296461f1fd8092b482e5a08b759e0af5d20d8b40799dc2dcda318b3fe7e85`