StackA2A
conversationalsemantic-kernelcsharp

Agent2Agent

18

by Donelle

This repository demonstrates a multi-agent proof-of-concept using Microsoft Semantic Kernel and A2A Protocol

Updated 2025-08-20
Quality Score18/100
Community
0
Freshness
20
Official
30
Skills
10
Protocol
30
🔒 Security
20

Getting Started

1Clone the repository
$ git clone https://github.com/Donelle/Agent2Agent
2Navigate to the project
$ cd Agent2Agent
3Install dependencies
$ dotnet restore
4Run the agent
$ dotnet run

README

Agent2Agent — Proof of Concept

This repository contains a proof-of-concept multi-agent system built with Microsoft Semantic Kernel and ASP.NET Core. It demonstrates agent-to-agent (A2A) registration, discovery, inter-agent task delegation, and a Blazor web frontend for user interaction.

Quick architecture summary

  • Orchestrator (AppHost) launches and health-checks agents and the Web frontend.
  • Agent A (Customer Advocate) — user-facing semantic agent (POST /api/agent/chat).
  • Agent B (Registry) — manages agent registration/discovery; A2A endpoints (/tasks, /.well-known/agent.json).
  • Agent C (Knowledge Graph) — vector search and factual grounding (Redis + embeddings).
  • Agent D (Internet Search) — external search and caching.
  • DatasetCreator — ingests CSV/PDF, creates embeddings, populates Redis for Agent C.

Project structure (high level)

  • Agent2Agent.AppHost — orchestrator and entry point.
  • Agent2Agent.Web — Blazor Server web UI (chat frontend).
  • Agent2Agent.AgentA — Customer Advocate agent (POST /api/agent/chat).
  • Agent2Agent.AgentB — Registry agent (A2A server).
  • Agent2Agent.AgentC — Knowledge Graph agent (vector store + embeddings).
  • Agent2Agent.AgentD — Internet Search agent (external search + caching).
  • Agent2Agent.ServiceDefaults — shared bootstrap/middleware/extensions.
  • DatasetCreator — data ingestion and embedding pipeline.
  • Docs/ — architecture and agent role documentation.

Prerequisites

  • .NET 9 SDK
  • Docker (to run Redis via docker-compose)
  • OpenAI API key (or other embedding/chat provider) configured in each agent's appsettings

Getting started (local development)

  1. Clone repository
  2. Restore and build
dotnet restore
dotnet build
  1. Start Redis via Docker Compose (uses docker_compose.yaml)
docker-compose -f docker_compose.yaml up -d
  1. (Optional) Ingest sample data into Redis
dotnet run --project DatasetCreator

See DatasetCreator/README.md for options and sample data formats.

  1. Launch the orchestrator (starts AppHost, Web, and configured agents)
dotnet run --project Agent2Agent.AppHost
  1. Open the Web frontend in your browser (default) https://localhost:5000 If custom URLs are configured in launchSettings.json, use those instead.

How the system works (short)

  • The Web frontend sends user queries to AgentA.
  • AgentA uses Semantic Kernel chat completion to craft responses and may invoke other agents for factual enrichment.
  • AgentB (Registry) provides discovery and delegates tasks to AgentC (KnowledgeGraph) and AgentD (InternetSearch) as needed.
  • DatasetCreator populates Redis so AgentC can answer fact-based queries through semantic vector search.

Documentation and further reading

Troubleshooting (common)

  • OpenAI errors: verify API key, model id, and network access.
  • Redis: ensure docker container is running and connection string matches.
  • Inter-agent calls: ensure agents are running and reachable; check logs for plugin/DI registration errors.

Contributing

Contributions welcome. Open issues or PRs and include tests or usage notes where relevant.

License

MIT


Capabilities

StreamingPush NotificationsMulti-TurnAuth: none
a2a-serveraiblazorchatgptsemantic-kernel

Part of these stacks

View on GitHub