Product Docs
Product DocsTechnical DocsLearning & GovernanceUseful Links
  • Product Docs
  • Node Docs
  • Learning Docs
  • â„šī¸Getting Started
    • Product Overview
    • âžĄī¸Get Started with cheqd Studio
      • 👉Set Up Your Account
      • đŸ—ī¸Create API Keys
      • đŸĒ™Token Top Up
      • 🔄Advanced Configuration Options
    • â˜‘ī¸Use Trust Registries for AI Agents
      • đŸ—ī¸Build an AI Agent Trust Registry
        • Setup AI Agent Trust Registry
          • Issue Verifiable Credentials to AI Agent
        • Setup and Configure MCP Server
          • Create AI Agent DID
          • Import Credential to AI Agent
          • Advanced functionality
            • Issue a Verifiable Credential
            • Verify a Credential
      • 🤝Validate AI Agent Trust Chain
  • đŸŸĸStart using cheqd
    • 🆔Create DIDs and Identity Keys
      • Create a DID
      • Create Identity Keys
      • Create a Subject DID
      • Resolve a DID
      • Update a DID
      • Deactivate a DID
    • ✅Issue Credentials and Presentations
      • Issue a Verifiable Credential
      • Setup Verida Wallet
      • Verify a Verifiable Credential
      • Verify a Verifiable Presentation
      • Revoke a Verifiable Credential
      • Suspend or Unsuspend a Verifiable Credential
    • â™ģī¸Charge for Verifiable Credentials
      • Understanding Credential Payments
        • Access Control Conditions
        • Privacy Considerations
      • Charge for Status List
      • Issue Credential with Encrypted Status List
      • Create Verifier Pays Issuer flow
      • Bulk Update or Rotate Encryption Keys
    • 🤝Build Trust Registries
      • Decentralized Trust Chains (DTCs)
        • Root Authorisations
        • RTAO -> TAO
        • TAO -> SubTAO
        • TAO -> Trusted Issuer (TI)
        • Referencing Trust Registry within a Verifiable Credential
      • Set up Trust Chain
        • Issue a Verifiable Accreditation
        • Verify a Verifiable Accreditation
      • Get Started with TRAIN
        • Deploy TRAIN and Anchor rTAO in DNS
        • Validate Trust Chain
    • 🎋Create Status Lists
      • Bitstring Status List
        • Create Bitstring Status List
        • Update Bitstring Status List
        • Check Bitstring Status List
        • Search Bitstring Status List
      • Token Status List
        • Create Token Status List
        • Update Token Status List
    • â†•ī¸Create DID-Linked Resources
      • Understanding DID-Linked Resources
        • Context for developing DID-Linked Resources
        • Technical composition of DID-Linked Resources
        • Referencing DID-Linked Resources in VCs
      • Create a DID-Linked Resource
      • Search for DID-Linked Resources
  • đŸ› ī¸Integrate an SDK
    • Choosing the right SDK
    • 🍏Credo
      • Setup Credo Agent
      • Decentralized Identifiers (DIDs)
        • Create a DID
        • Update a DID
        • Deactivate a DID
      • DID-Linked Resources
        • Create a DID-Linked Resource
        • Resolve a DID-Linked Resource
        • Create an AnonCreds Schema
        • Create an AnonCreds Credential Definition
      • Verifiable Credentials and Presentations
        • AnonCreds
          • Issue a Verifiable Credential
          • Present a Verifiable Credential
        • JSON-LD
          • Issue a Verifiable Credential
          • Present a Verifiable Credential
        • SD-JWT VC
          • Issue a Verifiable Credential
          • Present a Verifiable Credential
          • Verify a Verifiable Credential
    • 🍊ACA-Py
      • Setup ACA-Py Agent
      • Decentralized Identifiers (DIDs)
        • Create a DID
        • Update a DID
        • Deactivate a DID
      • DID-Linked Resources
        • Create AnonCreds Schema
        • Create AnonCreds Credential Definition
      • Verifiable Credentials and Presentations
        • AnonCreds
          • Issue a Verifiable Credential
          • Present a Verifiable Credential
          • Revoke a Verifiable Credential
        • JSON-LD
          • Issue a Verifiable Credential
          • Present a Verifiable Credential
    • 🍈Veramo
      • Setup Veramo CLI for cheqd
        • Troubleshooting Veramo CLI Setup
      • Decentralized Identifiers (DIDs)
        • Create a DID
        • Querying a DID
        • Update an existing DID
        • Deactivate a DID
        • Create an off-ledger holder DID
        • Managing Identity Keys
        • Troubleshooting
      • Verifiable Credentials and Presentations
        • Issue a Verifiable Credential
        • Verify a Verifiable Credential
        • Create a Verifiable Presentation
        • Verify a Verifiable Presentation
      • Credential Payments
        • Charge for Status List
        • Issue Credential with Encrypted Status List
        • Verifier pays Issuer
      • Bitstring Status List
        • Create Status List
        • Issuing a Verifiable Credential referencing Status List
      • DID-Linked Resources
        • Create a DID-Linked Resource
        • Create a new Resource version within existing Collection
    • đŸĢWalt.id Community Stack
  • đŸ—ī¸Architecture
    • Architecture Decision Record (ADR) Process
    • List of ADRs
      • đŸ”ĩADR 001: cheqd DID Method
      • đŸŸĸADR 002: DID-Linked Resources
      • 🟡ADR 003: DID Resolver
      • 🟠ADR 004: DID Registrar
      • đŸŸŖADR 005: DID Resolution & DID URL Dereferencing
  • đŸ’ĢAdvanced features and alternatives
    • âžĄī¸DID Registrar
      • Setup DID Registrar
      • Create a DID
      • Create a DID-Linked Resource
    • âŦ…ī¸DID Resolver
      • Setup DID Resolver
    • ⚡AnonCreds Object Method
      • Schemas
      • Credential Definitions
      • Revocation Registry Definitions
      • Revocation Status Lists
    • 🌠Advanced Tooling
      • cheqd Cosmos CLI for identity
        • Create a DID
        • Update a DID
        • Deactivate a DID
        • Query a DID
        • Create a DID-Linked Resource
        • Update a DID-Linked Resource
      • Direct interaction with ledger code
      • VDR Tools CLI with cheqd (deprecated)
      • Demo Wallet for Identity Setup
  • âš›ī¸Network
    • Get started with cheqd Network
      • Identity Write Pricing
      • Comparison to Hyperledger Indy
    • ⏊Setup your Wallet
      • Setup Leap Wallet
        • Congifure cheqd Testnet for Leap
      • Setup Keplr Wallet
      • Migrate from Keplr to Leap Wallet
    • â†Ēī¸Useful Tools and APIs
      • Block Explorer
      • Testnet Faucet
      • Validator Status API
      • Cheqd x Cosmos Data APIs
      • Cosmos Airdrop Helpers
      • Cosmos Address Convertor
      • Ethereum Bridge
    • âŦ†ī¸Network Upgrades
      • 2021
        • 0.1.x
        • 0.2.x
        • 0.3.x
      • 2022
        • 0.4.x
        • 0.5.x
        • 0.6.x
      • 2023
        • 1.x
      • 2024
        • 2.x
        • 3.x
      • 2025
        • 3.1.x
        • 4.x
      • Root Cause Analysis of Outages
        • v1.x Upgrade RCA
        • v4.x Upgrade RCA (Testnet)
  • âš–ī¸Legal
    • License
    • Code of Conduct
    • Security Policy
  • 🆘Support
    • System Status
    • Discord
    • Bugs & Feature Requests
Powered by GitBook
LogoLogo

General

  • Website
  • Blog
  • Get $CHEQ

Product Docs

  • Product Docs
  • cheqd Studio
  • Creds.xyz
  • Bug/Feature Requests

Technical Docs

  • Node Docs
  • GitHub
  • Block Explorer

Learning Docs

  • Learning Docs
  • Governance Docs
  • Governance Forum
  • Governance Explorer
On this page
  • Pre-requisites
  • Configuration
  • Cheqd DID Registrar Driver
  • Universal Registrar Setup
  • Cheqd DID Resolver
  • Plugin Configuration
  • Wallet Compatibility
  • Recommended Wallet Storage: PostgreSQL
  • Build the Agent and deploy
  • Next steps

Was this helpful?

Edit on GitHub
Export as PDF
  1. Integrate an SDK
  2. ACA-Py

Setup ACA-Py Agent

Set up your ACA-Py agent to start using cheqd.

Pre-requisites

Before you begin, ensure you have a DID registrar and resolver running.

  • For testnet, you can use the Universal Registrar (with cheqd DID registrar driver) and a resolver.

  • For mainnet, you must run your own cheqd DID registrar driver with the correct mnemonic configuration. Details are provided below.

Configuration

All sample configs and docker-compose files are available here.

Cheqd DID Registrar Driver

To enable DID registration on Cheqd, you must deploy the Cheqd DID Registrar driver as a dedicated service. The fastest way to run the Cheqd Registrar driver is using the published docker image, for other options or to build your own container, check the GitHub repository.

Steps to deploy the Cheqd Registrar Driver

  1. Add the following under services section of your docker-compose file.

    driver-did-cheqd:
        image: ghcr.io/cheqd/did-registrar:production-latest
        platform: linux/amd64
        ports:
          - "9089:3000"
        restart: on-failure
        environment:
          - FEE_PAYER_TESTNET_MNEMONIC=${FEE_PAYER_TESTNET_MNEMONIC}
          - FEE_PAYER_MAINNET_MNEMONIC=${FEE_PAYER_MAINNET_MNEMONIC}
  2. Set the environment variables.

    export FEE_PAYER_TESTNET_MNEMONIC="your testnet mnemonic phrase ..."
    export FEE_PAYER_MAINNET_MNEMONIC="your mainnet mnemonic phrase ..."
  3. Run the driver.

    docker-compose up -d

The Cheqd Registrar must be run as driver-did-cheqd because the Universal Registrar is configured with that name by default.

Universal Registrar Setup

The Universal Registrar allows dynamic DID registration for multiple DID methods, including Cheqd. Setting it up ensures seamless DID creation without manual configurations for different DID methods. The fastest way to run the Universal Registrar is using the published docker container, for other options check the Universal Registrar GitHub repository.

Steps to setup Universal Registrar for Cheqd

  1. Add the following under services section of your docker-compose file.

    did_registrar:
        image: universalregistrar/uni-registrar-web:latest
        platform: linux/amd64
        ports:
          - "9080:9080"
        depends_on:
          - driver-did-cheqd
  2. Start the Universal Registrar Service.

    docker-compose up -d
  3. Confirm that the Cheqd Driver properties are correct and matches your settings.

    curl -X GET http://localhost:9080/1.0/properties

Cheqd DID Resolver

To run your own DID Resolver, the following settings must be added to your docker-compose file

Steps to deploy the Cheqd Resolver

  1. Add the following under services section of your docker-compose file.

    did_resolver:
        image: ghcr.io/cheqd/did-resolver:latest
        platform: linux/amd64
        ports:
          - target: 8080
            published: 8080
            mode: host
        restart: on-failure
        environment:
          MAINNET_ENDPOINT: "grpc.cheqd.net:443,true,5s"
          TESTNET_ENDPOINT: "grpc.cheqd.network:443,true,5s"
          LOG_LEVEL: "warn"
          RESOLVER_LISTENER: "0.0.0.0:8080"
  2. Run the resolver.

    docker-compose up -d

Plugin Configuration

Cheqd ACA-Py Plugin supports configuring the Universal Registrar and DID Resolver URLs via a plugin-config.yml file. These settings define how the agent interacts with the Cheqd network for DID operations.

Example plugin-config.yml:

resolver_url: "http://localhost:8080/1.0/identifiers/"
registrar_url: "http://localhost:9080/1.0/"

Update the URLs if you have your hosted versions or using the Universal Resolver.

Wallet Compatibility

The Cheqd plugin only works with the askar-anoncreds wallet type. Askar-anoncreds is the preferred wallet due to its support for AnonCreds and enhanced security features.

Setting Up Askar Wallet in ACA-Py

When starting ACA-Py, ensure that the wallet-type is set to askar. Example:

aca-py start --wallet-type askar-anoncreds --wallet-storage-type postgres_storage

Recommended Wallet Storage: PostgreSQL

Using PostgreSQL as a wallet storage backend is recommended for scalability and data persistence.

Setting Up PostgreSQL for ACA-Py

  1. Install PostgreSQL and create a database for ACA-Py.

  2. Configure ACA-Py to use PostgreSQL, add the following to ./configs/settings.yml:

    wallet-name: issuer
    wallet-key: somesecret
    wallet-storage-type: postgres_storage
    wallet-storage-creds: '{"account":"postgres","password":"postgres","admin_account":"postgres","admin_password":"postgres"}'
    wallet-storage-config: '{"url":"localhost:5432","max_connections":5}'
  3. Start ACA-Py with PostgreSQL-backed wallet storage.

    aca-py start --arg-file ./configs/settings.yml

Build the Agent and deploy

  1. Example Dockerfile:

    FROM ghcr.io/openwallet-foundation/acapy:py3.12-1.1.0
    
    USER root
    
    # install plugins as binaries
    RUN pip install git+https://github.com/openwallet-foundation/acapy-plugins@main#subdirectory=cheqd
    
    USER $user
    COPY ./configs configs
    
    ENTRYPOINT ["aca-py"]
  2. Build the ACA-Py Agent docker image with the plugin.

    docker build -t issuer-agent .
  3. Deploy the agent. Sample docker-compose is below.

    issuer:
        image: issuer-agent:latest
        ports:
          - "3001:3001"
          - "3002:3002"
        command: >
          start --arg-file ./configs/settings.yml
        healthcheck:
          test: curl -s -o /dev/null -w '%{http_code}' "http://localhost:3001/status/live" | grep "200" > /dev/null
          start_period: 30s
          interval: 7s
          timeout: 5s
          retries: 5
        depends_on:
          - did_registrar
          - did_resolver
  4. Where all the plugin settings are populated in ./configs/settings.yml , a sample file is here.

  5. Run the Agent.

    docker-compose up -d

Next steps

Now that your ACA-Py agent is successfully set up to work with cheqd, try following our tutorials for creating a new DID or issuing Verifiable Credentials.

Last updated 3 months ago

Was this helpful?

đŸ› ī¸
🍊

Create a DID

Create an Issuer DID using the did:cheqd DID method.

Issue a Verifiable Credential

Issue a Verifiable Credential using ACA-Py signed by a cheqd DID.