Core Architecture
The Credo agent is composed of:- @credo-ts/core - The required foundation providing essential functionality
- Extension modules - Optional modules that add specific capabilities
- Platform modules - Platform-specific implementations (Node.js, React Native)
Module Registration
Modules are registered when creating an agent:Available Modules
Core
Essential framework functionality - required for all agents
OpenID4VC
OpenID for Verifiable Credentials support (issuer, holder, verifier)
AnonCreds
Privacy-preserving AnonCreds credential format
DIDComm
DIDComm v1 protocols for connections, credentials, and proofs
Tenants
Multi-tenancy support for hosting multiple agent instances
Askar
Secure storage and cryptographic operations using Aries Askar
Indy VDR
Hyperledger Indy ledger integration for AnonCreds
Cheqd
Cheqd network integration for DIDs and resources
Hedera
Hedera network integration (experimental)
Node
Node.js platform dependencies and utilities
React Native
React Native platform dependencies and utilities
Drizzle Storage
SQL-based storage using Drizzle ORM
Redis Cache
Redis-based caching for improved performance
Action Menu
DIDComm action menu protocol support
Question Answer
DIDComm question-answer protocol support
DRPC
Distributed RPC for agent communication
WebVH
did:webvh DID method support
Module Categories
Credential Formats
- AnonCreds - Privacy-preserving credentials with selective disclosure
- OpenID4VC - OpenID for Verifiable Credentials (OID4VCI, OID4VP)
Communication Protocols
- DIDComm - Secure, privacy-preserving messaging based on DIDs
Storage & Cryptography
- Askar - Secure storage and key management (recommended)
Ledger Integration
- Indy VDR - Hyperledger Indy networks
- Cheqd - Cheqd network
- Hedera - Hedera network (experimental)
Infrastructure
- Tenants - Multi-tenancy for SaaS applications
Choosing Modules
For AnonCreds Credentials
If you’re working with AnonCreds (Hyperledger Indy style credentials):For OpenID4VC Credentials
If you’re working with W3C Verifiable Credentials via OpenID4VC:For DIDComm Messaging
If you need peer-to-peer credential exchange:Module Lifecycle
Modules participate in the agent lifecycle:- Registration -
register()called to register dependencies - Initialization -
initialize()called when agent starts - Runtime - Module APIs available via
agent.modules.moduleName - Shutdown -
shutdown()called when agent stops