inter-agent-communication

Installation
SKILL.md

Inter-Agent Communication

Inter-Agent Communication defines the language and transport layer for agents to talk to each other. In a distributed system, Agent A (Booking) might run on a different server than Agent B (Payment). They need a standard way to find each other (Discovery), send requests (Messaging), and understand the data format (Protocol).

When to Use

  • Microservices Architecture: Breaking a monolithic agent into smaller, deployable services.
  • Ecosystem Integration: Allowing your agent to talk to agents built by other teams or companies.
  • Asynchronous Tasks: "Fire and forget" tasks where Agent A sends a job to Agent B and checks back later.
  • Load Balancing: Distributing tasks across a pool of identical agents.

Use Cases

  • Agent Marketplace: An agent searches a registry to find a "Translation Agent" and hires it for a task.
  • Supply Chain: A "Retail Agent" sends a restock order to a "Warehouse Agent", which confirms availability.
  • Delegation: A "Personal Assistant Agent" delegates a math problem to a specialized "Wolfram Alpha Agent".

Implementation Pattern

# Conceptual A2A (Agent-to-Agent) Interaction

class AgentA:
    def run(self):
        # Step 1: Discovery
        # Find an agent that supports the 'payment' skill
        payment_agent_url = directory.lookup(skill="process_payment")
        
        # Step 2: Messaging (HTTP/RPC)
        # Send a structured request
        payload = {
            "task": "pay_invoice",
            "amount": 100,
            "currency": "USD"
        }
        
        response = http.post(f"{payment_agent_url}/inbox", json=payload)
        
        # Step 3: Handle Response
        if response.status == "CONFIRMED":
            print("Payment successful")

Examples

Input: An orchestrator agent distributing research tasks to specialist agents.

# Orchestrator sends task
orchestrator.send(Message(
    to="researcher-agent-1",
    task="Find all SEC filings for AAPL in 2024",
    context={"output_format": "json", "deadline": "2025-03-01"}
))

# Researcher replies
researcher.send(Message(
    to="orchestrator",
    status="complete",
    result=filings_data,
    metadata={"sources": 14, "latency_ms": 3200}
))

Troubleshooting

Problem Cause Fix
Messages lost No delivery acknowledgement Require ACK from receiver; use at-least-once delivery with idempotency keys
Agents talk past each other No shared schema Define a typed message schema (Pydantic/JSON Schema) for all message types
Deadlock between agents Circular dependency Design a strict orchestrator hierarchy; no peer-to-peer blocking calls
Message queue backs up Slow consumer agent Add horizontal scaling or a priority queue for time-sensitive messages
Related skills

More from lauraflorentin/skills-marketplace

Installs
1
First Seen
7 days ago