QWED A2Av0.3.0
Zero-trust checks for messages between agents.
Agents don’t trust each other, so QWED A2A checks for them. It intercepts Agent-to-Agent messages, applies a trust boundary, checks money totals exactly and signs every result it can decide.
At a glance
- Version
- 0.3.0
- Status on PyPI
- Alpha
- Install
- pip install qwed-a2a
- Protocol
- Google’s Agent-to-Agent (A2A)
- Attestation
- ES256-signed JWT
- Model in the check
- None
- Licence
- Apache-2.0
What it checks
- TrustBoundary
Who may talk
Blocklists, allowlists and rate limits for agents.
- Finance check
Money totals
Recomputes line-item totals with exact decimal maths. The only check that can return verified.
- Logic check
Contradictions
Claims that are both asserted and negated. Returns heuristic_pass, which is not enough to act on.
- Code check
Dangerous code
AST and pattern scan for eval, os.system and similar. Returns heuristic_pass.
- Attestation
Signed results
Every decided outcome carries an ES256 JWT. A FastAPI gateway with per-agent keys is included.
Mistakes it is built to catch
Nobody checked any of it
Without QWED A2A
-
A total that does not add upAn agent claims a total of 999.99 for items that come to 150.00.
-
A contradiction“budget_approved” is asserted and negated in the same message.
Each one checked before it is used
With QWED A2A
- A total that does not add upFinance checkThe items come to 150.00, so the message is held.VERIFIED · DENY
- A contradictionLogic checkFlagged as a heuristic signal, not a verdict to act on.
What is proven correct goes through, with a record of why.
QWED returns the decision; your integration acts on it.
Get started
pip install qwed-a2aGood to know
- Only finance checks can return verified. Logic and code checks return heuristic_pass, which is not admissible on its own; never execute such a payload without your own sandbox.
- General and data-query messages are unverifiable.
- It needs a signing key in QWED_A2A_SIGNING_KEY_PEM.