Microsoft AutoGen + xLink Identity
Add identity-based authentication to Microsoft AutoGen multi-agent conversations. Replace API keys with per-agent DIDs. Each agent gets its own verifiable identity. Zero key management, zero credential rotation, zero cascading failures.
Installation
Install the AutoGen xLink adapter via pip. Works with any AutoGen version 0.2.0 or higher.
# Install AutoGen (if not already installed) pip install pyautogen # Install xLink adapter for AutoGen pip install @private.me/autogen-xlink
Requires pyautogen >= 0.2.0 and @private.me/xlink >= 1.0.0. The adapter automatically installs xLink as a dependency.
Basic Multi-Agent Conversation
Create two AutoGen agents with xLink identity. Each agent gets its own DID. Messages are authenticated end-to-end.
from autogen import AssistantAgent, UserProxyAgent from private_me.autogen_xlink import XLinkAdapter # Create xLink adapter (automatically generates DIDs for agents) adapter = XLinkAdapter() # Create assistant agent with xLink identity assistant = AssistantAgent( name="assistant", llm_config={"model": "gpt-4", "api_key": "..."} ) # Create user proxy agent with xLink identity user_proxy = UserProxyAgent( name="user_proxy", human_input_mode="NEVER", max_consecutive_auto_reply=10 ) # Enable xLink identity for both agents adapter.enable_for_agent(assistant) adapter.enable_for_agent(user_proxy) # Start conversation (messages are authenticated via xLink) user_proxy.initiate_chat( assistant, message="What is the weather in San Francisco?" ) # Each message is signed with sender DID, verified by recipient DID # Zero API keys, zero credential rotation, zero cascading failures
XLinkAdapter.enable_for_agent() wraps the agent's send and receive methods. Every outgoing message is signed with the sender's DID. Every incoming message is verified against the sender's DID. Messages without valid signatures are rejected.
Group Chat with Identity
Enable xLink identity for multi-agent group conversations. Each agent maintains its own identity. The group chat manager authenticates all messages.
from autogen import AssistantAgent, GroupChat, GroupChatManager from private_me.autogen_xlink import XLinkAdapter # Create xLink adapter adapter = XLinkAdapter() # Create three agents researcher = AssistantAgent(name="researcher", llm_config={...}) engineer = AssistantAgent(name="engineer", llm_config={...}) reviewer = AssistantAgent(name="reviewer", llm_config={...}) # Enable xLink identity for each agent adapter.enable_for_agent(researcher) adapter.enable_for_agent(engineer) adapter.enable_for_agent(reviewer) # Create group chat groupchat = GroupChat( agents=[researcher, engineer, reviewer], messages=[], max_round=12 ) # Create group chat manager with xLink identity manager = GroupChatManager(groupchat=groupchat, llm_config={...}) adapter.enable_for_agent(manager) # Start group conversation researcher.initiate_chat( manager, message="Let's design a distributed file storage system." ) # All messages authenticated: # - researcher → manager (verified) # - manager → engineer (verified) # - engineer → manager (verified) # - manager → reviewer (verified)
Benefits
Per-Agent Identity
Each AutoGen agent gets its own DID. No shared API keys, no credential leakage across agents. Identity is cryptographically bound to the agent instance.
Message Authentication
Every message signed with sender DID, verified by recipient. Tampered messages rejected automatically. Man-in-the-middle attacks prevented.
Zero Key Management
No API keys to rotate, no credentials to store, no secrets to leak. DIDs are self-sovereign. Agent restart = same DID, zero config.
Group Chat Security
All group chat messages authenticated end-to-end. Manager verifies every sender. No impersonation possible, even with compromised network.
Drop-In Integration
3 lines to enable xLink. Zero changes to AutoGen agents. Works with existing LLM configs, tools, and conversation flows.
Audit Trail
Every message includes sender DID and signature. Full conversation audit trail. Provable authorship for compliance and debugging.
Custom Trust Registry
Restrict agent-to-agent communication using a trust registry. Only allow messages from pre-approved DIDs.
from private_me.autogen_xlink import XLinkAdapter, TrustRegistry # Create trust registry registry = TrustRegistry() # Create adapter with trust registry adapter = XLinkAdapter(trust_registry=registry) # Create agents agent_a = AssistantAgent(name="agent_a", llm_config={...}) agent_b = AssistantAgent(name="agent_b", llm_config={...}) agent_c = AssistantAgent(name="agent_c", llm_config={...}) # Enable xLink for all agents adapter.enable_for_agent(agent_a) adapter.enable_for_agent(agent_b) adapter.enable_for_agent(agent_c) # Add agent_a and agent_b to trust registry (agent_c excluded) registry.add_did(agent_a.xlink_did) registry.add_did(agent_b.xlink_did) # agent_a ↔ agent_b: messages accepted (both in registry) # agent_c → agent_a: messages rejected (agent_c not in registry) # agent_a → agent_c: messages rejected (agent_c not in registry)
When a trust registry is configured, agents ONLY accept messages from DIDs in the registry. Messages from unknown DIDs are silently dropped. This prevents unauthorized agents from joining conversations.
Next Steps
- Read the xLink White Paper: Understanding identity-based M2M authentication
- Explore the Agent SDK: Full xLink API reference
- AutoGen Documentation: Microsoft AutoGen official docs
- Join the Community: Private.Me Discord server
Questions about AutoGen + xLink integration? Email contact@private.me or open a support ticket at private.me/support.