Skip to main content

Python implementation of the Agent Remote Communication (ARC) Protocol

Project description

Agent Remote Communication (ARC) Protocol - Multi-Agent Communication Revolution

PyPI version License: Apache 2.0 Python 3.8+ Downloads GitHub stars Code style: black

๐Ÿš€ World's First Multi-Agent RPC Protocol

ARC (Agent Remote Communication) is the first RPC protocol that solves multi-agent deployment complexity with built-in agent routing, load balancing, and workflow tracing. Deploy hundreds of different agent types on a single endpoint with zero infrastructure overhead.

๐ŸŽฏ Revolutionary Multi-Agent Features:

  • ๐Ÿ—๏ธ Single Endpoint, Multiple Agents - Deploy 10s or 100s of agents behind https://company.com/arc
  • โš–๏ธ Built-in Load Balancing - Route to finance-agent-01, finance-agent-02, finance-agent-03 automatically
  • ๐Ÿ”„ Cross-Agent Workflows - Agent A โ†’ Agent B โ†’ Agent C with full traceability via traceId
  • ๐Ÿ“ก Unified Agent Management - No service discovery, no API gateways, no orchestration engines required
  • ๐Ÿ” End-to-End Tracing - Track complex workflows across multiple agent interactions
  • โšก Zero Infrastructure Overhead - Single deployment handles all agent types

๐Ÿ†š Why ARC vs Others:

Feature ARC JSON-RPC 2.0 gRPC REST
Agent Routing โœ… Built-in โŒ Manual โŒ Manual โŒ Manual
Workflow Tracing โœ… Native โŒ Custom โš ๏ธ External โŒ Custom
Multi-Agent Ready โœ… First-class โŒ DIY โŒ DIY โŒ DIY
Load Balancing โœ… Protocol-level โŒ External โŒ External โŒ External
Learning Curve โœ… Simple โœ… Simple โŒ Complex โœ… Simple

๐Ÿ“ฆ Quick Start

Installation

pip install arc-sdk

๐Ÿ”ฅ 30-Second Multi-Agent Demo

from arc import ARCClient

# Create ARC client
client = ARCClient("https://company.com/arc", token="your-oauth2-token")

# Step 1: User requests document analysis
task_response = await client.task.create(
    target_agent="document-analyzer-01",
    initial_message={"role": "user", "parts": [{"type": "TextPart", "content": "Analyze quarterly report"}]},
    trace_id="workflow_quarterly_report_789"  # ๐Ÿ” Workflow tracking
)

# Step 2: Document agent automatically calls chart generator
chart_response = await client.task.create(
    target_agent="chart-generator-01", 
    initial_message={"role": "agent", "parts": [{"type": "DataPart", "content": "{\"revenue\": 1000000}"}]},
    trace_id="workflow_quarterly_report_789"  # ๐Ÿ” Same workflow ID!
)

# Step 3: Real-time chat with customer support agent
chat = await client.chat.start(
    target_agent="support-agent-01",
    initial_message={"role": "user", "parts": [{"type": "TextPart", "content": "Help with account"}]}
)

๐Ÿ—๏ธ Architecture: Single Endpoint, Infinite Agents

https://company.com/arc  โ† Single endpoint for everything
โ”œโ”€โ”€ finance-analyzer-01, finance-analyzer-02    (Load balanced)
โ”œโ”€โ”€ document-processor-03, document-processor-04
โ”œโ”€โ”€ chart-generator-05
โ”œโ”€โ”€ customer-support-06
โ””โ”€โ”€ report-writer-07

๐ŸŽฏ Core Methods - Simple but Powerful

๐Ÿ“‹ Task Methods (Asynchronous)

Perfect for long-running operations like document analysis, report generation:

# Create task
task = await client.task.create(target_agent="doc-analyzer", initial_message=msg)

# Send additional input (when agent needs more info)
await client.task.send(task_id="task-123", message=additional_msg)

# Get results
result = await client.task.get(task_id="task-123")

# Cancel if needed
await client.task.cancel(task_id="task-123")

# Subscribe to notifications
await client.task.subscribe(task_id="task-123", webhook_url="https://myapp.com/hooks")

๐Ÿ’ฌ Chat Methods (Real-time)

Perfect for interactive chat, live assistance, collaborative editing:

# Start real-time conversation
chat = await client.chat.start(target_agent="chat-agent", initial_message=msg)

# Continue conversation
await client.chat.message(chat_id="chat-456", message=followup_msg)

# End when done
await client.chat.end(chat_id="chat-456")

๐Ÿ”” Notification Methods (Server-initiated)

Agents push updates back automatically:

# Agents send task progress notifications
await client.task.notification(task_id="task-123", event="TASK_COMPLETED", data={...})

# Agents can stream real-time responses
await client.chat.message(chat_id="chat-456", message=response_msg, stream=True)

๐Ÿ” Enterprise Security & OAuth2

ARC uses industry-standard OAuth2 with agent-specific scopes:

# Requesting agents (initiate work)
scopes = ["arc.task.controller", "arc.chat.controller", "arc.agent.caller"]

# Processing agents (receive work, send notifications)  
scopes = ["arc.task.notify", "arc.chat.receiver", "arc.agent.receiver"]

# Full-service agents (can do both)
scopes = ["arc.task.controller", "arc.task.notify", "arc.chat.controller", "arc.chat.receiver", "arc.agent.caller", "arc.agent.receiver"]

๐ŸŒŸ Real-World Examples

๐Ÿ“Š Multi-Agent Financial Analysis

# Router agent orchestrates entire workflow
trace_id = "financial_analysis_Q4_2024"

# 1. Extract data from documents
doc_task = await client.task.create(
    target_agent="document-extractor-01",
    initial_message={"role": "user", "parts": [{"type": "FilePart", "content": "base64pdf..."}]},
    trace_id=trace_id
)

# 2. Generate charts from extracted data  
chart_task = await client.task.create(
    target_agent="chart-generator-01",
    initial_message={"role": "agent", "parts": [{"type": "DataPart", "content": extracted_data}]},
    trace_id=trace_id  # Same workflow!
)

# 3. Write executive summary
summary_task = await client.task.create(
    target_agent="report-writer-01", 
    initial_message={"role": "agent", "parts": [{"type": "TextPart", "content": "Create summary"}]},
    trace_id=trace_id  # All connected!
)

๐ŸŽง Real-time Customer Support

# Start customer conversation
support_chat = await client.chat.start(
    target_agent="tier1-support-agent",
    initial_message={"role": "user", "parts": [{"type": "TextPart", "content": "My account is locked"}]}
)

# Agent can escalate to specialist
if needs_escalation:
    specialist_chat = await client.chat.start(
        target_agent="account-security-specialist", 
        initial_message={"role": "agent", "parts": [{"type": "TextPart", "content": "Escalated case: account lockout"}]}
    )

๐Ÿข Production Deployment

Docker Deployment

# docker-compose.yml
version: '3.8'
services:
  arc-gateway:
    image: arc-protocol/gateway:latest
    ports:
      - "443:443"
    environment:
      - ARC_OAUTH2_PROVIDER=https://auth.company.com
      - ARC_AGENT_REGISTRY=https://registry.company.com
      
  document-analyzer:
    image: company/document-analyzer:latest
    environment:
      - ARC_ENDPOINT=https://gateway/arc
      - ARC_AGENT_ID=document-analyzer-01

Load Balancing

# Multiple instances automatically load balanced
agents = [
    "finance-analyzer-01",
    "finance-analyzer-02", 
    "finance-analyzer-03"
]

# ARC automatically routes to available instance
task = await client.task.create(
    target_agent="finance-analyzer-01",  # ARC handles routing
    initial_message=analysis_request
)

๐Ÿ“š Documentation

๐Ÿค Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

๐Ÿ“„ License

Licensed under the Apache License 2.0. See LICENSE for details.


๐Ÿš€ Ready to revolutionize your multi-agent architecture?

pip install arc-sdk

Join the ARC Protocol community: https://arc-protocol.org

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

arc_sdk-1.1.0.tar.gz (105.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

arc_sdk-1.1.0-py3-none-any.whl (91.5 kB view details)

Uploaded Python 3

File details

Details for the file arc_sdk-1.1.0.tar.gz.

File metadata

  • Download URL: arc_sdk-1.1.0.tar.gz
  • Upload date:
  • Size: 105.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for arc_sdk-1.1.0.tar.gz
Algorithm Hash digest
SHA256 c70bba569e414f8544d7a46192633e6c2eafc51c17bb10e21c7b4d263c2a3706
MD5 22b8f9f5be9b85978c69ff24d0492e5a
BLAKE2b-256 7aa55842130406bf529b31dd13bf72a6fc01516a67c572237b9e94752b48792e

See more details on using hashes here.

File details

Details for the file arc_sdk-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: arc_sdk-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 91.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for arc_sdk-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9163c25b58e807de0bdba6f014bbd40a15baf923f42afe38be07e00d1c1940af
MD5 55c1f573ca8e798d5d29b28abcfdbb76
BLAKE2b-256 70e6b80e0ae4bdf64ec52a4b4281bf4eb63e74d8a4f45ad9a6a7e601f9acd1c3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page