Skip to main content
An OpenWallet Foundation project

Build issuers, verifiers and wallets in TypeScript

Credo is an open source framework for verifiable credentials. Issue, hold and verify SD-JWT VC, mdoc, W3C and AnonCreds credentials over OpenID4VC and DIDComm, from one codebase on Node.js and React Native.

Using an AI coding agent? Give it llms.txt or read how to point it at the docs.

issuer.ts
const agent = new Agent({
dependencies: agentDependencies,
modules: {
storage, // records in Drizzle
askar, // keys in Askar
openid4vc: new OpenId4VcModule({
app,
issuer: {
baseUrl: 'https://issuer.example.com/oid4vci',
credentialRequestToCredentialMapper,
},
}),
},
})
await agent.initialize()

const { issuer } = agent.openid4vc

// Offer a credential with the pre-authorized code flow
const offer = await issuer.createCredentialOffer({
issuerId: 'example-issuer',
credentialConfigurationIds: ['membership'],
preAuthorizedCodeFlowConfig: {},
})
Built on open standards
  • OpenID4VCI
  • OpenID4VP
  • ISO 18013-5
  • DC API
  • SD-JWT VC
  • mdoc
  • W3C VC
  • DIDComm
  • AnonCreds

In production

Who uses Credo

Platforms, wallets and apps that run on Credo today.

Paradym logoParadym logo

Paradym

by Animo

A platform for issuing and verifying credentials in EUDI and other ecosystems. It can issue and verify credentials from national EUDI wallets such as France Identité and the German d‑you. Each customer is a separate Credo tenant.

  • Issuer
  • Verifier
  • EUDI
Paradym Wallet logoParadym Wallet logo

Paradym Wallet

by Animo

An open source wallet app for iOS and Android, built with Credo on React Native. It supports the EUDI flows, such as receiving a PID and presenting it with OpenID4VP, as well as DIDComm, and is a starting point for building your own wallet.

  • Wallet
  • EUDI
  • Open source
2060 logo2060 logo

2060

Builds Hologram, a messaging app and AI agent framework where people, services and agents identify each other with verifiable credentials. The Hologram app and VS Agent, the service agent of the Verana trust network, are built on Credo.

  • Messaging
  • AI agents
  • Verana
Digital Catapult logoDigital Catapult logo

Digital Catapult

A UK deep tech innovation organisation. Its open source Veritable framework provides a RESTful interface for supply chain use cases exploring verifiable credentials. The Veritable cloud agent runs on Credo, supporting DIDComm, W3C credentials and AnonCreds.

  • Supply chain
  • Open source

Building with Credo? Add your project.

Interoperable

Speaks the standards your ecosystem uses

Exchange protocols and credential formats are separate building blocks in Credo, so you can combine them the way your ecosystem requires: EUDI and mobile driving licences, Aries networks, or both.

FormatOpenID4VCISO mdocDIDComm
OpenID4VCIOpenID4VPDC APIProximityDC APIIssue Credential v2Present Proof v2
SD-JWT VCdc+sd-jwtSupportedSupportedSupportedNot supportedNot supportedNot supportedNot supported
mdocISO 18013-5SupportedSupportedSupportedSupported: The BLE or NFC transport comes from a native moduleSupported: ISO/IEC 18013-7 Annex CNot supportedNot supported
W3C VC 1.1, JWTjwt_vc_jsonSupportedSupportedSupportedNot supportedNot supportedNot supportedSupported: Through DIF Presentation Exchange
W3C VC 1.1, JSON-LDldp_vcPartly supported: Issuing between Credo agents needs workaroundsPartly supported: Presenting with DCQL fails when Credo creates the presentationPartly supported: Presenting with DCQL fails when Credo creates the presentationNot supportedNot supportedSupportedSupported: Through DIF Presentation Exchange
W3C VC 2.0, SD-JWTvc+sd-jwtSupportedSupportedSupportedNot supportedNot supportedSupported: Aries RFC 0881Not supported
W3C VC 2.0, Data Integrityeddsa-jcs-2022Not supportedNot supportedNot supportedNot supportedNot supportedSupported: The issuer doesn't verify the holder's binding proofNot supported
AnonCredsCL signaturesNot supportedNot supportedNot supportedNot supportedNot supportedSupportedSupported
DID methods
  • did:key
  • did:jwk
  • did:peer
  • did:web
  • did:webvh
  • did:cheqd
  • did:indy
  • did:sov
  • did:hedera
All supported standards

Pluggable by design

Pick the pieces you need

Every capability is a module. You choose the storage, key management, DID methods and protocols your deployment needs.

agent.ts
const agent = new Agent({
dependencies: agentDependencies,
modules: {
// Records in PostgreSQL with Drizzle, keys in Askar
storage: new DrizzleStorageModule({
database,
bundles: [tenantsBundle, openid4vcBundle, didcommBundle],
}),
askar: new AskarModule({
askar: NativeAskar,
enableStorage: false,
store,
}),
// Replace the default cache, required with tenants
cache: new CacheModule({ cache: new InMemoryLruCache({ limit: 500 }) }),
tenants: new TenantsModule(),
// Exchange protocols
openid4vc: new OpenId4VcModule(),
didcomm: new DidCommModule(),
},
})

Open source

Built in the open

Credo is an Apache 2.0 licensed project of the OpenWallet Foundation, developed by a community of maintainers and contributors.

Set up your first agent

Install Credo, configure storage and keys, and create your first DID in a few minutes.