{"id":49685758,"url":"https://github.com/awslabs/a2a-agent-registry-on-aws","last_synced_at":"2026-05-23T23:01:08.023Z","repository":{"id":342598728,"uuid":"1075669196","full_name":"awslabs/a2a-agent-registry-on-aws","owner":"awslabs","description":"Scalable agent registry for AI agents using A2A protocol AgentCard with semantic search. AWS serverless (Lambda, S3 Vectors, Bedrock). Python SDK \u0026 React Web UI.","archived":false,"fork":false,"pushed_at":"2026-03-06T14:06:36.000Z","size":2354,"stargazers_count":18,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-06T17:59:14.546Z","etag":null,"topics":["a2a-protocol","agent-registry","ai-agents","aws-bedrock","aws-cdk","aws-serverless","multi-agent-systems","python","react","sementic-search"],"latest_commit_sha":null,"homepage":"","language":"Python","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/awslabs.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-13T20:25:15.000Z","updated_at":"2026-03-06T14:05:02.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/awslabs/a2a-agent-registry-on-aws","commit_stats":null,"previous_names":["awslabs/a2a-agent-registry-on-aws"],"tags_count":null,"template":false,"template_full_name":"amazon-archives/__template_Apache-2.0","purl":"pkg:github/awslabs/a2a-agent-registry-on-aws","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2Fa2a-agent-registry-on-aws","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2Fa2a-agent-registry-on-aws/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2Fa2a-agent-registry-on-aws/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2Fa2a-agent-registry-on-aws/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/awslabs","download_url":"https://codeload.github.com/awslabs/a2a-agent-registry-on-aws/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awslabs%2Fa2a-agent-registry-on-aws/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33415020,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"ssl_error","status_checked_at":"2026-05-23T22:14:43.778Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-protocol","agent-registry","ai-agents","aws-bedrock","aws-cdk","aws-serverless","multi-agent-systems","python","react","sementic-search"],"created_at":"2026-05-07T10:00:25.114Z","updated_at":"2026-05-23T23:01:08.012Z","avatar_url":"https://github.com/awslabs.png","language":"Python","funding_links":[],"categories":["🛠️ Tools \u0026 Utilities"],"sub_categories":[],"readme":"\u003ch2 align=\"center\"\u003eA2A Agent Registry on AWS\u003c/h2\u003e\n\u003cp align=\"center\"\u003eA scalable agent registry for discovering and managing AI agents using the \u003ca href=\"https://a2a-protocol.org/latest/\"\u003eA2A (Agent-to-Agent) protocol\u003c/a\u003e with semantic search capabilities powered by Amazon Bedrock and S3 Vectors.\u003c/p\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/awslabs/a2a-agent-registry-on-aws\"\u003e\u003cimg alt=\"GitHub Repo\" src=\"https://img.shields.io/badge/GitHub-Repo-green.svg\" /\u003e\u003c/a\u003e\n  \u003cimg alt=\"Python 3.11+\" src=\"https://img.shields.io/badge/python-3.11+-blue.svg\" /\u003e\n  \u003cimg alt=\"Node.js 18+\" src=\"https://img.shields.io/badge/node.js-18+-green.svg\" /\u003e\n  \u003cimg alt=\"TypeScript\" src=\"https://img.shields.io/badge/TypeScript-CDK-blue.svg\" /\u003e\n  \u003cimg alt=\"React\" src=\"https://img.shields.io/badge/React-18-61dafb.svg\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/stars/awslabs/a2a-agent-registry-on-aws?style=social\" alt=\"GitHub stars\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/forks/awslabs/a2a-agent-registry-on-aws?style=social\" alt=\"GitHub forks\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/last-commit/awslabs/a2a-agent-registry-on-aws\" alt=\"Last Commit\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/issues/awslabs/a2a-agent-registry-on-aws\" alt=\"Issues\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/awslabs/a2a-agent-registry-on-aws\" alt=\"License\"\u003e\n\u003c/p\u003e\n\n## What is the A2A Agent Registry?\n\nThe A2A Agent Registry is a **centralized service for registering, discovering, and managing AI agents** in multi-agent systems. It stores [AgentCards](https://a2a-protocol.org/latest/specification/#441-agentcard) — the standard metadata format that describes an agent's identity, capabilities, and endpoint. It implements Google's [Agent-to-Agent (A2A) protocol](https://a2a-protocol.org/latest/) to enable seamless agent-to-agent communication and discovery.\n\nBuild your own **agent marketplace**, **agentic AI platform**, or **LLM agent orchestration layer** with:\n- **Semantic search** — Find agents using natural language queries (not just keyword matching)\n- **Skill-based filtering** — Query agents by capabilities using metadata filters\n- **Serverless architecture** — Pay only for what you use with AWS Lambda and S3 Vectors\n- **Python SDK** — Python client with retry logic, error handling, and IAM auth\n\nPerfect for teams building **multi-agent systems**, **AI agent orchestration**, **agentic workflows**, or **autonomous agent platforms**.\n\n## 🎯 Use Cases\n\n| Use Case | Description |\n|----------|-------------|\n| **Agent Marketplace** | Build a searchable catalog where developers register and discover AI agents |\n| **Multi-Agent Orchestration** | Enable agents to dynamically discover and communicate with other agents |\n| **Enterprise Agent Platform** | Centralized registry for managing internal AI agents across teams |\n| **Agentic Workflow Engine** | Route tasks to the most capable agent based on semantic matching |\n| **LLM Agent Discovery** | Help LLM-based agents find specialized tools and services at runtime |\n\n## 🔖 Features\n\n| Feature | Description |\n|---------|-------------|\n| 🔍 **Semantic Search** | Find agents using natural language queries powered by Amazon Bedrock Titan embeddings |\n| 🏷️ **Skill-Based Filtering** | Filter agents by specific skills using Amazon S3 Vectors metadata |\n| 📋 **A2A Protocol Compliant** | Full support for Agent-to-Agent protocol agent cards |\n| 🔐 **Secure by Default** | IAM authentication on all API endpoints |\n| 🐍 **Python SDK** | Client library with retry logic and error handling |\n| 🌐 **Web Interface** | React-based UI built with AWS Cloudscape Design System |\n| ☁️ **Serverless Architecture** | Fully managed with AWS Lambda, API Gateway, and S3 Vectors |\n| 💰 **Cost Effective** | Pay-per-use pricing with no idle costs |\n\n## 🎬 Web UI Demo\n\n![Web UI Demo](web-ui/web-ui.gif)\n\nThe demo showcases:\n- **Register new agent** — Add agents with their capabilities and skills\n- **See all agents** — Browse the complete list of registered agents\n- **Search with plain text** — Find agents using natural language queries\n- **Search by skill name** — Filter agents by specific skills\n\n## 🏗️ Architecture\n\n![Architecture](a2a-agent-registry-on-aws.jpg)\n\nWhen you deploy `AgentRegistryStack`, you get an out-of-the-box agent registry:\n\n| Component | Purpose |\n|-----------|---------|\n| **API Gateway** | RESTful API with IAM authentication for secure access |\n| **Lambda** | Serverless compute handling agent CRUD operations and search queries |\n| **S3 Vectors** | Vector storage for agent embeddings enabling semantic search |\n| **Amazon Bedrock** | Titan embeddings model for converting agent descriptions to vectors |\n\nThe **Python SDK** (`client/`) provides a client library with retry logic and IAM authentication.\n\nOptionally, deploy `AgentRegistryWebUI` for a React-based web interface with Cognito authentication — connect it to your SSO provider or invite users directly from the Cognito console using their email address.\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- AWS CLI configured with appropriate permissions\n- Node.js 18+\n- Python 3.11+\n- Docker (required by CDK to build Lambda and install dependencies)\n\n### Deploy the Agent Registry\n\n```bash\n# Build the Web UI first (required for deployment)\ncd web-ui\nnpm install\nnpm run build\n\n# Deploy the infrastructure\ncd ../infrastructure\nnpm install\ncdk deploy AgentRegistryStack\n```\n\n### Deploy Web UI (Optional)\n\n```bash\ncd infrastructure\ncdk deploy AgentRegistryWebUI\n```\n\nThe Web UI stack deploys:\n- S3 bucket for static hosting\n- CloudFront distribution\n- Cognito User Pool for authentication\n- Cognito Identity Pool for AWS credentials\n\n\u003e **Adding Users to the Web UI**\n\u003e\n\u003e Self-signup is disabled for security. To add users, use the `CognitoUserPoolConsoleUrl` output from the stack deployment — it links directly to the Cognito User Pool console where you can create users:\n\u003e 1. Click the URL from the stack output\n\u003e 2. Click \"Create user\"\n\u003e 3. Enter the user's email and set a temporary password\n\u003e 4. The user will receive an email to set their permanent password on first login\n\n\u003e **Important: CORS Configuration**\n\u003e\n\u003e By default, the API allows cross-origin requests from any origin (`*`). You can restrict CORS to a specific domain by passing the `corsOrigin` parameter.\n\u003e\n\u003e **To restrict CORS to a specific origin:**\n\u003e ```bash\n\u003e # Using a custom domain\n\u003e cdk deploy AgentRegistryStack -c corsOrigin=https://your-domain.com\n\u003e\n\u003e # Using the Web UI CloudFront domain (get from AgentRegistryWebUI stack output)\n\u003e cdk deploy AgentRegistryStack -c corsOrigin=https://d1234567890.cloudfront.net\n\u003e ```\n\u003e\n\u003e **To restrict CORS to only the Web UI:**\n\u003e 1. Deploy `AgentRegistryStack` first\n\u003e 2. Deploy `AgentRegistryWebUI` and note the `CloudFrontDomainName` output\n\u003e 3. Update `AgentRegistryStack` with `-c corsOrigin=\u003cCloudFrontDomainName\u003e` to restrict CORS to only the Web UI\n\n### Use the Python SDK\n\n```python\nfrom agent_registry_client import AgentRegistryClient\nfrom a2a.types import AgentCard\n\nclient = AgentRegistryClient(api_gateway_url=\"https://your-api.execute-api.region.amazonaws.com/prod\")\n\n# Register an agent\nagent_id = client.create_agent(AgentCard(\n    name=\"My Agent\",\n    description=\"An agent that helps with tasks\",\n    version=\"1.0.0\",\n    url=\"https://my-agent.example.com\"\n))\n\n# Search for agents using natural language\nresults = client.search_agents(query=\"help with financial analysis\")\n\n# Search by skills\nresults = client.search_agents(skills=[\"python\", \"data-analysis\"])\n\n# Combined semantic + skill search\nresults = client.search_agents(query=\"code review assistant\", skills=[\"python\"])\n```\n\n## 📚 Documentation\n\n| Document | Description |\n|----------|-------------|\n| [API Documentation](docs/api.md) | REST API endpoints, request/response formats, error codes |\n| [Local Development](docs/local-development.md) | Setup local environment, run tests, development workflow |\n| [Python SDK](client/README.md) | Client SDK installation, usage examples, error handling |\n\n## 💰 Cost Estimate\n\nThe serverless architecture means you only pay for what you use. For **1 million requests per month** (20% add agent card, 80% search agent cards) in us-east-1:\n\n| Service | Monthly Cost |\n|---------|-------------|\n| API Gateway | $1.00 |\n| Lambda | $6.45 |\n| Amazon Bedrock Titan Embeddings | $2.00 |\n| Amazon S3 Vectors | $13.20 |\n| **Total** | **$22.65** |\n\n## ❓ FAQ\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eHow does semantic search work?\u003c/strong\u003e\u003c/summary\u003e\n\nWhen you register an agent, the registry generates a 1024-dimensional vector embedding from the agent's name and description using Amazon Bedrock Titan Text Embeddings V2. When you search, your query is converted to an embedding, and S3 Vectors finds agents with the most similar embeddings using cosine distance. Results are ranked by similarity score (1 - distance).\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWhat's the difference between semantic search and skill filtering?\u003c/strong\u003e\u003c/summary\u003e\n\nSemantic search finds agents based on meaning — \"financial advisor\" would match an agent described as \"investment portfolio manager\". Skill filtering is exact matching on declared skills — searching for skill \"python\" only returns agents that explicitly list \"python\" as a skill. You can combine both for precise results.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCan I use this with agents built on LangChain, AutoGen, or CrewAI?\u003c/strong\u003e\u003c/summary\u003e\n\nYes! The registry is framework-agnostic. Any agent that can be described with a name, description, URL, and skills can be registered. The A2A protocol provides a standard way for agents to advertise their capabilities regardless of how they're implemented.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eHow do I authenticate API requests?\u003c/strong\u003e\u003c/summary\u003e\n\nAll API endpoints use AWS IAM authentication (Signature Version 4). The Python SDK handles this automatically using your configured AWS credentials. For the Web UI, Cognito provides user authentication and vends temporary AWS credentials.\n\u003c/details\u003e\n\n## 🤝 Contributing\n\nWe welcome contributions! Please see our [Contributing Guidelines](CONTRIBUTING.md) for details.\n\n- 🐛 [Report bugs](https://github.com/awslabs/a2a-agent-registry-on-aws/issues)\n- 💡 [Request features](https://github.com/awslabs/a2a-agent-registry-on-aws/issues)\n- 🔧 [Submit pull requests](https://github.com/awslabs/a2a-agent-registry-on-aws/pulls)\n\n## 📄 License\n\nThis project is licensed under the Apache 2.0 License. See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawslabs%2Fa2a-agent-registry-on-aws","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fawslabs%2Fa2a-agent-registry-on-aws","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawslabs%2Fa2a-agent-registry-on-aws/lists"}