AgentDNA is a package that helps in auditing and verifiability of Agents within a multi-agent communication system.
- Unified trust layer for multi-agent systems
- Automatically manages:
- DID setup
- Signing traces of conversation
- Verification of Agent conversation
- Immutable audit logging
- Fully compatible with:
- Google A2A protocol
- ADK, Crew and LangGraph frameworks
# Installation via pip
pip install agent-dna
# Installation via uv
uv add agent-dna
AgentDNA abstracts the complexity of identity, provenance and governance, giving developers a simple, unified interface for secure agent behavior
┌─────────────────────────┐
│ Agent Developer │
│ dna.build() / handle() │
└─────────────┬───────────┘
│
┌─────────────────────────┐
│ AgentDNA │
│ role = "host" | "remote"│
└─────────────┬───────────┘
│
┌─────────────────────────┐
│ RubixMessageHandler |
│ - build host/agent msgs │
│ - parse & verify inbound│
│ - NFT execution (host) │
└─────────────┬───────────┘
│
┌───────────────────────────┐
│ RubixTrustService │
│ - DID management │
│ - sign_envelope() │
│ - verify_envelope() │
│ - verify_message_payload()│
└─────────────┬─────────────┘
│
┌─────────────────────────┐
│ rubix-py SDK │
│ RubixClient │
│ Signer │
│ Querier │
└─────────────────────────┘
AgentDNA supports two roles:
Responsible for:
- Signing and sending outgoing host_request
- Verifying inbound agent_response
- Optional NFT execution for audit logging
Responsible for:
- Verifying inbound host_request
- Signing outbound agent_response
from agentdna import AgentDNA
dna = AgentDNA(alias="<agent alias>", role="<host/remote>", api_key="<API Key for AgentDNA Backend>")verify_info = await dna.handle(raw_text=raw_message, verify_mode="<light/heavy>")
reply = run_llm(original_msg)
built = dna.build(
original_message=original_msg,
response=reply,
host_block=host_block,
)outbound = dna.build(
original_message="Are you free tomorrow?",
state={"task_id": tid, "context_id": cid}
)
result = await self.dna.handle(
resp_parts=resp_parts,
original_task=task,
remote_name=agent_name,
)agentdna/
├── core.py
├── handler.py
├── trust.py
├── node_client.py
└── ...
Full Host, ADK, and LangGraph examples can be found inside https://github.com/rubixchain/agentdna/tree/main/examples.
MIT