{"id":50656333,"url":"https://github.com/TheApeMachine/a2a-go","last_synced_at":"2026-06-24T21:00:39.143Z","repository":{"id":288750351,"uuid":"969060419","full_name":"TheApeMachine/a2a-go","owner":"TheApeMachine","description":"a2a‑go is a reference Go implementation of the Agent‑to‑Agent (A2A) protocol by Google, including the proposed interoperability with the Model Context Protocol (MCP) from Anthropic.","archived":false,"fork":false,"pushed_at":"2025-08-18T09:18:50.000Z","size":1194,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-12T19:51:27.549Z","etag":null,"topics":["a2a","a2a-protocol","mcp","modelcontextprotocol"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheApeMachine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-04-19T09:45:22.000Z","updated_at":"2025-12-12T05:10:33.000Z","dependencies_parsed_at":"2025-04-19T16:16:27.370Z","dependency_job_id":"2da07128-79a5-4bc7-be55-5beed1a5fb9c","html_url":"https://github.com/TheApeMachine/a2a-go","commit_stats":null,"previous_names":["theapemachine/a2a-go"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/TheApeMachine/a2a-go","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheApeMachine%2Fa2a-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheApeMachine%2Fa2a-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheApeMachine%2Fa2a-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheApeMachine%2Fa2a-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheApeMachine","download_url":"https://codeload.github.com/TheApeMachine/a2a-go/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheApeMachine%2Fa2a-go/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34749211,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-24T02:00:07.484Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["a2a","a2a-protocol","mcp","modelcontextprotocol"],"created_at":"2026-06-08T00:00:39.465Z","updated_at":"2026-06-24T21:00:39.124Z","avatar_url":"https://github.com/TheApeMachine.png","language":"Go","funding_links":[],"categories":["Server Implementations"],"sub_categories":["🌐 General Purpose Implementations"],"readme":"# 🌈 A2A‑Go\n\n\u003e _\"Combine A2A and MCP to create advanced, distributed agentic systems!\"_\n\nA2A-Go is a comprehensive framework for building scalable, distributed agentic AI systems with built-in VPN capabilities. It promotes a microservice architecture where agents and tools operate as independent services, deployable locally or across a network. The framework implements the Agent-to-Agent (A2A) protocol and utilizes the Model Context Protocol (MCP) for standardized tool interaction and data exchange.\n\n[![Go CI/CD](https://github.com/theapemachine/a2a-go/actions/workflows/main.yml/badge.svg)](https://github.com/theapemachine/a2a-go/actions/workflows/main.yml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/theapemachine/a2a-go)](https://goreportcard.com/report/github.com/theapemachine/a2a-go)\n[![GoDoc](https://godoc.org/github.com/theapemachine/a2a-go?status.svg)](https://godoc.org/github.com/theapemachine/a2a-go)\n[![License: UNLICENSE](https://img.shields.io/badge/License-UNLICENSE-green.svg)](https://opensource.org/licenses/MIT)\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=TheApeMachine_a2a-go\u0026metric=bugs)](https://sonarcloud.io/summary/new_code?id=TheApeMachine_a2a-go)\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=TheApeMachine_a2a-go\u0026metric=code_smells)](https://sonarcloud.io/summary/new_code?id=TheApeMachine_a2a-go)\n[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=TheApeMachine_a2a-go\u0026metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=TheApeMachine_a2a-go)\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=TheApeMachine_a2a-go\u0026metric=ncloc)](https://sonarcloud.io/summary/new_code?id=TheApeMachine_a2a-go)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=TheApeMachine_a2a-go\u0026metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=TheApeMachine_a2a-go)\n[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=TheApeMachine_a2a-go\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=TheApeMachine_a2a-go)\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=TheApeMachine_a2a-go\u0026metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=TheApeMachine_a2a-go)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=TheApeMachine_a2a-go\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=TheApeMachine_a2a-go)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=TheApeMachine_a2a-go\u0026metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=TheApeMachine_a2a-go)\n\n![A2A‑Go](a2a-go.png)\n\n**a2a‑go** is a reference Go implementation of the [**Agent‑to‑Agent (A2A)**\nprotocol](https://google.github.io/A2A/#/) by Google, including the proposed\ninteroperability with the [**Model Context Protocol (MCP)**](https://modelcontextprotocol.io).\n\n\u003e 🚧 **Work in progress** 🚧 Consider this project a proof of concept at best, and subject\n\u003e to sudden changes.\n\n## 📋 Table of Contents\n\n- [Features](#-features)\n- [Architecture](#-architecture)\n- [Prerequisites](#-prerequisites)\n- [Quick Start](#-quick-start)\n- [Installation](#-installation)\n- [Usage](#-usage)\n- [VPN Capabilities](#-vpn-capabilities)\n- [Built-in Tools](#-built-in-tools)\n- [Agent Ecosystem](#-agent-ecosystem)\n- [Configuration](#-configuration)\n- [Development](#-development)\n- [Contributing](#-contributing)\n- [Documentation](#-documentation)\n\n## ✨ Features\n\n### 🔌 Agent‑to‑Agent (A2A) Protocol Implementation\n\n- [x] **Task Management**\n  - [x] _Send Task_ to send a new task to an agent\n  - [x] _Get Task_ to retrieve a task by ID\n  - [x] _Cancel Task_ to cancel a task\n  - [x] _Stream Task_ to stream the task results\n  - [x] _Set Push Notification_ to configure push notifications for a task\n  - [x] _Get Push Notification_ to retrieve the push notification configuration for a task\n\n- [x] **Advanced AI Capabilities**\n  - [x] _Structured Outputs_ to return structured data from an agent\n  - [x] _Fine‑tuning_ to fine‑tune an agent on a dataset\n  - [x] _Image Generation_ to generate images with an agent\n  - [x] _Audio Transcription_ to transcribe audio\n  - [x] _Text‑to‑Speech_ to convert text to speech\n\n### 🛠️ Model Context Protocol (MCP) Interoperability\n\n- [x] **Prompt Management**\n  - [x] _List Prompts_ to retrieve a list of prompts from an agent\n  - [x] _Get Prompt_ to retrieve a prompt by ID\n  - [x] _Set Prompt_ to create or update a prompt\n  - [x] _Delete Prompt_ to delete a prompt by ID\n\n- [x] **Resource Management**\n  - [ ] _List Resources_ to retrieve a list of resources from an agent\n  - [ ] _Get Resource_ to retrieve a resource by ID\n  - [ ] _Set Resource_ to create or update a resource\n  - [ ] _Delete Resource_ to delete a resource by ID\n\n- [x] **Tool Calling \u0026 Sampling**\n  - [x] _Tool Calling_ to call tools and receive the results\n  - [x] _Sampling_ to sample a task from an agent\n  - [x] _Roots_ to get the root task for a task\n\n### 🔐 VPN \u0026 Networking\n\n- [x] **WireGuard VPN Integration**\n  - [x] Built-in VPN client using WireGuard protocol\n  - [x] SOCKS5 proxy support for browser tool\n  - [x] Network stack integration with gVisor\n  - [x] Browser network context switching\n\n### 🏗️ Infrastructure \u0026 Deployment\n\n- [x] **Containerized Architecture**\n  - [x] Docker Compose orchestration\n  - [x] Kubernetes deployment manifests\n  - [x] MinIO object storage integration\n  - [x] Service discovery and registration\n\n- [x] **Enterprise Integration**\n  - [x] Azure DevOps complete integration suite\n  - [x] GitHub API integration\n  - [x] Slack notifications and webhooks\n  - [x] OAuth2 authentication system\n\n## 🏛️ Architecture\n\nA2A-Go implements a distributed microservice architecture where each component runs independently:\n\n```mermaid\ngraph TB\n    subgraph \"A2A-Go Distributed Architecture\"\n        subgraph \"Service Layer\"\n            Catalog[\"🗂️ Catalog Service\u003cbr/\u003e:3210\u003cbr/\u003e(Registry)\"]\n            Manager[\"🤖 Manager Agent\u003cbr/\u003e:8080\u003cbr/\u003e(Orchestrator)\"]\n            Planner[\"📋 Planner Agent\u003cbr/\u003e:8081\u003cbr/\u003e(Strategy)\"]\n            Researcher[\"🔍 Researcher Agent\u003cbr/\u003e:8082\u003cbr/\u003e(Intel)\"]\n            Developer[\"💻 Developer Agent\u003cbr/\u003e:8083\u003cbr/\u003e(Code)\"]\n        end\n        \n        subgraph \"Tool Layer\"\n            Browser[\"🌐 Browser Tool\u003cbr/\u003e:9001\u003cbr/\u003e(Web Automation)\"]\n            Docker[\"🐳 Docker Tool\u003cbr/\u003e:9002\u003cbr/\u003e(Containers)\"]\n            Azure[\"☁️ Azure DevOps\u003cbr/\u003e:9003\u003cbr/\u003e(Enterprise)\"]\n            GitHub[\"🐙 GitHub Tool\u003cbr/\u003e:9004\u003cbr/\u003e(Source Control)\"]\n        end\n        \n        subgraph \"Infrastructure Layer\"\n            MinIO[\"📦 MinIO Storage\u003cbr/\u003e:9000\u003cbr/\u003e(Object Store)\"]\n            VPN[\"🔐 VPN Layer\u003cbr/\u003e(WireGuard + SOCKS5)\u003cbr/\u003eBrowser Network Context\"]\n            UI[\"💻 Terminal UI\u003cbr/\u003e(Interactive Client)\"]\n        end\n    end\n    \n    %% Service Discovery\n    Catalog -.-\u003e Manager\n    Catalog -.-\u003e Planner\n    Catalog -.-\u003e Researcher\n    Catalog -.-\u003e Developer\n    \n    %% Agent Coordination\n    Manager --\u003e Planner\n    Manager --\u003e Researcher\n    Manager --\u003e Developer\n    Planner --\u003e Developer\n    Researcher --\u003e Developer\n    \n    %% Tool Usage\n    Manager -.-\u003e Browser\n    Manager -.-\u003e Docker\n    Manager -.-\u003e Azure\n    Manager -.-\u003e GitHub\n    \n    Developer -.-\u003e Browser\n    Developer -.-\u003e Docker\n    Developer -.-\u003e GitHub\n    \n    Researcher -.-\u003e Browser\n    Researcher -.-\u003e GitHub\n    \n    %% Infrastructure\n    Manager --\u003e MinIO\n    Planner --\u003e MinIO\n    Researcher --\u003e MinIO\n    Developer --\u003e MinIO\n    \n    UI --\u003e Catalog\n    UI --\u003e Manager\n    \n    %% VPN for Browser Tool Only\n    Browser --\u003e VPN\n    \n    style Catalog fill:#e1f5fe\n    style Manager fill:#f3e5f5\n    style Planner fill:#f3e5f5\n    style Researcher fill:#f3e5f5\n    style Developer fill:#f3e5f5\n    style Browser fill:#fff3e0\n    style Docker fill:#fff3e0\n    style Azure fill:#fff3e0\n    style GitHub fill:#fff3e0\n    style MinIO fill:#e8f5e8\n    style VPN fill:#ffebee\n    style UI fill:#f1f8e9\n```\n\n### Core Components\n\n- **Catalog Service**: Central registry for agent and tool discovery\n- **Agent Services**: Specialized AI agents (Manager, Planner, Researcher, Developer, etc.)\n- **Tool Services**: Standalone tools exposing specific capabilities\n- **VPN Layer**: Network context switching for browser tool using WireGuard protocol\n- **Storage Layer**: MinIO for object storage and task persistence\n- **UI Layer**: Terminal UI for interaction and testing\n\n## 📋 Prerequisites\n\n- **Go 1.24.2** or later\n- **Docker** and **Docker Compose**\n- **Make** (for build automation)\n\n### Optional Dependencies\n\n- **Kubernetes** (for K8s deployment)\n- **WireGuard** (for VPN functionality)\n- **MinIO** client (for storage management)\n\n## 🚀 Quick Start\n\nThe fastest way to get started is using the provided Makefile to run a full containerized distributed system:\n\n### 1. Start the Server Infrastructure\n\n```bash\n# Build and start all services\nmake server\n```\n\nThis will:\n- Build the Docker image\n- Start the catalog service on port `3210`\n- Launch all agent and tool services\n- Initialize MinIO storage\n- Set up the VPN infrastructure\n\n### 2. Connect with the Client\n\n```bash\n# Run the Terminal UI client\nmake client\n```\n\nThe Terminal UI will connect to the distributed system and provide an interactive interface for:\n- Browsing available agents and tools\n- Sending tasks to agents\n- Streaming real-time results\n- Managing agent workflows\n\n### 3. Test the System\n\n```bash\n# Run automated tests\nmake test\n```\n\n## 📦 Installation\n\n### From Source\n\n```bash\n# Clone the repository\ngit clone https://github.com/theapemachine/a2a-go.git\ncd a2a-go\n\n# Build the binary\ngo build -o a2a-go main.go\n\n# Run a specific command\n./a2a-go --help\n```\n\n### Using Docker\n\n```bash\n# Build the Docker image\ndocker build -t theapemachine/a2a-go:latest .\n\n# Run a specific agent\ndocker run -it --rm theapemachine/a2a-go:latest ui\n```\n\n## 🎯 Usage\n\n### Basic Agent Communication\n\n```bash\n# Send a task to an agent via JSON-RPC\ncurl -s -X POST localhost:8080/rpc \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tasks/send\",\"params\":{\"id\":\"t1\",\"message\":{\"role\":\"user\",\"parts\":[{\"type\":\"text\",\"text\":\"Hello\"}]}}}' \\\n  | jq .artifacts[0].parts[0].text\n```\n\n### Streaming Events\n\n```bash\n# Connect to Server-Sent Events stream\ncurl -sN localhost:3210/events | jq -c\n```\n\n### Using Tools\n\n```bash\n# List available prompts\ncurl -s -X POST localhost:3210/rpc \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"prompts/list\"}' \\\n  | jq .prompts\n\n# Fetch specific prompt content\ncurl -s -X POST localhost:3210/rpc \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"prompts/get\",\"params\":{\"name\":\"Greeting\"}}' \\\n  | jq .messages[0].content.text\n```\n\n## 🔐 VPN Capabilities\n\nA2A-Go includes a VPN solution built on WireGuard specifically for the browser tool:\n\n### Features\n\n- **WireGuard Integration**: Native WireGuard protocol support\n- **SOCKS5 Proxy**: Built-in SOCKS5 proxy server for browser traffic\n- **Network Stack**: Custom network stack using gVisor\n- **Network Context Switching**: Allows browser tool to operate from different network endpoints\n\n### Configuration\n\nVPN settings are managed through the `a2a.conf` file:\n\n```ini\n[Interface]\nPrivateKey = your_private_key_here\nAddress = 10.0.0.1/24\n\n[Peer]\nPublicKey = peer_public_key_here\nEndpoint = vpn.example.com:51820\nAllowedIPs = 10.0.0.0/24\n```\n\n## 🛠️ Built-in Tools\n\nA2A-Go comes with an extensive set of pre-built tools:\n\n### Web \u0026 Browser Tools\n- **Browser**: Headless browser automation with Rod\n- **Fetch**: Web content extraction and screenshot capture\n- **GitHub**: Repository search and content retrieval\n\n### Development Tools\n- **Docker**: Container management and deployment\n- **Azure DevOps**: Complete sprint and work item management\n- **Catalog**: Agent and service discovery\n\n### Data \u0026 Storage Tools\n- **Memory**: Persistent memory storage for agents\n- **Qdrant**: Vector database integration\n- **Neo4j**: Graph database operations\n\n### Communication Tools\n- **Slack**: Notification and webhook integration\n- **Editor**: File editing and manipulation\n\n## 🤖 Agent Ecosystem\n\nThe framework includes several specialized agents:\n\n- **Manager**: Orchestrates tasks and coordinates other agents\n- **Planner**: Creates and manages project plans\n- **Researcher**: Gathers information and conducts research\n- **Developer**: Handles code generation and development tasks\n- **Evaluator**: Assesses and validates agent outputs\n- **UI**: Provides terminal-based user interface\n\nEach agent is containerized and can be deployed independently or as part of the complete ecosystem.\n\n## ⚙️ Configuration\n\n### Environment Variables\n\nCreate a `.env` file based on `env.example`:\n\n```bash\n# MinIO Configuration\nMINIO_USER=minioadmin\nMINIO_PASSWORD=minioadmin\nAWS_ACCESS_KEY_ID=a2a-access-key\nAWS_SECRET_ACCESS_KEY=a2a-secret-key\n\n# API Keys\nOPENAI_API_KEY=your_openai_key\nANTHROPIC_API_KEY=your_anthropic_key\nCOHERE_API_KEY=your_cohere_key\n\n# Azure DevOps\nAZURE_DEVOPS_ORGANIZATION=your_org\nAZURE_DEVOPS_TOKEN=your_token\n```\n\n### Agent Configuration\n\nThe system uses a hierarchical configuration approach:\n\n1. **Embedded Defaults**: Built into the binary\n2. **User Config**: `~/.a2a-go/config.yml`\n3. **Environment Variables**: Override specific settings\n\n## 🔧 Development\n\n### Project Structure\n\n```\na2a-go/\n├── cmd/              # CLI commands and entry points\n├── pkg/              # Core packages\n│   ├── a2a/          # A2A protocol implementation\n│   ├── vpn/          # VPN and networking\n│   ├── tools/        # Built-in tools\n│   ├── ui/           # Terminal UI\n│   └── ...\n├── docs/             # Documentation\n├── specs/            # Protocol specifications\n└── docker-compose.yml\n```\n\n### Running Tests\n\n```bash\n# Run all tests\ngo test ./...\n\n# Run with coverage\ngo test -cover ./...\n\n# Run specific test suite\ngo test ./pkg/tools/...\n```\n\n### Code Style\n\n- Use **GoDoc** comments above all methods and types\n- Follow the `/**/` format for documentation\n- Use **GoConvey** for tests with one test function per code function\n- Maintain clean, well-organized code structure\n\n## 🤝 Contributing\n\n1. **Read the Specifications**: Check the `specs/` directory for protocol details\n2. **Follow Code Style**: Maintain consistency with existing patterns\n3. **Write Tests**: Use GoConvey and mirror code structure in tests\n4. **Update Documentation**: Keep docs current with changes\n5. **Test the TUI**: Ensure Terminal UI works with your changes\n\n### Development Workflow\n\n```bash\n# Start development environment\nmake server\n\n# Make your changes\n# ...\n\n# Test your changes\nmake test\n\n# Test with client\nmake client\n```\n\n## 📚 Documentation\n\nComprehensive documentation is available in the `docs/` directory:\n\n- **[Quick Start Guide](docs/quickstart.md)**: Get up and running quickly\n- **[Architecture Overview](docs/architecture.md)**: System design and components  \n- **[Tools Documentation](docs/tools.md)**: Built-in tools and capabilities\n- **[Memory Architecture](docs/memory-architecture.md)**: Agent memory systems\n- **[Prompts Guide](docs/prompts.md)**: Prompt management and usage\n- **[Sampling Documentation](docs/sampling.md)**: Task sampling strategies\n- **[Resources Guide](docs/resources.md)**: Resource management\n\n### Protocol Specifications\n\nThe `specs/` directory contains detailed protocol specifications:\n\n- **A2A Protocol**: Complete Agent-to-Agent specification\n- **MCP Integration**: Model Context Protocol implementation details\n- **Tool Definitions**: Comprehensive tool capability specifications\n\n## 📄 License\n\nThis project is released under the [UNLICENSE](LICENSE), placing it in the public domain.\n\n## 🔗 Links\n\n- [Agent-to-Agent Protocol](https://google.github.io/A2A/#/)\n- [Model Context Protocol](https://modelcontextprotocol.io)\n- [Go Documentation](https://godoc.org/github.com/theapemachine/a2a-go)\n- [Docker Hub](https://hub.docker.com/r/theapemachine/a2a-go)\n\n---\n\n\u003e **Note**: This is an active development project implementing cutting-edge agent protocols. The API and features may change as the specifications evolve.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTheApeMachine%2Fa2a-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTheApeMachine%2Fa2a-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTheApeMachine%2Fa2a-go/lists"}