Conformance tooling for Ayra Trust Network implementations built on the certification-simple stack (the production baseline).
Current coverage
- ✅ TRQP trust registry checks
- ✅ Holder conformance flow
- ✅ Issue flow (utility flow, not scored as a conformance flow)
- 🚧 Verifier conformance flow (being finished now)
- ✅ Credential format: AnonCreds
- 🚧 Credential format: W3C LDP (in progress)
This repository contains conformance testing tools for validating digital identity implementations against Ayra Trust Network standards, focused on the certification-simple stack.
conformance-test-suite/
├── certification-simple/ # Primary CTS stack (Next.js + Express)
└── README.md # This file
Architecture: Monolithic Next.js application with integrated testing and Express API.
Status: Production baseline for TRQP, holder, and issue flows; verifier conformance flow is in progress; AnonCreds supported today with W3C LDP underway.
- Rapid iteration on conformance testing concepts
- Quick setup for demos and local validation
- Direct agent testing without external harnesses
- Development and debugging workflow validation
- Single Next.js application serving both frontend and backend
- Integrated Express.js server for API endpoints
- Built-in test pipeline orchestration with DAG-based execution
- Direct integration with Credo-TS agents
- Real-time WebSocket updates for test monitoring
- QR code generation for mobile wallet testing
- Node.js 18+
- pnpm 9.1.0+
- Docker & Docker Compose (recommended)
- Clone and configure env
git clone <repository-url>
cd conformance-test-suite
cp .env.example .env
# Set NGROK domains/tokens and choose your agent: REFERENCE_AGENT=credo|acapy- Start with Credo Reference Agent(s) (default)
# Ensure REFERENCE_AGENT=credo in .env
docker compose up --build app- Start with ACA-Py Reference Agent(s) (alternate)
# Set REFERENCE_AGENT=acapy in .env and provide REFERENCE_AGENT_NGROK_DOMAIN
# Optionally set ISSUER_OVERRIDE_AGENT/ISSUER_OVERRIDE_NGROK_DOMAIN if Credo issues
docker compose up --build acapy-control acapy-ngrok appWhen finished:
docker compose downRequired Environment Variables (in the repo root .env):
USE_NGROK=true # Enable NGROK tunneling for CTS services
NGROK_AUTH_TOKEN=your_token_here # NGROK authentication token (required when USE_NGROK=true)
REFERENCE_AGENT=credo|acapy # Which agent drives holder/verifier flows
REFERENCE_AGENT_NGROK_DOMAIN=ref.example.ngrok.app # Domain for the reference agent tunnel
VERIFIER_TEST_NGROK_DOMAIN=verifier.example.ngrok.app # Domain for the test-verifier container
ISSUER_OVERRIDE_AGENT=credo|acapy|auto # (optional) force the issuer controller
ISSUER_OVERRIDE_NGROK_DOMAIN=issuer.example.ngrok.app # Domain for the override issuer tunnel
SERVER_NGROK_DOMAIN=cts-server.example.ngrok.app # Domain for API callbacksFor NGROK domain planning, tunnel rotation, and the full list of optional variables see certification-simple/NGROK_SETUP.md.
REFERENCE_AGENTselects which controller powers the holder and verifier flows.credouses the built-in Credo agent;acapyconnects to the ACA-Py control service.ISSUER_OVERRIDE_AGENT(defaultauto) lets you force the credential issuer to Credo or ACA-Py independently of the reference agent. When set tocredo, also provideISSUER_OVERRIDE_NGROK_DOMAINso the override agent has a unique tunnel; otherwise the UI QR codes collide.REFERENCE_AGENT_NGROK_DOMAINis the hostname wallets use to reach the reference agent. When ACA-Py is the reference agent, theacapy-ngroksidecar automatically advertises this domain.VERIFIER_TEST_NGROK_DOMAINis only used by the standalonetest-verifiercontainer (the legacy CLI harness); it does not affect the UI flows.
- Frontend: http://localhost:3000
- API Server: http://localhost:5005
- Test Interfaces: http://localhost:3000/holder, /verifier, /issuer, /registry
Compatible Wallets Tested:
- ✅ BC Government Wallet - Successfully tested with holder conformance flows (Anoncreds only)
- 📱 Mobile wallets supporting DIDComm v2 protocols
- Fork and clone the repository
- Create a feature branch for your changes
- Test thoroughly in development environment
- Document any breaking changes
- Submit pull request with clear description
- Fast iteration with production hardening underway
🔒 Security Notes
Designed for controlled development environments; add hardening and authentication before internet exposure.
- No authentication or authorization mechanisms
- Unvalidated user inputs in many areas
- Potential injection vulnerabilities
- Insecure default configurations
- Missing rate limiting and DoS protection
- Unencrypted sensitive data transmission
- Debug information exposed in production builds
- Use only in isolated development environments
- Do not expose to public networks
- Do not process real credentials or sensitive data
- Implement proper security measures before any production use
Licensed under the Apache License 2.0. See LICENSE for details.
- 📚 Documentation: Check README files under
certification-simple/ - 🐛 Issues: Report bugs and issues via GitHub Issues
- 💬 Discussions: Use GitHub Discussions for questions and feedback
Tell us what works and what could be smoother:
- What works well?
- What breaks frequently?
- What features are missing?
- How can the architecture be improved?