Installation
QWED A2A requires Python 3.10+. The
cryptography and PyJWT packages are installed automatically for JWT attestation support.Configure a signing key
QWED A2A signs every verdict with a persistent ECDSA P-256 key so attestations remain verifiable across restarts. SetQWED_A2A_SIGNING_KEY_PEM before importing qwed_a2a — without it the interceptor fails closed on the first call.
Your first verification
1
Import the interceptor
2
Create an interceptor
- All verification engines enabled
- Crypto attestation enabled (if packages available)
default_allow=Truetrust boundary
3
Build a test message
4
Run verification
5
Check the output
Try different scenarios
Block a hallucinated total
Block a hallucinated total
Block dangerous code
Block dangerous code
Catch logical contradictions
Catch logical contradictions
Run the FastAPI gateway
QWED A2A includes a ready-to-use HTTP gateway. Every call toPOST /a2a/intercept must authenticate with a per-agent API key in the X-API-Key header. Configure keys through the QWED_A2A_API_KEYS environment variable, a JSON object mapping each key to its agent ID. There is no anonymous access: if no keys are configured, the endpoint denies every request with 401.
GENERAL and DATA_QUERY payloads have no verification engine, so the interceptor returns an unverifiable verdict with no JWT attestation — signing a token for content that was never verified would be a false cryptographic claim. Callers must decide how to handle unverified traffic. To see a signed forwarded verdict, send a financial_transaction, logic_assertion, or code_execution payload instead. See the verdict status table for the full contract.
Next steps
- Architecture deep-dive — understand the full pipeline
- Trust boundary — configure zero-trust policies
- Crypto attestations — understand JWT signing
- Production deployment — Docker, monitoring, CI/CD