{"id":28366204,"url":"https://github.com/neuroglia-io/a2a-net","last_synced_at":"2025-06-12T08:02:17.154Z","repository":{"id":287974412,"uuid":"966373114","full_name":"neuroglia-io/a2a-net","owner":"neuroglia-io","description":".NET implementation of the Agent2Agent (A2A) protocol to enable secure, interoperable communication between autonomous agents across frameworks and vendors.","archived":false,"fork":false,"pushed_at":"2025-05-17T08:28:34.000Z","size":256,"stargazers_count":21,"open_issues_count":3,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-05T02:18:09.806Z","etag":null,"topics":["a2a","agent-framework","agent-protocol","ai-agent","csharp","dotnet","interagent","json-rpc"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/neuroglia-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-14T20:28:12.000Z","updated_at":"2025-06-02T18:30:06.000Z","dependencies_parsed_at":"2025-05-15T16:49:00.190Z","dependency_job_id":null,"html_url":"https://github.com/neuroglia-io/a2a-net","commit_stats":null,"previous_names":["neuroglia-io/a2a","neuroglia-io/a2a-net"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/neuroglia-io/a2a-net","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neuroglia-io%2Fa2a-net","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neuroglia-io%2Fa2a-net/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neuroglia-io%2Fa2a-net/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neuroglia-io%2Fa2a-net/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neuroglia-io","download_url":"https://codeload.github.com/neuroglia-io/a2a-net/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neuroglia-io%2Fa2a-net/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259426820,"owners_count":22855542,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","agent-framework","agent-protocol","ai-agent","csharp","dotnet","interagent","json-rpc"],"created_at":"2025-05-28T23:07:52.558Z","updated_at":"2025-06-12T08:02:17.137Z","avatar_url":"https://github.com/neuroglia-io.png","language":"C#","funding_links":[],"categories":["⚙️ Implementations \u0026 Libraries","Utilities"],"sub_categories":["Libraries"],"readme":"# A2A-NET\n\n**Agent-to-Agent (A2A)** is a lightweight, extensible protocol and framework for orchestrating tasks and exchanging structured content between autonomous agents using JSON-RPC 2.0.\n\n[![Build Status](https://img.shields.io/github/actions/workflow/status/neuroglia-io/a2a-net/test.yml?branch=main)](https://github.com/neuroglia-io/a2a-net/actions)\n[![Release](https://img.shields.io/github/v/release/neuroglia-io/a2a-net?include_prereleases)](https://github.com/neuroglia-io/a2a-net/releases)\n[![NuGet](https://img.shields.io/nuget/v/a2a-net.Core.svg)](https://nuget.org/packages/a2a-net.Core)\n[![License](https://img.shields.io/github/license/neuroglia-io/a2a-net)](LICENSE)\n---\n\n---\n\n## 🧩 Projects\n\n### 🧠 Core\n\n- **`a2a-net.Core`**  \n  Contains the core abstractions, models, contracts, and data types shared across both clients and servers.  \n  _This package is dependency-free and safe to use in any environment._\n\n---\n\n### 📡 Client\n\n- **`a2a-net.Client.Abstractions`**  \n  Contains core interfaces and contracts for implementing A2A clients.\n\n- **`a2a-net.Client`**  \n  Includes client-side functionality for A2A agent discovery and metadata resolution.\n\n- **`a2a-net.Client.Http`**  \n  Implements the HTTP transport for `IA2AProtocolClient`\n  Allows establishing persistent agent-to-agent communication over HTTP connections.\n\n- **`a2a-net.Client.WebSocket`**  \n  Implements the WebSocket transport for `IA2AProtocolClient`\n  Allows establishing persistent agent-to-agent communication over WebSocket connections.\n\n---\n\n### 🛠️ Server\n\n- **`a2a-net.Server`**  \n  Core components for building A2A-compatible agents.  \n  Includes task execution, state management, event streaming, and runtime integration.\n\n- **`a2a-net.Server.AspNetCore`**  \n  ASP.NET Core integration layer that allows hosting A2A endpoints over WebSocket using JSON-RPC.  \n  Provides middleware, routing, and server bootstrap extensions.\n\n---\n\n### 🧱 Server Infrastructure\n\n- **`a2a-net.Server.Infrastructure.Abstractions`**  \n  Defines abstractions for task persistence, event streaming, and other infrastructure concerns.  \n  Enables support for custom and pluggable storage/event backends.\n\n- **`a2a-net.Server.Infrastructure.DistributedCache`**  \n  Distributed cache–based implementation of A2A task storage using `IDistributedCache`.  \n  Useful for scenarios that require scalable, lightweight task state persistence.\n\n---\n\n## 🚀 Getting Started\n\n### Install the packages\n\n```\ndotnet add package a2a-net.Client\ndotnet add package a2a-net.Client.Http\ndotnet add package a2a-net.Client.WebSocket\ndotnet add package a2a-net.Server.Infrastructure.DistributedCache\ndotnet add package a2a-net.Server.AspNetCore\n```\n\n### Discover a remote agent\n\n```csharp\n var discoveryDocument = await httpClient.GetA2ADiscoveryDocumentAsync(new Uri(\"http://localhost\"));\n```\n\n### Configure and use a client\n\n```csharp\nservices.AddA2ProtocolHttpClient(options =\u003e \n{\n    options.Endpoint = new(\"http://localhost/a2a\");\n});\n```\n\n```csharp\nservices.AddA2ProtocolWebSocketClient(options =\u003e \n{\n    options.Endpoint = new(\"ws://localhost/a2a\");\n});\n```\n\n```csharp\nvar request = new SendTaskRequest()\n{\n    Params = new()\n    {\n        Message = new()\n        {\n            Role = MessageRole.User,\n            Parts =\n            [\n                new TextPart(\"tell me a joke\")\n            ]\n        }\n    }\n};\nvar response = await Client.SendTaskAsync(request);\n```\n\n### Host an agent\n\n#### Configure services\n\n```csharp\nservices.AddDistributedMemoryCache();\nservices.AddA2AProtocolServer(builder =\u003e\n{\n    builder\n        .SupportsStreaming()\n        .SupportsPushNotifications()\n        .SupportsStateTransitionHistory()\n        .UseAgentRuntime\u003cMockAgentRuntime\u003e()\n        .UseDistributedCacheTaskRepository();\n});\n```\n\n#### Map A2A Endpoints\n\n```csharp\napp.MapA2AAgentHttpEndpoint(\"/a2a\");\napp.MapA2AAgentWebSocketEndpoint(\"/a2a/ws\")\n```\n\n---\n\n## 📚 Documentation\n\nFor a full overview of the A2A protocol, see [google.github.io/A2A](https://google.github.io/A2A/#/documentation)\n\n---\n\n## 🧪 Samples\n\nExplore sample projects demonstrating how to use the [a2a-net](#) solution:\n\n- [Semantic Kernel](/samples/semantic-kernel/):  Demonstrates how to build and host an A2A-compatible agent using [Microsoft's Semantic Kernel](https://aka.ms/semantic-kernel) and OpenAI. Includes both a server that exposes the agent and a client that interacts with it over HTTP using the JSON-RPC protocol.\n\n---\n\n## 🛡 License\n\nThis project is licensed under the [Apache-2.0 License](LICENSE).\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Please open issues and PRs to help improve the ecosystem.\n\nSee [contribution guidelines](CONTRIBUTING.md) for more information on how to contribute.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneuroglia-io%2Fa2a-net","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneuroglia-io%2Fa2a-net","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneuroglia-io%2Fa2a-net/lists"}