Skip to main content

🚀 gcp-agentor

GCP-Based Multi-Agent Orchestration Library

A Python library that provides intelligent multi-agent orchestration for Google Cloud Platform. Routes user messages to appropriate agents, manages shared memory via Firestore, and supports agent-to-agent communication using a defined ACP (Agent Communication Protocol).

✨ Features

  • 🤖 Multi-Agent Routing: Intelligent message routing based on intent and context
  • 🧠 Shared Memory: Persistent memory management using Firestore
  • 📡 ACP Protocol: Standardized Agent Communication Protocol
  • 🔄 Agent Registry: Dynamic agent registration and discovery
  • 📊 Reasoning Logs: Comprehensive logging of agent decisions and reasoning
  • ☁️ GCP Integration: Native support for Vertex AI Agent Builder and ADK
  • 🔧 Extensible: Easy to add new agents and capabilities

🚀 Quick Start

Installation

pip install gcp-agentor

Basic Usage

from gcp_agentor import AgentOrchestrator
from gcp_agentor.acp import ACPMessage

# Initialize the orchestrator
orchestrator = AgentOrchestrator()

# Create an ACP message
message = ACPMessage({
    "from": "user:farmer123",
    "to": "agent:router",
    "intent": "get_crop_advice",
    "message": "What crop should I grow in July?",
    "language": "en-US",
    "context": {
        "location": "Jalgaon",
        "soil_pH": 6.5
    }
})

# Handle the message
response = orchestrator.handle_message(message.to_dict())
print(response)

📦 Core Components

1. Agent Registry (agent_registry.py)

Manages registered agents and their metadata.

from gcp_agentor import AgentRegistry

registry = AgentRegistry()
registry.register("crop_advisor", CropAdvisorAgent(), {"capabilities": ["crop_advice"]})

2. Router (router.py)

Routes ACP messages to appropriate agents based on intent.

from gcp_agentor import AgentRouter

router = AgentRouter(registry, memory_manager)
response = router.route(acp_message)

3. Memory Manager (memory.py)

Shared memory layer using Firestore.

from gcp_agentor import MemoryManager

memory = MemoryManager()
memory.set_context("user123", "last_crop", "wheat")
context = memory.get_context("user123", "last_crop")

4. ACP Protocol (acp.py)

Standardized message schema for agent communication.

from gcp_agentor.acp import ACPMessage

message = ACPMessage({
    "from": "user:farmer123",
    "to": "agent:router",
    "intent": "get_crop_advice",
    "message": "What crop to grow?",
    "context": {"location": "Jalgaon"}
})

🏗️ Architecture

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   User Input    │───▶│   Agent Router  │───▶│  Agent Registry │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         ▼                       ▼                       ▼
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   ACP Message   │    │  Memory Manager │    │ Agent Invoker   │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         ▼                       ▼                       ▼
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│ Reasoning Logger│    │   Firestore     │    │ Vertex AI/ADK   │
└─────────────────┘    └─────────────────┘    └─────────────────┘

🔧 Configuration

Environment Variables

export GOOGLE_APPLICATION_CREDENTIALS="path/to/service-account.json"
export GCP_PROJECT_ID="your-project-id"
export FIRESTORE_COLLECTION="agentor_memory"

GCP Setup

  1. Enable APIs:

    • Cloud Firestore API
    • Vertex AI API
    • Cloud Pub/Sub API (optional)
  2. Service Account:

    • Create a service account with appropriate permissions
    • Download the JSON key file
    • Set GOOGLE_APPLICATION_CREDENTIALS

📚 Examples

AgriAgent Example

from gcp_agentor.examples.agri_agent import (
    CropAdvisorAgent, 
    WeatherAgent, 
    PestAssistantAgent
)

# Register agents
registry = AgentRegistry()
registry.register("crop_advisor", CropAdvisorAgent())
registry.register("weather", WeatherAgent())
registry.register("pest_assistant", PestAssistantAgent())

# Use the orchestrator
orchestrator = AgentOrchestrator()
response = orchestrator.handle_message({
    "from": "user:farmer123",
    "intent": "get_crop_advice",
    "message": "What should I plant this season?",
    "context": {"location": "Jalgaon", "season": "monsoon"}
})

🧪 Testing

# Install development dependencies
pip install -e ".[dev]"

# Run tests
pytest tests/

# Run with coverage
pytest --cov=gcp_agentor tests/

📖 API Reference

AgentOrchestrator

Main orchestrator class that coordinates all components.

class AgentOrchestrator:
    def __init__(self, project_id: str = None, collection_name: str = "agentor_memory")
    def handle_message(self, acp_message: dict) -> dict
    def register_agent(self, name: str, agent: Any, metadata: dict = {}) -> None

ACPMessage

Standardized message format for agent communication.

class ACPMessage:
    def __init__(self, data: dict)
    def to_dict(self) -> dict
    def is_valid(self) -> bool

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests
  5. Submit a pull request

📄 License

MIT License - see LICENSE file for details.

🆘 Support


Built with ❤️ for the GCP community

Release files for gcp-agentor 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gcp-agentor 0.1.0
File Size Uploaded
gcp_agentor-0.1.0.tar.gz 5.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gcp-agentor 0.1.0
File Interpreter ABI Platform
gcp_agentor-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 9.0 kB

Release files / gcp_agentor-0.1.0.tar.gz

Download URL gcp_agentor-0.1.0.tar.gz
Size 5.4 kB
Tags Source
SHA-256 checksum
How to use checksums
6b13e0996abfda1bcbdf6a550bdbb6564311fb5377e1c256dbc4c8c29fa85d1a
BLAKE2b-256 checksum
How to use checksums
e3b884f4a9bd672bbb7653875a9c897693483df1d782f033172f9f3ce4fb9580
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release files / gcp_agentor-0.1.0-py3-none-any.whl

Download URL gcp_agentor-0.1.0-py3-none-any.whl
Size 3.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
77645cafb6c1891b37445bdc8399c6da26df0f14a104ba7914662aa3fb6c8e38
BLAKE2b-256 checksum
How to use checksums
8447a7a4c4d0b50a29a9466eb9707928b63a4873282f3477dd1f6661b1467196
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page